library/jesd204: Updated jesd to support more lanes

Modified the maximum number of supported lanes up to 32 lanes for every JESD layer

Signed-off-by: Filip Gherman <Filip.Gherman@analog.com>
main
Filip Gherman 2022-03-01 16:47:44 +02:00 committed by Filip Gherman
parent d48b1bcdce
commit 929f80cd31
15 changed files with 7001 additions and 170 deletions

View File

@ -73,7 +73,7 @@ set group "JESD204 Deframer Configuration"
ad_ip_parameter NUM_LANES INTEGER 1 true [list \
DISPLAY_NAME "Number of Lanes (L)" \
DISPLAY_UNITS "lanes" \
ALLOWED_RANGES {1 2 3 4 8 16 32} \
ALLOWED_RANGES {1 2 3 4 8 16 24 32} \
GROUP $group \
]

View File

@ -78,7 +78,7 @@ adi_set_ports_dependency "adc_sync_manual_req_out" "EXT_SYNC == 1"
adi_set_ports_dependency "adc_sync_manual_req_in" "EXT_SYNC == 1"
foreach {p v} {
"NUM_LANES" "1 2 3 4 6 8 12 16" \
"NUM_LANES" "1 2 3 4 6 8 12 16 24 32" \
"NUM_CHANNELS" "1 2 4 6 8 16 32 64" \
"BITS_PER_SAMPLE" "8 12 16" \
"DMA_BITS_PER_SAMPLE" "8 12 16" \

View File

@ -103,7 +103,7 @@ ad_ip_parameter PART STRING "Generic" false [list \
ad_ip_parameter NUM_LANES INTEGER 1 true [list \
DISPLAY_NAME "Number of Lanes (L)" \
DISPLAY_UNITS "lanes" \
ALLOWED_RANGES {1 2 3 4 8 16} \
ALLOWED_RANGES {1 2 3 4 8 16 24 32} \
GROUP $group \
]

View File

@ -101,7 +101,7 @@ foreach p {DDS_CORDIC_DW DDS_CORDIC_PHASE_DW} {
}
foreach {p v} {
"NUM_LANES" "1 2 3 4 6 8 12 16" \
"NUM_LANES" "1 2 3 4 6 8 12 16 24 32" \
"NUM_CHANNELS" "1 2 4 6 8 16 32 64" \
"BITS_PER_SAMPLE" "8 12 16" \
"DMA_BITS_PER_SAMPLE" "8 12 16" \

View File

@ -78,7 +78,7 @@ set_parameter_property ID HDL_PARAMETER true
add_parameter NUM_LANES INTEGER 1
set_parameter_property NUM_LANES DISPLAY_NAME "Number of Lanes"
set_parameter_property NUM_LANES ALLOWED_RANGES 1:16
set_parameter_property NUM_LANES ALLOWED_RANGES 1:32
set_parameter_property NUM_LANES HDL_PARAMETER true
add_parameter NUM_LINKS INTEGER 1

View File

@ -76,7 +76,7 @@ set_parameter_property ID HDL_PARAMETER true
add_parameter NUM_LANES INTEGER 1
set_parameter_property NUM_LANES DISPLAY_NAME "Number of Lanes"
set_parameter_property NUM_LANES ALLOWED_RANGES 1:16
set_parameter_property NUM_LANES ALLOWED_RANGES 1:32
set_parameter_property NUM_LANES HDL_PARAMETER true
add_parameter NUM_LINKS INTEGER 1

View File

@ -81,7 +81,7 @@ ad_ip_files jesd204_rx [list \
add_parameter NUM_LANES INTEGER 1
set_parameter_property NUM_LANES DISPLAY_NAME "Number of Lanes"
set_parameter_property NUM_LANES ALLOWED_RANGES 1:16
set_parameter_property NUM_LANES ALLOWED_RANGES 1:32
set_parameter_property NUM_LANES HDL_PARAMETER true
add_parameter NUM_LINKS INTEGER 1

View File

@ -89,7 +89,7 @@ set_property description "ADI JESD204 Receive" [ipx::current_core]
# { "rx_data" "TDATA" } \
# }
adi_add_multi_bus 16 "rx_phy" "slave" \
adi_add_multi_bus 32 "rx_phy" "slave" \
"xilinx.com:display_jesd204:jesd204_rx_bus_rtl:1.0" \
"xilinx.com:display_jesd204:jesd204_rx_bus:1.0" \
[list \

View File

@ -75,7 +75,7 @@ ad_ip_files jesd204_tx [list \
add_parameter NUM_LANES INTEGER 1
set_parameter_property NUM_LANES DISPLAY_NAME "Number of Lanes"
set_parameter_property NUM_LANES ALLOWED_RANGES 1:16
set_parameter_property NUM_LANES ALLOWED_RANGES 1:32
set_parameter_property NUM_LANES HDL_PARAMETER true
add_parameter NUM_LINKS INTEGER 1

View File

@ -83,7 +83,7 @@ adi_add_bus "tx_data" "slave" \
{ "tx_data" "TDATA" } \
}
adi_add_multi_bus 16 "tx_phy" "master" \
adi_add_multi_bus 32 "tx_phy" "master" \
"xilinx.com:display_jesd204:jesd204_tx_bus_rtl:1.0" \
"xilinx.com:display_jesd204:jesd204_tx_bus:1.0" \
[list \

View File

@ -44,8 +44,8 @@
proc adi_axi_jesd204_tx_create {ip_name num_lanes {num_links 1} {link_mode 1}} {
if {$num_lanes < 1 || $num_lanes > 16} {
return -code 1 "ERROR: Invalid number of JESD204B lanes. (Supported range 1-16)"
if {$num_lanes < 1 || $num_lanes > 32} {
return -code 1 "ERROR: Invalid number of JESD204B lanes. (Supported range 1-32)"
}
if {$num_links < 1 || $num_links > 8} {
@ -122,8 +122,8 @@ proc adi_axi_jesd204_tx_create {ip_name num_lanes {num_links 1} {link_mode 1}} {
proc adi_axi_jesd204_rx_create {ip_name num_lanes {num_links 1} {link_mode 1}} {
if {$num_lanes < 1 || $num_lanes > 16} {
return -code 1 "ERROR: Invalid number of JESD204B lanes. (Supported range 1-16)"
if {$num_lanes < 1 || $num_lanes > 32} {
return -code 1 "ERROR: Invalid number of JESD204B lanes. (Supported range 1-32)"
}
if {$num_links < 1 || $num_links > 8} {
@ -215,8 +215,8 @@ proc adi_axi_jesd204_rx_create {ip_name num_lanes {num_links 1} {link_mode 1}} {
proc adi_tpl_jesd204_tx_create {ip_name num_of_lanes num_of_converters samples_per_frame sample_width {link_layer_bytes_per_beat 4} {dma_sample_width 16}} {
if {$num_of_lanes < 1 || $num_of_lanes > 16} {
return -code 1 "ERROR: Invalid number of JESD204B lanes. (Supported range 1-16)"
if {$num_of_lanes < 1 || $num_of_lanes > 32} {
return -code 1 "ERROR: Invalid number of JESD204B lanes. (Supported range 1-32)"
}
# F = (M * N * S) / (L * 8)
set bytes_per_frame [expr ($num_of_converters * $sample_width * $samples_per_frame) / ($num_of_lanes * 8)];
@ -344,8 +344,8 @@ proc adi_tpl_jesd204_tx_create {ip_name num_of_lanes num_of_converters samples_p
proc adi_tpl_jesd204_rx_create {ip_name num_of_lanes num_of_converters samples_per_frame sample_width {link_layer_bytes_per_beat 4} {dma_sample_width 16}} {
if {$num_of_lanes < 1 || $num_of_lanes > 16} {
return -code 1 "ERROR: Invalid number of JESD204B lanes. (Supported range 1-16)"
if {$num_of_lanes < 1 || $num_of_lanes > 32} {
return -code 1 "ERROR: Invalid number of JESD204B lanes. (Supported range 1-32)"
}
# F = (M * N * S) / (L * 8)
set bytes_per_frame [expr ($num_of_converters * $sample_width * $samples_per_frame) / ($num_of_lanes * 8)];

File diff suppressed because it is too large Load Diff

View File

@ -45,7 +45,7 @@ set_property master_address_space_ref m_axi \
[ipx::get_bus_interfaces m_axi \
-of_objects [ipx::current_core]]
for {set n 0} {$n < 16} {incr n} {
for {set n 0} {$n < 32} {incr n} {
if {($n%4) == 0} {
adi_if_infer_bus analog.com:interface:if_xcvr_cm master up_cm_${n} [list \
@ -258,6 +258,154 @@ set_property enablement_dependency \
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 15} \
[ipx::get_bus_interfaces up_ch_15 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 16))} \
[ipx::get_bus_interfaces up_es_16 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 16} \
[ipx::get_bus_interfaces up_ch_16 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.QPLL_ENABLE')) = 1) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 16))} \
[ipx::get_bus_interfaces up_cm_16 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 17))} \
[ipx::get_bus_interfaces up_es_17 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 17} \
[ipx::get_bus_interfaces up_ch_17 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 18))} \
[ipx::get_bus_interfaces up_es_18 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 18} \
[ipx::get_bus_interfaces up_ch_18 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 19))} \
[ipx::get_bus_interfaces up_es_19 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 19} \
[ipx::get_bus_interfaces up_ch_19 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 20))} \
[ipx::get_bus_interfaces up_es_20 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 20} \
[ipx::get_bus_interfaces up_ch_20 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.QPLL_ENABLE')) = 1) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 20))} \
[ipx::get_bus_interfaces up_cm_20 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 21))} \
[ipx::get_bus_interfaces up_es_21 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 21} \
[ipx::get_bus_interfaces up_ch_21 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 22))} \
[ipx::get_bus_interfaces up_es_22 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 22} \
[ipx::get_bus_interfaces up_ch_22 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 23))} \
[ipx::get_bus_interfaces up_es_23 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 23} \
[ipx::get_bus_interfaces up_ch_23 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 24))} \
[ipx::get_bus_interfaces up_es_24 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 24} \
[ipx::get_bus_interfaces up_ch_24 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.QPLL_ENABLE')) = 1) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 24))} \
[ipx::get_bus_interfaces up_cm_24 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 25))} \
[ipx::get_bus_interfaces up_es_25 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 25} \
[ipx::get_bus_interfaces up_ch_25 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 26))} \
[ipx::get_bus_interfaces up_es_26 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 26} \
[ipx::get_bus_interfaces up_ch_26 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 27))} \
[ipx::get_bus_interfaces up_es_27 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 27} \
[ipx::get_bus_interfaces up_ch_27 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 28))} \
[ipx::get_bus_interfaces up_es_28 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 28} \
[ipx::get_bus_interfaces up_ch_28 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.QPLL_ENABLE')) = 1) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 28))} \
[ipx::get_bus_interfaces up_cm_28 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 29))} \
[ipx::get_bus_interfaces up_es_29 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 29} \
[ipx::get_bus_interfaces up_ch_29 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 30))} \
[ipx::get_bus_interfaces up_es_30 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 30} \
[ipx::get_bus_interfaces up_ch_30 -of_objects [ipx::current_core]]
set_property enablement_dependency \
{((spirit:decode(id('MODELPARAM_VALUE.TX_OR_RX_N')) = 0) and \
(spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 31))} \
[ipx::get_bus_interfaces up_es_31 -of_objects [ipx::current_core]]
set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 31} \
[ipx::get_bus_interfaces up_ch_31 -of_objects [ipx::current_core]]
adi_add_auto_fpga_spec_params
ipx::create_xgui_files [ipx::current_core]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff