Skip to content

Commit 7f75cff

Browse files
projects/scripts/adi_board: Updated ad_cpu interconnect
- Added option to cascade interconnects in testbenches if 16 or more modules are connected to the CPU Signed-off-by: Istvan-Zsolt Szekely <istvan.szekely@analog.com>
1 parent 0c614ba commit 7f75cff

File tree

1 file changed

+41
-17
lines changed

1 file changed

+41
-17
lines changed

projects/scripts/adi_board.tcl

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package require math
88
## Global variables for interconnect interface indexing
99
#
1010
set sys_cpu_interconnect_index 0
11+
set sys_cpu_interconnect_instance 0
1112
set sys_hpc0_interconnect_index -1
1213
set sys_hpc1_interconnect_index -1
1314
set sys_hp0_interconnect_index -1
@@ -962,8 +963,25 @@ proc ad_cpu_interconnect {p_address p_name {p_intf_name {}}} {
962963

963964
global sys_zynq
964965
global sys_cpu_interconnect_index
966+
global sys_cpu_interconnect_instance
965967
global use_smartconnect
966968

969+
970+
971+
if {$sys_zynq == -1} {
972+
set axi_cpu_interconnect axi_cpu_interconnect_${sys_cpu_interconnect_instance}
973+
974+
if {$sys_cpu_interconnect_index == 15} {
975+
set_property CONFIG.NUM_MI [expr $sys_cpu_interconnect_index + 1] [get_bd_cells $axi_cpu_interconnect]
976+
set sys_cpu_interconnect_index 0
977+
978+
set sys_cpu_interconnect_instance [expr $sys_cpu_interconnect_instance + 1]
979+
set axi_cpu_interconnect axi_cpu_interconnect_${sys_cpu_interconnect_instance}
980+
}
981+
} else {
982+
set axi_cpu_interconnect axi_cpu_interconnect
983+
}
984+
967985
set i_str "M$sys_cpu_interconnect_index"
968986
if {$sys_cpu_interconnect_index < 10} {
969987
set i_str "M0$sys_cpu_interconnect_index"
@@ -972,37 +990,43 @@ proc ad_cpu_interconnect {p_address p_name {p_intf_name {}}} {
972990
if {$sys_cpu_interconnect_index == 0} {
973991

974992
if {$use_smartconnect == 1} {
975-
ad_ip_instance smartconnect axi_cpu_interconnect [ list \
993+
ad_ip_instance smartconnect $axi_cpu_interconnect [ list \
976994
NUM_MI 1 \
977995
NUM_SI 1 \
978996
]
979-
ad_connect sys_cpu_clk axi_cpu_interconnect/aclk
980-
ad_connect sys_cpu_resetn axi_cpu_interconnect/aresetn
997+
ad_connect sys_cpu_clk $axi_cpu_interconnect/aclk
998+
ad_connect sys_cpu_resetn $axi_cpu_interconnect/aresetn
981999
} else {
982-
ad_ip_instance axi_interconnect axi_cpu_interconnect
983-
ad_connect sys_cpu_clk axi_cpu_interconnect/ACLK
984-
ad_connect sys_cpu_clk axi_cpu_interconnect/S00_ACLK
985-
ad_connect sys_cpu_resetn axi_cpu_interconnect/ARESETN
986-
ad_connect sys_cpu_resetn axi_cpu_interconnect/S00_ARESETN
1000+
ad_ip_instance axi_interconnect $axi_cpu_interconnect
1001+
ad_connect sys_cpu_clk $axi_cpu_interconnect/ACLK
1002+
ad_connect sys_cpu_clk $axi_cpu_interconnect/S00_ACLK
1003+
ad_connect sys_cpu_resetn $axi_cpu_interconnect/ARESETN
1004+
ad_connect sys_cpu_resetn $axi_cpu_interconnect/S00_ARESETN
9871005
}
9881006

9891007
if {$sys_zynq == 3} {
9901008
ad_connect sys_cpu_clk sys_cips/m_axi_fpd_aclk
991-
ad_connect axi_cpu_interconnect/S00_AXI sys_cips/M_AXI_FPD
1009+
ad_connect $axi_cpu_interconnect/S00_AXI sys_cips/M_AXI_FPD
9921010
}
9931011
if {$sys_zynq == 2} {
9941012
ad_connect sys_cpu_clk sys_ps8/maxihpm0_lpd_aclk
995-
ad_connect axi_cpu_interconnect/S00_AXI sys_ps8/M_AXI_HPM0_LPD
1013+
ad_connect $axi_cpu_interconnect/S00_AXI sys_ps8/M_AXI_HPM0_LPD
9961014
}
9971015
if {$sys_zynq == 1} {
9981016
ad_connect sys_cpu_clk sys_ps7/M_AXI_GP0_ACLK
999-
ad_connect axi_cpu_interconnect/S00_AXI sys_ps7/M_AXI_GP0
1017+
ad_connect $axi_cpu_interconnect/S00_AXI sys_ps7/M_AXI_GP0
10001018
}
10011019
if {$sys_zynq == 0} {
1002-
ad_connect axi_cpu_interconnect/S00_AXI sys_mb/M_AXI_DP
1020+
ad_connect $axi_cpu_interconnect/S00_AXI sys_mb/M_AXI_DP
10031021
}
10041022
if {$sys_zynq == -1} {
1005-
ad_connect axi_cpu_interconnect/S00_AXI mng_axi_vip/M_AXI
1023+
if {$sys_cpu_interconnect_instance == 0} {
1024+
ad_connect $axi_cpu_interconnect/S00_AXI mng_axi_vip/M_AXI
1025+
} else {
1026+
set temp_sys_cpu_interconnect_instance [expr $sys_cpu_interconnect_instance - 1]
1027+
set temp_name axi_cpu_interconnect_${temp_sys_cpu_interconnect_instance}
1028+
ad_connect $axi_cpu_interconnect/S00_AXI $temp_name/M15_AXI
1029+
}
10061030
}
10071031
}
10081032

@@ -1105,19 +1129,19 @@ proc ad_cpu_interconnect {p_address p_name {p_intf_name {}}} {
11051129
}
11061130
}
11071131

1108-
set_property CONFIG.NUM_MI $sys_cpu_interconnect_index [get_bd_cells axi_cpu_interconnect]
1132+
set_property CONFIG.NUM_MI $sys_cpu_interconnect_index [get_bd_cells $axi_cpu_interconnect]
11091133

11101134
if {$use_smartconnect == 0} {
1111-
ad_connect sys_cpu_clk axi_cpu_interconnect/${i_str}_ACLK
1112-
ad_connect sys_cpu_resetn axi_cpu_interconnect/${i_str}_ARESETN
1135+
ad_connect sys_cpu_clk $axi_cpu_interconnect/${i_str}_ACLK
1136+
ad_connect sys_cpu_resetn $axi_cpu_interconnect/${i_str}_ARESETN
11131137
}
11141138
if {$p_intf_clock ne ""} {
11151139
ad_connect sys_cpu_clk ${p_intf_clock}
11161140
}
11171141
if {$p_intf_reset ne ""} {
11181142
ad_connect sys_cpu_resetn ${p_intf_reset}
11191143
}
1120-
ad_connect axi_cpu_interconnect/${i_str}_AXI ${p_intf}
1144+
ad_connect $axi_cpu_interconnect/${i_str}_AXI ${p_intf}
11211145

11221146
set p_seg [get_bd_addr_segs -of [get_bd_addr_spaces -of [get_bd_intf_pins -filter "NAME=~ *${p_intf_name}*" -of $p_hier_cell]]]
11231147
set p_index 0

0 commit comments

Comments
 (0)