Skip to content

Conversation

@cristianmihaipopa
Copy link
Collaborator

PR Description

Added support for Corundum Network Stack on ADRV9009ZU11EG. This feature is only available for ADRV9009ZU11EG/ADRV2CRR-FMC variant of the project. Currently, this Corundum configuration supports 10 Gbps on QSFP+ connection. In this PR, the main changes are:

  • In library/corundum added the ethernet core and configuration files for support on ADRV9009ZU11EG
  • In projects/adrv9009zu11eg/adrv2crr_fmc added all the files specific to the Corundum stack
  • Updated the documentation to reflect the changes as well (README + project documentation page)

In order to build the project and have the Corundum stack integrated, the user needs to use the new parameter called CORUNDUM and set it to 1 (default it's 0).

IMPORTANT: The Corundum stack was integrated according to our already present Corundum infrastructure and it's very similar to the other projects which support Corundum, besides one thing. In this project, the Corundum Reset Generator, it's not used, it's bypassed, the Corundum hierarchy is directly connected to the PS clock (of 250 MHz) and directly connected to the PS aresetn.

PR Type

  • Bug fix (change that fixes an issue)
  • New feature (change that adds new functionality)
  • Breaking change (has dependencies in other repos or will cause CI to fail)
  • Documentation

PR Checklist

  • I have followed the code style guidelines
  • I have performed a self-review of changes
  • I have compiled all hdl projects and libraries affected by this PR
  • I have tested in hardware affected projects, at least on relevant boards
  • I have commented my code, at least hard-to-understand parts
  • I have signed off all commits from this PR
  • I have updated the documentation (wiki pages, ReadMe files, Copyright etc)
  • I have not introduced new Warnings/Critical Warnings on compilation
  • I have added new hdl testbenches or updated existing ones

@cristianmihaipopa cristianmihaipopa changed the title Corundum support for ADRV9009ZU11EG Corundum 10 Gbps QSFP+ support for ADRV9009ZU11EG Dec 5, 2025
Copy link
Contributor

@IstvanZsSzekely IstvanZsSzekely left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please rebase the PR on the current main branch and solve the conflicts.

@cristianmihaipopa cristianmihaipopa force-pushed the adrv9009zu11eg_qsfp_10_pr branch from 45e30d5 to 43a3760 Compare December 9, 2025 11:52
- Initial Corundum support, use mode is QSFP+ 10Gbps variant,
for ADRV9009ZU11EG
- Added the configuration, scripts and ethernet architecure for
support on ADRV9009ZU11EG
- In corundum.tcl, changed the last if case to be more explicit,
for MicroBlaze case

Signed-off-by: Cristian Mihai Popa <[email protected]>
- Corundum support is ONLY available for the
ADRV9009ZU11EG/ADRV2CRR_FMC variant of the project
- Created a new constraints file, alongside with a new top
file, for routing the QSFP signals
- Added a separate bd.tcl script, to handle the necessary exports,
configurations and connections for Corundum features
- Added a new build mode for Corundum, by using the new parameter
called CORUNDUM (make CORUNDUM=1)
- All the Corundum dependecies are contraint by this variable; if
the variable it's not specied when using make, the default variant
of the project will be built
- IMPORTANT: this implementaion of the Corundum IP, bypasses the
Corundum Reset Generator (as seen in the other implementations),
connects the Corundum Hierarchy reset and clock directly to the PS

Signed-off-by: Cristian Mihai Popa <[email protected]>
@cristianmihaipopa cristianmihaipopa force-pushed the adrv9009zu11eg_qsfp_10_pr branch from 43a3760 to d622b03 Compare December 9, 2025 14:36
- Updated the projects/adrv9009zu11eg/adrv2crr_fmc/README.md
- Updated ADRV9009ZU11EG documentation

Signed-off-by: Cristian Mihai Popa <[email protected]>
@cristianmihaipopa cristianmihaipopa force-pushed the adrv9009zu11eg_qsfp_10_pr branch from d622b03 to 066733e Compare December 9, 2025 14:48
@cristianmihaipopa
Copy link
Collaborator Author

V1: Did the requested changes. The Guideline checker is failing because of the Copyright in /library/corundum/ethernet/adrv9009zu11eg/ethernet_adrv9009zu11eg.v, but it's similar to the other .v files from /library/corundum/ethernet.

Instance Address
============================================ ===========
corundum_hierarchy/corundum_core/s_axil_ctrl 0xA000_0000
============================================ ===========
Copy link
Contributor

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.

Instance name HDL Linux ZynqMP Actual ZynqMP
======================= === ============ =============
corundum_hierarcy/irq 4 93 125
======================= === ============ =============
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing axi_iic interrupt mapping.

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
location of the project, and build the project using the enviromental variable
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: environment variable.

`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
Copy link
Contributor

Choose a reason for hiding this comment

The 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.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please review the latest changes that were made for the K26 board script, as most of the changes are applicable here as well.


#### Corundum Network Stack support for QSFP+ 10 Gbps

This configuration ONLY, ADRV9009ZU11EG/ADRV2CRR-FMC, supports Corundum Network Stack for a QSFP+ ethernet connection, at a rate of 10 Gbps. All of the other parameters and configuration remain the same. To use this variant of the project and use the Corundum features, build the project using the following command:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corundum Network Stack with a QSFP+ ethernet connection

source ../common/adrv2crr_fmc_bd.tcl
source $ad_hdl_dir/projects/scripts/adi_pd.tcl


Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove extra line.

source $ad_hdl_dir/projects/scripts/adi_pd.tcl


if {[get_env_param CORUNDUM 0] == 1} {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use the $ad_project_params(CORUNDUM) == "1" style instead.

Comment on lines +23 to +43
# FW and board IDs
set fpga_id [expr 0x4738093]
set fw_id [expr 0x00000000]
set fw_ver $tag_ver
set board_vendor_id [expr 0x10ee]
set board_device_id [expr 0x9066]
set board_ver 1.0
set release_info [expr 0x00000000]

# General variables
set IRQ_SIZE 8
set PORTS_PER_IF "1"
set TX_QUEUE_INDEX_WIDTH "11"
set RX_QUEUE_INDEX_WIDTH "8"
set CQN_WIDTH [expr max($TX_QUEUE_INDEX_WIDTH, $RX_QUEUE_INDEX_WIDTH) + 1]
set TX_QUEUE_PIPELINE [expr 3 + max($TX_QUEUE_INDEX_WIDTH - 12, 0)]
set RX_QUEUE_PIPELINE [expr 3 + max($RX_QUEUE_INDEX_WIDTH - 12, 0)]
set TX_DESC_TABLE_SIZE "32"
set RX_DESC_TABLE_SIZE "32"
set TX_RAM_SIZE "32768"
set RX_RAM_SIZE "32768"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All of the variables are unused, except for IRQ_SIZE. Please remove the rest.

ad_ip_parameter sys_ps8 CONFIG.PSU__FPGA_PL1_ENABLE 1
ad_ip_parameter sys_ps8 CONFIG.PSU__CRL_APB__PL1_REF_CTRL__SRCSEL {IOPLL}
ad_ip_parameter sys_ps8 CONFIG.PSU__CRL_APB__PL1_REF_CTRL__FREQMHZ 200
ad_ip_parameter sys_ps8 CONFIG.PSU__CRL_APB__PL1_REF_CTRL__FREQMHZ 250
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this change ok for both build variants, with and without Corundum?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants