-
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?
Conversation
projects/adrv9009zu11eg/adrv2crr_fmc/system_constr_corundum.xdc
Outdated
Show resolved
Hide resolved
projects/adrv9009zu11eg/adrv2crr_fmc/system_constr_corundum.xdc
Outdated
Show resolved
Hide resolved
IstvanZsSzekely
left a comment
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.
Please rebase the PR on the current main branch and solve the conflicts.
45e30d5 to
43a3760
Compare
- 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 <cristianmihai.popa@analog.com>
- 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 <cristianmihai.popa@analog.com>
43a3760 to
d622b03
Compare
- Updated the projects/adrv9009zu11eg/adrv2crr_fmc/README.md - Updated ADRV9009ZU11EG documentation Signed-off-by: Cristian Mihai Popa <cristianmihai.popa@analog.com>
d622b03 to
066733e
Compare
|
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 | ||
| ============================================ =========== |
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.
| Instance name HDL Linux ZynqMP Actual ZynqMP | ||
| ======================= === ============ ============= | ||
| corundum_hierarcy/irq 4 93 125 | ||
| ======================= === ============ ============= |
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 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 |
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.
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 |
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.
Please specify the wiki page where the indicated patch application process is described.
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.
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: |
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.
Corundum Network Stack with a QSFP+ ethernet connection
| source ../common/adrv2crr_fmc_bd.tcl | ||
| source $ad_hdl_dir/projects/scripts/adi_pd.tcl | ||
|
|
||
|
|
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.
Remove extra line.
| source $ad_hdl_dir/projects/scripts/adi_pd.tcl | ||
|
|
||
|
|
||
| if {[get_env_param CORUNDUM 0] == 1} { |
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.
Please use the $ad_project_params(CORUNDUM) == "1" style instead.
| # 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" |
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.
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 |
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.
Is this change ok for both build variants, with and without Corundum?
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 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
PR Checklist