Corundum Ethernet Core

The Corundum Ethernet Core is used by the Corundum Network Stack. The Ethernet Core is specific to each FPGA board and encompasses the Ethernet physical layer and other auxiliary structures such as SPI and I2C that are required by the Corundum system. The configurations are based on Corundum NIC reference designs that were adapted to suit the ADI workflow.

Depending on the board for which the IP is built, different HDL component diagrams will be available.

Features

  • Supports 10/100 GbE implementations as follows: 100 GbE by leveraging on the Xilinx’s CMAC IP core (on the VCU118 evaluation kit) and 10 GbE by using Corundum’s support (on the K26-based AD-GMSL2ETH-SL evaluation kit).

Files

Depending on the board for which the IP is built, different source files will be available.

Configuration Parameters

Depending on the board for which the IP is built, different HDL parameters will be available.

Interface

Depending on the board for which the IP is built, different HDL interfaces and ports will be available.

Building

This IP uses Corundum NIC repository, which needs to be cloned alongside the HDL repository. Do a git checkout to the latest tested version (commit - 37f2607). When the 10G-based implementation (e.g., in case of K26) is used, apply the indicated patch.

~/workspace$
git clone https://github.com/ucsdsysnet/corundum.git
~/workspace$
cd corundum
~/workspace/corundum$
git checkout 37f2607
~/workspace/corundum$
git apply ../hdl/library/corundum/patch_axis_xgmii_rx_64.patch
~/workspace/corundum$
cd hdl/library/corundum/ethernet_core

An environment variable must be exported for this IP, so Vivado builds the appropriate configuration.

~/workspace/hdl/library/corundum/ethernet_core$
export BOARD=VCU118
~/workspace/hdl/library/corundum/ethernet_core$
make

Attention

If the Ethernet Core has to be used in a project that is designed for a different board than the one the IP was originally built for, then the BOARD variable must be overwritten and the IP rebuilt!

Hint

To check what board the IP was built for, check the content of the board.env file after the build.

~/workspace$
cd hdl/library/corundum/ethernet_core
~/workspace/hdl/library/corundum/ethernet_core$
cat board.env

Important

It is recommended to include the BOARD variable inside the project’s Makefile as it will check if the IP is built with the specified variable, and if not, it will build/rebuild it.

export BOARD := VCU118

Publications

The following papers pertain to the Corundum source code:

  • J- A. Forencich, A. C. Snoeren, G. Porter, G. Papen, Corundum: An Open-Source 100-Gbps NIC, in FCCM’20. (FCCM Paper, FCCM Presentation)

  • J- A. Forencich, System-Level Considerations for Optical Switching in Data Center Networks. (Thesis)

References