-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Corundum 10 Gbps QSFP+ support for ADRV9009ZU11EG #1971
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
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -49,6 +49,17 @@ Block design | |
| :align: center | ||
| :alt: ADRV9009ZU11EG block diagram | ||
|
|
||
| Block design - Corundum Network Interface Card integrated | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| This is available only if the project was build using the command | ||
| ``make CORUNDUM=1``. | ||
|
|
||
| .. image:: adrv9009_zu11eg_hdl_corundum.svg | ||
| :width: 800 | ||
| :align: center | ||
| :alt: ADRV9009ZU11EG block diagram Corundum N.I.C | ||
|
|
||
| Block diagram | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
|
|
@@ -168,9 +179,18 @@ axi_adrv9009_obs_jesd 0x84A7_0000 | |
| axi_adrv9009_rx_dma 0x9C42_0000 | ||
| axi_adrv9009_tx_dma 0x9C40_0000 | ||
| axi_adrv9009_obs_dma 0x9C44_0000 | ||
| axi_sysid_0 0x8500_0000 | ||
| axi_sysid_0 0x8500_0000 | ||
| ===================== =========== | ||
|
|
||
| In case of :adi:`ADRV2CRR-FMC`, additional interconnects may be present in | ||
| the system. | ||
|
|
||
| ============================================ =========== | ||
| Instance Address | ||
| ============================================ =========== | ||
| corundum_hierarchy/corundum_core/s_axil_ctrl 0xA000_0000 | ||
| ============================================ =========== | ||
|
|
||
| SPI connections | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
|
|
@@ -331,6 +351,14 @@ axi_adrv9009_fmc_tx_jesd 12 108 140 | |
| axi_adrv9009_fmc_rx_jesd 13 109 141 | ||
| ========================== === ============ ============= | ||
|
|
||
| In case of :adi:`ADRV2CRR-FMC`, additional interrupts may be present in the system. | ||
|
|
||
| ======================= === ============ ============= | ||
| Instance name HDL Linux ZynqMP Actual ZynqMP | ||
| ======================= === ============ ============= | ||
| corundum_hierarcy/irq 4 93 125 | ||
| ======================= === ============ ============= | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Missing axi_iic interrupt mapping. |
||
|
|
||
| Building the HDL project | ||
| ------------------------------------------------------------------------------- | ||
|
|
||
|
|
@@ -385,8 +413,44 @@ configure this project, depending on the carrier used. | |
| | RX_OS_JESD_S | 1 | 1 | | ||
| +-------------------+----------------------------------+-------------------+ | ||
|
|
||
| Build the project with Corundum Network Stack support for ADRV9009-ZU11EG/ADRV2CRR-FMC | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| For this configuration of the project only, the Corundum Network Stack can be | ||
| added. This configuration supports **10 Gbps** on the **QSFP+** connector. | ||
|
|
||
| `Corundum NIC <https://github.com/ucsdsysnet/corundum>`_ repository needs to | ||
| be cloned alongside HDL repository. Do a git checkout to the latest tested | ||
| version (commit - 37f2607). When the 10G-based implementation (e.g., in | ||
| this project) is used, apply the indicated patch. Then navigate back to the | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please specify the wiki page where the indicated patch application process is described. |
||
| location of the project, and build the project using the enviromental variable | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Typo: environment variable. |
||
| **CORUNDUM**, by setting it to 1 (default it's 0). | ||
|
|
||
| **Linux/Cygwin/WSL** | ||
|
|
||
| .. shell:: | ||
|
|
||
| $git clone https://github.com/ucsdsysnet/corundum.git | ||
| $cd corundum | ||
| $git checkout 37f2607 | ||
| $git apply ../hdl/library/corundum/patch_axis_xgmii_rx_64.patch | ||
| $cd ../hdl/projects/adrv9009_zu11eg/adrv2crr_fmc | ||
| $make CORUNDUM=1 | ||
|
|
||
| A more comprehensive build guide can be found in the :ref:`build_hdl` user guide. | ||
|
|
||
| .. 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 | ||
|
|
||
| Other considerations | ||
| ------------------------------------------------------------------------------- | ||
|
|
||
|
|
@@ -514,6 +578,12 @@ HDL related | |
| * - JESD204_TPL_DAC | ||
| - :git-hdl:`library/jesd204/ad_ip_jesd204_tpl_dac` | ||
| - :ref:`ad_ip_jesd204_tpl_dac` | ||
| * - CORUNDUM_CORE | ||
| - :git-hdl:`library/corundum/corundum_core` | ||
| - :ref:`corundum_core` | ||
| * - ETHERNET_CORE | ||
| - :git-hdl:`library/corundum/ethernet` | ||
| - :ref:`corundum_ethernet_core` | ||
|
|
||
| - :dokuwiki:`[Wiki] Generic JESD204B block designs <resources/fpga/docs/hdl/generic_jesd_bds>` | ||
| - :ref:`jesd204` | ||
|
|
@@ -526,6 +596,7 @@ Software related | |
| - :git-linux:`ADRV9009ZU11EG device tree <arch/arm64/boot/dts/xilinx/zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-jesd204-fsm.dts>` | ||
| - :git-linux:`ADRV9009ZU11EG + FMCOMMS8 device tree <arch/arm64/boot/dts/xilinx/zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-fmcomms8-jesd204-fsm.dts>` | ||
| - :git-linux:`ADRV9009ZU11EG + FMCXMWBR1 device tree <arch/arm64/boot/dts/xilinx/zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-jesd204-fsm-xmicrowave.dts>` | ||
| - :git-linux:`ADRV9009ZU11EG + ADRV2CRR-FMC CORUNDUM device tree <arch/arm64/boot/dts/xilinx/zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-jesd204-fsm-100-qsfp.dts>` | ||
| - :git-no-os:`ADRV9009ZU11EG NO-OS PROJECT <projects/adrv9009>` | ||
|
|
||
| .. include:: ../common/more_information.rst | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,55 @@ | ||
| LIBRARY_NAME := ethernet_adrv9009zu11eg | ||
|
|
||
| GENERIC_DEPS += ethernet_adrv9009zu11eg.v | ||
|
|
||
| XILINX_DEPS += ethernet_adrv9009zu11eg_ip.tcl | ||
|
|
||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/mqnic/KR260/fpga/rtl/sync_signal.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/common/rtl/eth_xcvr_phy_10g_gty_quad_wrapper.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/common/rtl/eth_xcvr_phy_10g_gty_wrapper.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/eth_phy_10g.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/eth_phy_10g_tx_if.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/eth_phy_10g_tx.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/eth_phy_10g_rx.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/eth_phy_10g_rx_frame_sync.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/eth_phy_10g_rx_if.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/eth_phy_10g_rx_ber_mon.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/eth_phy_10g_rx_watchdog.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/xgmii_baser_dec_64.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/xgmii_baser_enc_64.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/axis_xgmii_rx_32.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/axis_xgmii_tx_32.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/common/rtl/mqnic_port_map_phy_xgmii.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/lib/axis/rtl/sync_reset.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/common/rtl/rb_drp.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/eth_mac_10g.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/axis_xgmii_rx_64.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/axis_xgmii_tx_64.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/lfsr.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/mac_ctrl_rx.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/mac_ctrl_tx.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/mac_pause_ctrl_rx.v | ||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/lib/eth/rtl/mac_pause_ctrl_tx.v | ||
|
|
||
| EXTERNAL_DEPS += ../../../../../corundum/fpga/mqnic/ZCU102/fpga/ip/eth_xcvr_gth.tcl | ||
|
|
||
| XILINX_DEPS += ../../interfaces/if_ctrl_reg.xml | ||
| XILINX_DEPS += ../../interfaces/if_ctrl_reg_rtl.xml | ||
| XILINX_DEPS += ../../interfaces/if_ptp.xml | ||
| XILINX_DEPS += ../../interfaces/if_ptp_rtl.xml | ||
| XILINX_DEPS += ../../interfaces/if_flow_control_tx.xml | ||
| XILINX_DEPS += ../../interfaces/if_flow_control_tx_rtl.xml | ||
| XILINX_DEPS += ../../interfaces/if_flow_control_rx.xml | ||
| XILINX_DEPS += ../../interfaces/if_flow_control_rx_rtl.xml | ||
| XILINX_DEPS += ../../interfaces/if_ethernet_ptp.xml | ||
| XILINX_DEPS += ../../interfaces/if_ethernet_ptp_rtl.xml | ||
| XILINX_DEPS += ../../interfaces/if_axis_tx_ptp.xml | ||
| XILINX_DEPS += ../../interfaces/if_axis_tx_ptp_rtl.xml | ||
| XILINX_DEPS += ../../interfaces/if_qsfp.xml | ||
| XILINX_DEPS += ../../interfaces/if_qsfp_rtl.xml | ||
| XILINX_DEPS += ../../interfaces/if_i2c.xml | ||
| XILINX_DEPS += ../../interfaces/if_i2c_rtl.xml | ||
|
|
||
| XILINX_INTERFACE_DEPS += corundum/interfaces | ||
|
|
||
| include ../../../scripts/library.mk |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing axi_iic address mapping.