Skip to content

corundum_netstack: Add support for 10 GE implementation #1832

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 18 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions docs/library/corundum/corundum_core/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
.. _corundum_core:

Corundum Core
================================================================================

.. hdl-component-diagram::

The :git-hdl:`Corundum Core <library/corundum/corundum_core>` is common in all
projects and is used by the Corundum Network Stack. It repackages part of the
`Corundum NIC <https://github.com/ucsdsysnet/corundum>`__ as an IP Core to be
used with the ADI workflow.

Features
--------------------------------------------------------------------------------

* Supports ARM and Microblaze processors

Files
--------------------------------------------------------------------------------

.. list-table::
:header-rows: 1

* - Name
- Description
* - :git-hdl:`library/corundum/corundum_core/corundum.v`
- Verilog source for the Corundum Core top module.
* - :git-hdl:`library/corundum/corundum_core/corundum_ip.tcl`
- TCL script to generate the Vivado IP-integrator project.
* - :git-hdl:`library/corundum/corundum_core/mqnic_app_block.v`
- Verilog source for the Application Core that is found inside the Corundum
core.
* - :git-hdl:`library/corundum/corundum_core/mqnic_app_custom_params.vh`
- Verilog header file used to parameterize the Application Core.
* - :git-hdl:`library/corundum/corundum_core/mqnic_app_custom_ports.vh`
- Verilog header file used to create the ports and interfaces for the
Application Core.

Configuration Parameters
--------------------------------------------------------------------------------

.. hdl-parameters::

Interface
--------------------------------------------------------------------------------

.. hdl-interfaces::

Building
--------------------------------------------------------------------------------

This IP uses `Corundum NIC <https://github.com/ucsdsysnet/corundum>`_
repository, which needs to be cloned alongside the HDL repository.

.. shell::

~/workspace
$git clone https://github.com/ucsdsysnet/corundum.git
$cd hdl/library/corundum/corundum_core
$make

.. admonition:: 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`_)

.. _FCCM Paper: https://www.cse.ucsd.edu/~snoeren/papers/corundum-fccm20.pdf
.. _FCCM Presentation: https://www.fccm.org/past/2020/forums/topic/corundum-an-open-source-100-gbps-nic/
.. _Thesis: https://escholarship.org/uc/item/3mc9070t

References
--------------------------------------------------------------------------------

* HDL IP core at :git-hdl:`library/corundum/corundum_core`
110 changes: 110 additions & 0 deletions docs/library/corundum/ethernet/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
.. _corundum_ethernet_core:

Corundum Ethernet Core
================================================================================

.. toctree::
:hidden:

VCU118 <vcu118/index>

The :git-hdl:`Corundum Ethernet Core <library/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 <https://github.com/ucsdsysnet/corundum>`__ 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.

* :ref:`corundum_ethernet_core_vcu118`

Features
--------------------------------------------------------------------------------

* Supports 100G Ethernet-based systems that uses the CMAC core on the VCU118
board

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 <https://github.com/ucsdsysnet/corundum>`_
repository, which needs to be cloned alongside the HDL repository.

.. shell::

~/workspace
$git clone https://github.com/ucsdsysnet/corundum.git
$cd hdl/library/corundum/ethernet_core

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

.. shell::

~/workspace/hdl/library/corundum/ethernet_core
$export BOARD=VCU118
$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.

.. shell::

~/workspace
$cd 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.

.. shell::

export BOARD := VCU118

.. admonition:: 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`_)

.. _FCCM Paper: https://www.cse.ucsd.edu/~snoeren/papers/corundum-fccm20.pdf
.. _FCCM Presentation: https://www.fccm.org/past/2020/forums/topic/corundum-an-open-source-100-gbps-nic/
.. _Thesis: https://escholarship.org/uc/item/3mc9070t

References
--------------------------------------------------------------------------------

* HDL IP core at :git-hdl:`library/corundum/ethernet`
34 changes: 34 additions & 0 deletions docs/library/corundum/ethernet/vcu118/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
.. _corundum_ethernet_core_vcu118:

Corundum Ethernet Core for VCU118
================================================================================

.. hdl-component-diagram::

Files
--------------------------------------------------------------------------------

.. list-table::
:header-rows: 1

* - Name
- Description
* - :git-hdl:`library/corundum/ethernet_core/ethernet_core_vcu118.v`
- Verilog source for the Ethernet Core top module for the VCU118 board.
* - :git-hdl:`library/corundum/ethernet_core/eternet_ip.tcl`
- TCL script to generate the Vivado IP-integrator project.

Configuration Parameters
--------------------------------------------------------------------------------

.. hdl-parameters::

Interface
--------------------------------------------------------------------------------

.. hdl-interfaces::

References
--------------------------------------------------------------------------------

* HDL IP core at :git-hdl:`library/corundum/ethernet_core`
61 changes: 19 additions & 42 deletions docs/library/corundum/index.rst
Original file line number Diff line number Diff line change
@@ -1,53 +1,33 @@
.. _corundum:

Corundum
Corundum Network Stack
================================================================================

.. hdl-component-diagram::
.. toctree::
:hidden:

The :git-hdl:`Corundum <library/corundum>` IP core
repackages `Corundum NIC <https://github.com/corundum/corundum>`__ as an IP Core.
Corundum Core <corundum_core/index>
Corundum Ethernet Core <ethernet/index>

Features
--------------------------------------------------------------------------------

* AXI-based configuration
* Vivado compatible

Files
--------------------------------------------------------------------------------

.. list-table::
:header-rows: 1

* - Name
- Description
* - :git-hdl:`library/corundum/corundum.v`
- Verilog source for the Corundum top module.
* - :git-hdl:`library/corundum/corundum_ip.tcl`
- TCL script to generate the Vivado IP-integrator project.
The :git-hdl:`Corundum <library/corundum>` framework repackages
`Corundum NIC <https://github.com/ucsdsysnet/corundum>`__ into 2 separate IP
cores. These cores are the :ref:`corundum_core`, which is common in all projects
that use the Corundum Network Stack and the :ref:`corundum_ethernet_core`, which
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.

Configuration Parameters
Sub-modules
--------------------------------------------------------------------------------

.. hdl-parameters::
* :ref:`corundum_core`
* :ref:`corundum_ethernet_core`

Interface
Software support
--------------------------------------------------------------------------------

.. hdl-interfaces::

Building
--------------------------------------------------------------------------------

This project uses `Corundum NIC <https://github.com/corundum/corundum>`_
and it needs to be cloned alongside this repository.

.. code::

hdl/../> git clone https://github.com/corundum/corundum.git
hdl/../corundum/> git checkout ed4a26e2cbc0a429c45d5cd5ddf1177f86838914
hdl/library/corundum> make &
* :git-linux:`Linux Driver <staging/corundum:drivers/net/mqnic/mqnic_main.c>`:
Linux driver for the Corundum Network Stack.

.. admonition:: Publications

Expand All @@ -64,7 +44,4 @@ and it needs to be cloned alongside this repository.
References
--------------------------------------------------------------------------------

* HDL IP core at :git-hdl:`library/corundum`
* HDL project at :git-hdl:`projects/ad_gmsl2eth_sl`
* :ref:`ad_gmsl2eth_sl`
* :adi:`AD-GMSL2ETH-SL`
* HDL IP cores at :git-hdl:`library/corundum`
Loading
Loading