Skip to content

Commit 4d2d527

Browse files
projects/scripts/adi_board: Updated ad_cpu_interconnect
- Added option to cascade interconnects in if 16 or more modules are connected to the CPU - Added option to enable cascading, by default it is disabled Signed-off-by: Istvan-Zsolt Szekely <istvan.szekely@analog.com>
1 parent 4971995 commit 4d2d527

File tree

1 file changed

+58
-27
lines changed

1 file changed

+58
-27
lines changed

projects/scripts/adi_board.tcl

Lines changed: 58 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ package require math
77

88
## Global variables for interconnect interface indexing
99
#
10+
set sys_cpu_interconnect_instance 0
11+
set sys_cpu_interconnect_cascade 0
1012
set sys_hpc0_interconnect_index -1
1113
set sys_hpc1_interconnect_index -1
1214
set sys_hp0_interconnect_index -1
@@ -962,15 +964,38 @@ proc ad_mem_hpx_interconnect {p_sel p_clk p_name} {
962964
proc ad_hpmx_interconnect {p_sel p_address p_name {p_intf_name {}}} {
963965

964966
global sys_zynq
967+
global sys_cpu_interconnect_instance
968+
global sys_cpu_interconnect_cascade
965969
global use_smartconnect
966970

967-
set interconnect_name [format "axi_%s_interconnect" [string tolower $p_sel]]
971+
set interconnect_name_intermediate [format "axi_%s_interconnect" [string tolower $p_sel]]
968972

969-
if {[catch {
970-
set interconnect_index [get_property CONFIG.NUM_MI [get_bd_cells $interconnect_name]]
971-
} err]} {
972-
set interconnect_index 0
973+
if {$sys_cpu_interconnect_cascade == 1} {
974+
set interconnect_name ${interconnect_name_intermediate}_${sys_cpu_interconnect_instance}
975+
976+
if {[catch {
977+
set interconnect_index [get_property CONFIG.NUM_MI [get_bd_cells $interconnect_name]]
978+
} err]} {
979+
set interconnect_index 0
980+
}
981+
982+
if {$interconnect_index == 15} {
983+
set_property CONFIG.NUM_MI [expr $interconnect_index + 1] [get_bd_cells $interconnect_name]
984+
set interconnect_index 0
985+
986+
set sys_cpu_interconnect_instance [expr $sys_cpu_interconnect_instance + 1]
987+
set interconnect_name ${interconnect_name_intermediate}_${sys_cpu_interconnect_instance}
988+
}
989+
} else {
990+
set interconnect_name $interconnect_name_intermediate
991+
992+
if {[catch {
993+
set interconnect_index [get_property CONFIG.NUM_MI [get_bd_cells $interconnect_name]]
994+
} err]} {
995+
set interconnect_index 0
996+
}
973997
}
998+
974999
set i_str [format "M%02d" $interconnect_index]
9751000

9761001
if {$i_str eq "M00"} {
@@ -990,28 +1015,34 @@ proc ad_hpmx_interconnect {p_sel p_address p_name {p_intf_name {}}} {
9901015
ad_connect sys_cpu_resetn $interconnect_name/S00_ARESETN
9911016
}
9921017

993-
if {$sys_zynq == 3} {
994-
ad_connect sys_cpu_clk sys_cips/m_axi_fpd_aclk
995-
ad_connect $interconnect_name/S00_AXI sys_cips/M_AXI_FPD
996-
} elseif {($p_sel eq "HPM0_FPD") && ($sys_zynq == 2)} {
997-
ad_connect sys_cpu_clk sys_ps8/maxihpm0_fpd_aclk
998-
ad_connect $interconnect_name/S00_AXI sys_ps8/M_AXI_HPM0_FPD
999-
} elseif {($p_sel eq "HPM1_FPD") && ($sys_zynq == 2)} {
1000-
ad_connect sys_cpu_clk sys_ps8/maxihpm1_fpd_aclk
1001-
ad_connect $interconnect_name/S00_AXI sys_ps8/M_AXI_HPM1_FPD
1002-
} elseif {($p_sel eq "HPM0_LPD") && ($sys_zynq == 2)} {
1003-
ad_connect sys_cpu_clk sys_ps8/maxihpm0_lpd_aclk
1004-
ad_connect $interconnect_name/S00_AXI sys_ps8/M_AXI_HPM0_LPD
1005-
} elseif {($p_sel eq "GP0") && ($sys_zynq == 1)} {
1006-
ad_connect sys_cpu_clk sys_ps7/M_AXI_GP0_ACLK
1007-
ad_connect $interconnect_name/S00_AXI sys_ps7/M_AXI_GP0
1008-
} elseif {($p_sel eq "GP1") && ($sys_zynq == 1)} {
1009-
ad_connect sys_cpu_clk sys_ps7/M_AXI_GP1_ACLK
1010-
ad_connect $interconnect_name/S00_AXI sys_ps7/M_AXI_GP1
1011-
} elseif {$sys_zynq == 0} {
1012-
ad_connect $interconnect_name/S00_AXI sys_mb/M_AXI_DP
1013-
} elseif {$sys_zynq == -1} {
1014-
ad_connect $interconnect_name/S00_AXI mng_axi_vip/M_AXI
1018+
if {$sys_cpu_interconnect_instance == 0} {
1019+
if {$sys_zynq == 3} {
1020+
ad_connect sys_cpu_clk sys_cips/m_axi_fpd_aclk
1021+
ad_connect $interconnect_name/S00_AXI sys_cips/M_AXI_FPD
1022+
} elseif {($p_sel eq "HPM0_FPD") && ($sys_zynq == 2)} {
1023+
ad_connect sys_cpu_clk sys_ps8/maxihpm0_fpd_aclk
1024+
ad_connect $interconnect_name/S00_AXI sys_ps8/M_AXI_HPM0_FPD
1025+
} elseif {($p_sel eq "HPM1_FPD") && ($sys_zynq == 2)} {
1026+
ad_connect sys_cpu_clk sys_ps8/maxihpm1_fpd_aclk
1027+
ad_connect $interconnect_name/S00_AXI sys_ps8/M_AXI_HPM1_FPD
1028+
} elseif {($p_sel eq "HPM0_LPD") && ($sys_zynq == 2)} {
1029+
ad_connect sys_cpu_clk sys_ps8/maxihpm0_lpd_aclk
1030+
ad_connect $interconnect_name/S00_AXI sys_ps8/M_AXI_HPM0_LPD
1031+
} elseif {($p_sel eq "GP0") && ($sys_zynq == 1)} {
1032+
ad_connect sys_cpu_clk sys_ps7/M_AXI_GP0_ACLK
1033+
ad_connect $interconnect_name/S00_AXI sys_ps7/M_AXI_GP0
1034+
} elseif {($p_sel eq "GP1") && ($sys_zynq == 1)} {
1035+
ad_connect sys_cpu_clk sys_ps7/M_AXI_GP1_ACLK
1036+
ad_connect $interconnect_name/S00_AXI sys_ps7/M_AXI_GP1
1037+
} elseif {$sys_zynq == 0} {
1038+
ad_connect $interconnect_name/S00_AXI sys_mb/M_AXI_DP
1039+
} elseif {$sys_zynq == -1} {
1040+
ad_connect $interconnect_name/S00_AXI mng_axi_vip/M_AXI
1041+
}
1042+
} else {
1043+
set temp_sys_cpu_interconnect_instance [expr $sys_cpu_interconnect_instance - 1]
1044+
set temp_name ${interconnect_name_intermediate}_${temp_sys_cpu_interconnect_instance}
1045+
ad_connect $interconnect_name/S00_AXI $temp_name/M15_AXI
10151046
}
10161047
}
10171048

0 commit comments

Comments
 (0)