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
parent
d48b1bcdce
commit
929f80cd31
|
@ -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 \
|
||||
]
|
||||
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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 \
|
||||
]
|
||||
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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
|
@ -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
Loading…
Reference in New Issue