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
HDL IP core at library/corundum/ethernet