From 4c1bf3ed8231f2c626a92da367253b1a9c9cc543 Mon Sep 17 00:00:00 2001 From: caosjr Date: Mon, 10 Nov 2025 07:11:38 -0300 Subject: [PATCH 1/4] AD4630_FMC: update Updated testbench to support the logic around NUM_OF_CHANNEL. Also had to modify the tcl scripts. Signed-off-by: Carlos Souza --- .../cfgs/cfg_ch1_cm0_cz1_sdi1_ddr0_nr1.tcl | 14 +++++++ .../cfgs/cfg_ch1_cm0_cz1_sdi2_ddr0_nr0.tcl | 14 +++++++ .../cfgs/cfg_ch1_cm0_cz1_sdi4_ddr0_nr0.tcl | 14 +++++++ .../cfgs/cfg_ch1_cm1_cz2_sdi1_ddr0_nr1.tcl | 14 +++++++ .../cfgs/cfg_ch1_cm1_cz2_sdi2_ddr0_nr0.tcl | 14 +++++++ .../cfgs/cfg_ch1_cm1_cz2_sdi2_ddr1_nr0.tcl | 14 +++++++ .../cfgs/cfg_ch1_cm1_cz2_sdi4_ddr0_nr0.tcl | 14 +++++++ .../cfgs/cfg_ch1_cm1_cz2_sdi4_ddr1_nr0.tcl | 14 +++++++ .../cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr0.tcl | 15 +++++++ .../cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr1.tcl | 17 ++++++++ .../cfgs/cfg_ch2_cm0_cz1_sdi2_ddr0_nr0.tcl | 15 +++++++ .../cfgs/cfg_ch2_cm0_cz1_sdi4_ddr0_nr0.tcl | 15 +++++++ .../cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr0.tcl | 15 +++++++ .../cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr1.tcl | 15 +++++++ .../cfgs/cfg_ch2_cm1_cz2_sdi2_ddr0_nr0.tcl | 15 +++++++ .../cfgs/cfg_ch2_cm1_cz2_sdi2_ddr1_nr0.tcl | 15 +++++++ .../cfgs/cfg_ch2_cm1_cz2_sdi4_ddr0_nr0.tcl | 15 +++++++ .../cfgs/cfg_ch2_cm1_cz2_sdi4_ddr1_nr0.tcl | 15 +++++++ .../ad463x/cfgs/cfg_cm0_sdi1_cz1_ddr0_nr1.tcl | 8 ---- .../ad463x/cfgs/cfg_cm0_sdi2_cz1_ddr0_nr0.tcl | 8 ---- .../ad463x/cfgs/cfg_cm0_sdi2_cz1_ddr0_nr1.tcl | 8 ---- .../ad463x/cfgs/cfg_cm0_sdi2_cz2_ddr0_nr0.tcl | 8 ---- .../ad463x/cfgs/cfg_cm0_sdi4_cz2_ddr0_nr0.tcl | 8 ---- .../ad463x/cfgs/cfg_cm0_sdi8_cz2_ddr0_nr0.tcl | 8 ---- .../ad463x/cfgs/cfg_cm1_sdi1_cz2_ddr0_nr0.tcl | 8 ---- .../ad463x/cfgs/cfg_cm1_sdi2_cz2_ddr0_nr0.tcl | 8 ---- .../ad463x/cfgs/cfg_cm1_sdi2_cz2_ddr1_nr0.tcl | 8 ---- .../ad463x/cfgs/cfg_cm1_sdi4_cz2_ddr0_nr0.tcl | 8 ---- .../ad463x/cfgs/cfg_cm1_sdi4_cz2_ddr1_nr0.tcl | 8 ---- .../ad463x/cfgs/cfg_cm1_sdi8_cz2_ddr0_nr0.tcl | 8 ---- .../ad463x/cfgs/cfg_cm1_sdi8_cz2_ddr1_nr0.tcl | 8 ---- testbenches/project/ad463x/system_tb.sv | 2 +- .../project/ad463x/tests/test_program.sv | 42 ++++++++++++------- 33 files changed, 293 insertions(+), 119 deletions(-) create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi1_ddr0_nr1.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi2_ddr0_nr0.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi4_ddr0_nr0.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi1_ddr0_nr1.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr0_nr0.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr1_nr0.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr0_nr0.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr1_nr0.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr0.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr1.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi2_ddr0_nr0.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi4_ddr0_nr0.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr0.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr1.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr0_nr0.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr1_nr0.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr0_nr0.tcl create mode 100644 testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr1_nr0.tcl delete mode 100644 testbenches/project/ad463x/cfgs/cfg_cm0_sdi1_cz1_ddr0_nr1.tcl delete mode 100644 testbenches/project/ad463x/cfgs/cfg_cm0_sdi2_cz1_ddr0_nr0.tcl delete mode 100644 testbenches/project/ad463x/cfgs/cfg_cm0_sdi2_cz1_ddr0_nr1.tcl delete mode 100644 testbenches/project/ad463x/cfgs/cfg_cm0_sdi2_cz2_ddr0_nr0.tcl delete mode 100644 testbenches/project/ad463x/cfgs/cfg_cm0_sdi4_cz2_ddr0_nr0.tcl delete mode 100644 testbenches/project/ad463x/cfgs/cfg_cm0_sdi8_cz2_ddr0_nr0.tcl delete mode 100644 testbenches/project/ad463x/cfgs/cfg_cm1_sdi1_cz2_ddr0_nr0.tcl delete mode 100644 testbenches/project/ad463x/cfgs/cfg_cm1_sdi2_cz2_ddr0_nr0.tcl delete mode 100644 testbenches/project/ad463x/cfgs/cfg_cm1_sdi2_cz2_ddr1_nr0.tcl delete mode 100644 testbenches/project/ad463x/cfgs/cfg_cm1_sdi4_cz2_ddr0_nr0.tcl delete mode 100644 testbenches/project/ad463x/cfgs/cfg_cm1_sdi4_cz2_ddr1_nr0.tcl delete mode 100644 testbenches/project/ad463x/cfgs/cfg_cm1_sdi8_cz2_ddr0_nr0.tcl delete mode 100644 testbenches/project/ad463x/cfgs/cfg_cm1_sdi8_cz2_ddr1_nr0.tcl diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi1_ddr0_nr1.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi1_ddr0_nr1.tcl new file mode 100644 index 000000000..eb6948031 --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi1_ddr0_nr1.tcl @@ -0,0 +1,14 @@ +global ad_project_params + +set ad_project_params(NUM_OF_CHANNEL) 1 +set ad_project_params(CLK_MODE) 0 +set ad_project_params(CAPTURE_ZONE) 1 +set ad_project_params(NUM_OF_SDI) 1 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 1 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi2_ddr0_nr0.tcl new file mode 100644 index 000000000..07042017f --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi2_ddr0_nr0.tcl @@ -0,0 +1,14 @@ +global ad_project_params + +set ad_project_params(NUM_OF_CHANNEL) 1 +set ad_project_params(CLK_MODE) 0 +set ad_project_params(CAPTURE_ZONE) 1 +set ad_project_params(NUM_OF_SDI) 2 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi4_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi4_ddr0_nr0.tcl new file mode 100644 index 000000000..8c73a3a26 --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi4_ddr0_nr0.tcl @@ -0,0 +1,14 @@ +global ad_project_params + +set ad_project_params(NUM_OF_CHANNEL) 1 +set ad_project_params(CLK_MODE) 0 +set ad_project_params(CAPTURE_ZONE) 1 +set ad_project_params(NUM_OF_SDI) 4 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi1_ddr0_nr1.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi1_ddr0_nr1.tcl new file mode 100644 index 000000000..cd324694c --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi1_ddr0_nr1.tcl @@ -0,0 +1,14 @@ +global ad_project_params + +set ad_project_params(NUM_OF_CHANNEL) 1 +set ad_project_params(CLK_MODE) 1 +set ad_project_params(CAPTURE_ZONE) 2 +set ad_project_params(NUM_OF_SDI) 1 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 1 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr0_nr0.tcl new file mode 100644 index 000000000..5aa7828c0 --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr0_nr0.tcl @@ -0,0 +1,14 @@ +global ad_project_params + +set ad_project_params(NUM_OF_CHANNEL) 1 +set ad_project_params(CLK_MODE) 1 +set ad_project_params(CAPTURE_ZONE) 2 +set ad_project_params(NUM_OF_SDI) 2 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr1_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr1_nr0.tcl new file mode 100644 index 000000000..0cef995b4 --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr1_nr0.tcl @@ -0,0 +1,14 @@ +global ad_project_params + +set ad_project_params(NUM_OF_CHANNEL) 1 +set ad_project_params(CLK_MODE) 1 +set ad_project_params(CAPTURE_ZONE) 2 +set ad_project_params(NUM_OF_SDI) 2 +set ad_project_params(DDR_EN) 1 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr0_nr0.tcl new file mode 100644 index 000000000..fd0c1192f --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr0_nr0.tcl @@ -0,0 +1,14 @@ +global ad_project_params + +set ad_project_params(NUM_OF_CHANNEL) 1 +set ad_project_params(CLK_MODE) 1 +set ad_project_params(CAPTURE_ZONE) 2 +set ad_project_params(NUM_OF_SDI) 4 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr1_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr1_nr0.tcl new file mode 100644 index 000000000..f9a6c4b0a --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr1_nr0.tcl @@ -0,0 +1,14 @@ +global ad_project_params + +set ad_project_params(NUM_OF_CHANNEL) 1 +set ad_project_params(CLK_MODE) 1 +set ad_project_params(CAPTURE_ZONE) 2 +set ad_project_params(NUM_OF_SDI) 4 +set ad_project_params(DDR_EN) 1 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr0.tcl new file mode 100644 index 000000000..592ba4c7b --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr0.tcl @@ -0,0 +1,15 @@ +global ad_project_params + +#1 lane for both channels +set ad_project_params(NUM_OF_CHANNEL) 2 +set ad_project_params(CLK_MODE) 0 +set ad_project_params(CAPTURE_ZONE) 1 +set ad_project_params(NUM_OF_SDI) 1 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr1.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr1.tcl new file mode 100644 index 000000000..d1de6c92e --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr1.tcl @@ -0,0 +1,17 @@ +global ad_project_params + +#1 lane for each channels +set ad_project_params(NUM_OF_CHANNEL) 2 +set ad_project_params(CLK_MODE) 0 +set ad_project_params(CAPTURE_ZONE) 1 +set ad_project_params(NUM_OF_SDI) 1 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 1 + + + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} \ No newline at end of file diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi2_ddr0_nr0.tcl new file mode 100644 index 000000000..5a551c16f --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi2_ddr0_nr0.tcl @@ -0,0 +1,15 @@ +global ad_project_params + +#1 lane for both channels +set ad_project_params(NUM_OF_CHANNEL) 2 +set ad_project_params(CLK_MODE) 0 +set ad_project_params(CAPTURE_ZONE) 1 +set ad_project_params(NUM_OF_SDI) 2 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi4_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi4_ddr0_nr0.tcl new file mode 100644 index 000000000..cec0b7a6e --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi4_ddr0_nr0.tcl @@ -0,0 +1,15 @@ +global ad_project_params + +#1 lane for both channels +set ad_project_params(NUM_OF_CHANNEL) 2 +set ad_project_params(CLK_MODE) 0 +set ad_project_params(CAPTURE_ZONE) 1 +set ad_project_params(NUM_OF_SDI) 4 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr0.tcl new file mode 100644 index 000000000..9a3842889 --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr0.tcl @@ -0,0 +1,15 @@ +global ad_project_params + +#1 lane for both channels +set ad_project_params(NUM_OF_CHANNEL) 2 +set ad_project_params(CLK_MODE) 1 +set ad_project_params(CAPTURE_ZONE) 2 +set ad_project_params(NUM_OF_SDI) 1 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr1.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr1.tcl new file mode 100644 index 000000000..1a08aaeeb --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr1.tcl @@ -0,0 +1,15 @@ +global ad_project_params + +#1 lane for both channels +set ad_project_params(NUM_OF_CHANNEL) 2 +set ad_project_params(CLK_MODE) 1 +set ad_project_params(CAPTURE_ZONE) 2 +set ad_project_params(NUM_OF_SDI) 1 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 1 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr0_nr0.tcl new file mode 100644 index 000000000..e6f421e53 --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr0_nr0.tcl @@ -0,0 +1,15 @@ +global ad_project_params + +#1 lane for both channels +set ad_project_params(NUM_OF_CHANNEL) 2 +set ad_project_params(CLK_MODE) 1 +set ad_project_params(CAPTURE_ZONE) 2 +set ad_project_params(NUM_OF_SDI) 2 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr1_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr1_nr0.tcl new file mode 100644 index 000000000..1ac919669 --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr1_nr0.tcl @@ -0,0 +1,15 @@ +global ad_project_params + +#1 lane for both channels +set ad_project_params(NUM_OF_CHANNEL) 2 +set ad_project_params(CLK_MODE) 1 +set ad_project_params(CAPTURE_ZONE) 2 +set ad_project_params(NUM_OF_SDI) 2 +set ad_project_params(DDR_EN) 1 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr0_nr0.tcl new file mode 100644 index 000000000..8860510bf --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr0_nr0.tcl @@ -0,0 +1,15 @@ +global ad_project_params + +#1 lane for both channels +set ad_project_params(NUM_OF_CHANNEL) 2 +set ad_project_params(CLK_MODE) 1 +set ad_project_params(CAPTURE_ZONE) 2 +set ad_project_params(NUM_OF_SDI) 4 +set ad_project_params(DDR_EN) 0 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr1_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr1_nr0.tcl new file mode 100644 index 000000000..ff950940c --- /dev/null +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr1_nr0.tcl @@ -0,0 +1,15 @@ +global ad_project_params + +#1 lane for both channels +set ad_project_params(NUM_OF_CHANNEL) 2 +set ad_project_params(CLK_MODE) 1 +set ad_project_params(CAPTURE_ZONE) 2 +set ad_project_params(NUM_OF_SDI) 4 +set ad_project_params(DDR_EN) 1 +set ad_project_params(NO_REORDER) 0 + +if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { + set ad_project_params(NUM_OF_SDI_TB) 1 +} else { + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] +} diff --git a/testbenches/project/ad463x/cfgs/cfg_cm0_sdi1_cz1_ddr0_nr1.tcl b/testbenches/project/ad463x/cfgs/cfg_cm0_sdi1_cz1_ddr0_nr1.tcl deleted file mode 100644 index 739b3472b..000000000 --- a/testbenches/project/ad463x/cfgs/cfg_cm0_sdi1_cz1_ddr0_nr1.tcl +++ /dev/null @@ -1,8 +0,0 @@ -global ad_project_params - -set ad_project_params(CLK_MODE) 0 -set ad_project_params(NUM_OF_SDI) 1 -set ad_project_params(CAPTURE_ZONE) 1 -set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 1 - diff --git a/testbenches/project/ad463x/cfgs/cfg_cm0_sdi2_cz1_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_cm0_sdi2_cz1_ddr0_nr0.tcl deleted file mode 100644 index 8067a59ac..000000000 --- a/testbenches/project/ad463x/cfgs/cfg_cm0_sdi2_cz1_ddr0_nr0.tcl +++ /dev/null @@ -1,8 +0,0 @@ -global ad_project_params - -set ad_project_params(CLK_MODE) 0 -set ad_project_params(NUM_OF_SDI) 2 -set ad_project_params(CAPTURE_ZONE) 1 -set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 - diff --git a/testbenches/project/ad463x/cfgs/cfg_cm0_sdi2_cz1_ddr0_nr1.tcl b/testbenches/project/ad463x/cfgs/cfg_cm0_sdi2_cz1_ddr0_nr1.tcl deleted file mode 100644 index bae0b301d..000000000 --- a/testbenches/project/ad463x/cfgs/cfg_cm0_sdi2_cz1_ddr0_nr1.tcl +++ /dev/null @@ -1,8 +0,0 @@ -global ad_project_params - -set ad_project_params(CLK_MODE) 0 -set ad_project_params(NUM_OF_SDI) 2 -set ad_project_params(CAPTURE_ZONE) 1 -set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 1 - diff --git a/testbenches/project/ad463x/cfgs/cfg_cm0_sdi2_cz2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_cm0_sdi2_cz2_ddr0_nr0.tcl deleted file mode 100644 index 473cadd79..000000000 --- a/testbenches/project/ad463x/cfgs/cfg_cm0_sdi2_cz2_ddr0_nr0.tcl +++ /dev/null @@ -1,8 +0,0 @@ -global ad_project_params - -set ad_project_params(CLK_MODE) 0 -set ad_project_params(NUM_OF_SDI) 2 -set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 - diff --git a/testbenches/project/ad463x/cfgs/cfg_cm0_sdi4_cz2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_cm0_sdi4_cz2_ddr0_nr0.tcl deleted file mode 100644 index 0254fa61d..000000000 --- a/testbenches/project/ad463x/cfgs/cfg_cm0_sdi4_cz2_ddr0_nr0.tcl +++ /dev/null @@ -1,8 +0,0 @@ -global ad_project_params - -set ad_project_params(CLK_MODE) 0 -set ad_project_params(NUM_OF_SDI) 4 -set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 - diff --git a/testbenches/project/ad463x/cfgs/cfg_cm0_sdi8_cz2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_cm0_sdi8_cz2_ddr0_nr0.tcl deleted file mode 100644 index 0f7080cae..000000000 --- a/testbenches/project/ad463x/cfgs/cfg_cm0_sdi8_cz2_ddr0_nr0.tcl +++ /dev/null @@ -1,8 +0,0 @@ -global ad_project_params - -set ad_project_params(CLK_MODE) 0 -set ad_project_params(NUM_OF_SDI) 8 -set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 - diff --git a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi1_cz2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_cm1_sdi1_cz2_ddr0_nr0.tcl deleted file mode 100644 index 0fa1d0d02..000000000 --- a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi1_cz2_ddr0_nr0.tcl +++ /dev/null @@ -1,8 +0,0 @@ -global ad_project_params - -set ad_project_params(CLK_MODE) 1 -set ad_project_params(NUM_OF_SDI) 1 -set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 - diff --git a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi2_cz2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_cm1_sdi2_cz2_ddr0_nr0.tcl deleted file mode 100644 index f5ebff6e8..000000000 --- a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi2_cz2_ddr0_nr0.tcl +++ /dev/null @@ -1,8 +0,0 @@ -global ad_project_params - -set ad_project_params(CLK_MODE) 1 -set ad_project_params(NUM_OF_SDI) 2 -set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 - diff --git a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi2_cz2_ddr1_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_cm1_sdi2_cz2_ddr1_nr0.tcl deleted file mode 100644 index 88876567b..000000000 --- a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi2_cz2_ddr1_nr0.tcl +++ /dev/null @@ -1,8 +0,0 @@ -global ad_project_params - -set ad_project_params(CLK_MODE) 1 -set ad_project_params(NUM_OF_SDI) 2 -set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(DDR_EN) 1 -set ad_project_params(NO_REORDER) 0 - diff --git a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi4_cz2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_cm1_sdi4_cz2_ddr0_nr0.tcl deleted file mode 100644 index b95b1657d..000000000 --- a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi4_cz2_ddr0_nr0.tcl +++ /dev/null @@ -1,8 +0,0 @@ -global ad_project_params - -set ad_project_params(CLK_MODE) 1 -set ad_project_params(NUM_OF_SDI) 4 -set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 - diff --git a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi4_cz2_ddr1_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_cm1_sdi4_cz2_ddr1_nr0.tcl deleted file mode 100644 index b0db4b53e..000000000 --- a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi4_cz2_ddr1_nr0.tcl +++ /dev/null @@ -1,8 +0,0 @@ -global ad_project_params - -set ad_project_params(CLK_MODE) 1 -set ad_project_params(NUM_OF_SDI) 4 -set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(DDR_EN) 1 -set ad_project_params(NO_REORDER) 0 - diff --git a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi8_cz2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_cm1_sdi8_cz2_ddr0_nr0.tcl deleted file mode 100644 index 2ff6ae8a6..000000000 --- a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi8_cz2_ddr0_nr0.tcl +++ /dev/null @@ -1,8 +0,0 @@ -global ad_project_params - -set ad_project_params(CLK_MODE) 1 -set ad_project_params(NUM_OF_SDI) 8 -set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 - diff --git a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi8_cz2_ddr1_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_cm1_sdi8_cz2_ddr1_nr0.tcl deleted file mode 100644 index 43a7a4727..000000000 --- a/testbenches/project/ad463x/cfgs/cfg_cm1_sdi8_cz2_ddr1_nr0.tcl +++ /dev/null @@ -1,8 +0,0 @@ -global ad_project_params - -set ad_project_params(CLK_MODE) 1 -set ad_project_params(NUM_OF_SDI) 8 -set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(DDR_EN) 1 -set ad_project_params(NO_REORDER) 0 - diff --git a/testbenches/project/ad463x/system_tb.sv b/testbenches/project/ad463x/system_tb.sv index 86f36a524..73568d60a 100644 --- a/testbenches/project/ad463x/system_tb.sv +++ b/testbenches/project/ad463x/system_tb.sv @@ -44,7 +44,7 @@ module system_tb(); wire ad463x_spi_cs; wire ad463x_spi_sclk; wire ad463x_spi_clk; - wire [`NUM_OF_SDI-1:0] ad463x_spi_sdi; + wire [`NUM_OF_SDI_TB-1:0] ad463x_spi_sdi; wire ad463x_spi_sdo; wire ad463x_irq; diff --git a/testbenches/project/ad463x/tests/test_program.sv b/testbenches/project/ad463x/tests/test_program.sv index 4fbf2fdd6..303839e63 100644 --- a/testbenches/project/ad463x/tests/test_program.sv +++ b/testbenches/project/ad463x/tests/test_program.sv @@ -100,7 +100,7 @@ program test_program ( input ad463x_spi_sclk, input ad463x_spi_cs, input ad463x_spi_clk, - input [(`NUM_OF_SDI - 1):0] ad463x_spi_sdi); + input [(`NUM_OF_SDI_TB - 1):0] ad463x_spi_sdi); timeunit 1ns; timeprecision 1ps; @@ -158,7 +158,8 @@ initial begin `LINK(mng, base_env, mng) `LINK(ddr, base_env, ddr) - setLoggerVerbosity(ADI_VERBOSITY_NONE); + setLoggerVerbosity(ADI_VERBOSITY_LOW); + `INFO(("NUM_OF_SDI_TB: %d", `NUM_OF_SDI_TB), ADI_VERBOSITY_LOW); base_env.start(); base_env.sys_reset(); @@ -276,7 +277,7 @@ end assign m_spi_csn_negedge_s = ~m_spi_csn_int_s & m_spi_csn_int_d; genvar i; -for (i = 0; i < `NUM_OF_SDI; i++) begin +for (i = 0; i < `NUM_OF_SDI_TB; i++) begin assign ad463x_spi_sdi[i] = sdi_shiftreg[31]; // all SDI lanes got the same data end @@ -348,7 +349,7 @@ end bit offload_status = 0; bit shiftreg_sampled = 0; -bit [15:0] sdi_store_cnt = (`NUM_OF_SDI == 1) ? 'h1 : 'h0; +bit [15:0] sdi_store_cnt = (`NUM_OF_SDI_TB == 1) ? 'h1 : 'h0; bit [31:0] offload_sdi_data_store_arr [(2 * NUM_OF_TRANSFERS) - 1:0]; bit [31:0] sdi_fifo_data_store; bit [31:0] sdi_data_store; @@ -366,7 +367,7 @@ initial begin if (sdi_data_store == 'h0 && shiftreg_sampled == 'h1 && sdi_shiftreg != 'h0) begin shiftreg_sampled <= 'h0; if (offload_status) begin - if (`NUM_OF_SDI == 1) begin + if (`NUM_OF_SDI_TB == 1) begin sdi_store_cnt <= sdi_store_cnt + 1; end else begin sdi_store_cnt <= sdi_store_cnt + 2; @@ -374,7 +375,7 @@ initial begin end end else if (shiftreg_sampled == 'h0 && sdi_data_store != 'h0) begin if (offload_status) begin - if (`NUM_OF_SDI == 1) begin + if (`NUM_OF_SDI_TB == 1) begin sdi_shiftreg_old <= sdi_shiftreg; if (`NO_REORDER == 0) begin if (sdi_store_cnt [0] == 'h1 ) begin @@ -388,7 +389,7 @@ initial begin end else if (`NO_REORDER == 1) begin offload_sdi_data_store_arr[sdi_store_cnt-1] = sdi_shiftreg; end - end else if (`NUM_OF_SDI == 2) begin + end else if (`NUM_OF_SDI_TB == 2) begin if (`DDR_EN == 1) begin for (int j=0; j Date: Fri, 14 Nov 2025 12:50:23 -0300 Subject: [PATCH 2/4] Update: updated cfgs and insert ad463x_trigger pin Configuration files are using INTERLEAVE_MODE instead of NO_REORDER variable. Inserted ad463x_trigger pin that is controlled by the GPIO[36] in hardware, here it is set to 0 to use only PWM signal value. Signed-off-by: Carlos Souza --- .../cfgs/cfg_ch1_cm0_cz1_sdi1_ddr0_nr1.tcl | 18 ++++++++++----- .../cfgs/cfg_ch1_cm0_cz1_sdi2_ddr0_nr0.tcl | 18 ++++++++++----- .../cfgs/cfg_ch1_cm0_cz1_sdi4_ddr0_nr0.tcl | 18 ++++++++++----- .../cfgs/cfg_ch1_cm1_cz2_sdi1_ddr0_nr1.tcl | 18 ++++++++++----- .../cfgs/cfg_ch1_cm1_cz2_sdi2_ddr0_nr0.tcl | 18 ++++++++++----- .../cfgs/cfg_ch1_cm1_cz2_sdi2_ddr1_nr0.tcl | 18 ++++++++++----- .../cfgs/cfg_ch1_cm1_cz2_sdi4_ddr0_nr0.tcl | 18 ++++++++++----- .../cfgs/cfg_ch1_cm1_cz2_sdi4_ddr1_nr0.tcl | 18 ++++++++++----- .../cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr0.tcl | 18 ++++++++++----- .../cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr1.tcl | 22 ++++++++++++------- .../cfgs/cfg_ch2_cm0_cz1_sdi2_ddr0_nr0.tcl | 18 ++++++++++----- .../cfgs/cfg_ch2_cm0_cz1_sdi4_ddr0_nr0.tcl | 18 ++++++++++----- .../cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr0.tcl | 18 ++++++++++----- .../cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr1.tcl | 18 ++++++++++----- .../cfgs/cfg_ch2_cm1_cz2_sdi2_ddr0_nr0.tcl | 18 ++++++++++----- .../cfgs/cfg_ch2_cm1_cz2_sdi2_ddr1_nr0.tcl | 18 ++++++++++----- .../cfgs/cfg_ch2_cm1_cz2_sdi4_ddr0_nr0.tcl | 18 ++++++++++----- .../cfgs/cfg_ch2_cm1_cz2_sdi4_ddr1_nr0.tcl | 18 ++++++++++----- testbenches/project/ad463x/system_tb.sv | 1 + 19 files changed, 236 insertions(+), 93 deletions(-) diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi1_ddr0_nr1.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi1_ddr0_nr1.tcl index eb6948031..5f9f4ca89 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi1_ddr0_nr1.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi1_ddr0_nr1.tcl @@ -3,12 +3,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 1 set ad_project_params(CLK_MODE) 0 set ad_project_params(CAPTURE_ZONE) 1 -set ad_project_params(NUM_OF_SDI) 1 +set ad_project_params(LANES_PER_CHANNEL) 1 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 1 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi2_ddr0_nr0.tcl index 07042017f..5263cc2af 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi2_ddr0_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi2_ddr0_nr0.tcl @@ -3,12 +3,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 1 set ad_project_params(CLK_MODE) 0 set ad_project_params(CAPTURE_ZONE) 1 -set ad_project_params(NUM_OF_SDI) 2 +set ad_project_params(LANES_PER_CHANNEL) 2 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi4_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi4_ddr0_nr0.tcl index 8c73a3a26..b28b58ee1 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi4_ddr0_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm0_cz1_sdi4_ddr0_nr0.tcl @@ -3,12 +3,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 1 set ad_project_params(CLK_MODE) 0 set ad_project_params(CAPTURE_ZONE) 1 -set ad_project_params(NUM_OF_SDI) 4 +set ad_project_params(LANES_PER_CHANNEL) 4 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi1_ddr0_nr1.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi1_ddr0_nr1.tcl index cd324694c..1de2eea0e 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi1_ddr0_nr1.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi1_ddr0_nr1.tcl @@ -3,12 +3,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 1 set ad_project_params(CLK_MODE) 1 set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(NUM_OF_SDI) 1 +set ad_project_params(LANES_PER_CHANNEL) 1 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 1 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr0_nr0.tcl index 5aa7828c0..21f20a916 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr0_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr0_nr0.tcl @@ -3,12 +3,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 1 set ad_project_params(CLK_MODE) 1 set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(NUM_OF_SDI) 2 +set ad_project_params(LANES_PER_CHANNEL) 2 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr1_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr1_nr0.tcl index 0cef995b4..9c97cf862 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr1_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi2_ddr1_nr0.tcl @@ -3,12 +3,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 1 set ad_project_params(CLK_MODE) 1 set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(NUM_OF_SDI) 2 +set ad_project_params(LANES_PER_CHANNEL) 2 set ad_project_params(DDR_EN) 1 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr0_nr0.tcl index fd0c1192f..d83f75fc1 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr0_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr0_nr0.tcl @@ -3,12 +3,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 1 set ad_project_params(CLK_MODE) 1 set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(NUM_OF_SDI) 4 +set ad_project_params(LANES_PER_CHANNEL) 4 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr1_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr1_nr0.tcl index f9a6c4b0a..63c44bdbd 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr1_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch1_cm1_cz2_sdi4_ddr1_nr0.tcl @@ -3,12 +3,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 1 set ad_project_params(CLK_MODE) 1 set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(NUM_OF_SDI) 4 +set ad_project_params(LANES_PER_CHANNEL) 4 set ad_project_params(DDR_EN) 1 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr0.tcl index 592ba4c7b..6c97958db 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr0.tcl @@ -4,12 +4,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 2 set ad_project_params(CLK_MODE) 0 set ad_project_params(CAPTURE_ZONE) 1 -set ad_project_params(NUM_OF_SDI) 1 +set ad_project_params(LANES_PER_CHANNEL) 1 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 1 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr1.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr1.tcl index d1de6c92e..9d96c99d3 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr1.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi1_ddr0_nr1.tcl @@ -4,14 +4,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 2 set ad_project_params(CLK_MODE) 0 set ad_project_params(CAPTURE_ZONE) 1 -set ad_project_params(NUM_OF_SDI) 1 +set ad_project_params(LANES_PER_CHANNEL) 1 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 1 +set ad_project_params(INTERLEAVE_MODE) 0 - - -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] -} \ No newline at end of file + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } +} diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi2_ddr0_nr0.tcl index 5a551c16f..f61863128 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi2_ddr0_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi2_ddr0_nr0.tcl @@ -4,12 +4,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 2 set ad_project_params(CLK_MODE) 0 set ad_project_params(CAPTURE_ZONE) 1 -set ad_project_params(NUM_OF_SDI) 2 +set ad_project_params(LANES_PER_CHANNEL) 2 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi4_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi4_ddr0_nr0.tcl index cec0b7a6e..3c83dbfd5 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi4_ddr0_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm0_cz1_sdi4_ddr0_nr0.tcl @@ -4,12 +4,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 2 set ad_project_params(CLK_MODE) 0 set ad_project_params(CAPTURE_ZONE) 1 -set ad_project_params(NUM_OF_SDI) 4 +set ad_project_params(LANES_PER_CHANNEL) 4 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr0.tcl index 9a3842889..3e2f2ee50 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr0.tcl @@ -4,12 +4,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 2 set ad_project_params(CLK_MODE) 1 set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(NUM_OF_SDI) 1 +set ad_project_params(LANES_PER_CHANNEL) 1 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 1 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr1.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr1.tcl index 1a08aaeeb..eb86d063f 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr1.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi1_ddr0_nr1.tcl @@ -4,12 +4,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 2 set ad_project_params(CLK_MODE) 1 set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(NUM_OF_SDI) 1 +set ad_project_params(LANES_PER_CHANNEL) 1 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 1 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr0_nr0.tcl index e6f421e53..0778113c1 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr0_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr0_nr0.tcl @@ -4,12 +4,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 2 set ad_project_params(CLK_MODE) 1 set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(NUM_OF_SDI) 2 +set ad_project_params(LANES_PER_CHANNEL) 2 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr1_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr1_nr0.tcl index 1ac919669..25cdceb28 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr1_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi2_ddr1_nr0.tcl @@ -4,12 +4,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 2 set ad_project_params(CLK_MODE) 1 set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(NUM_OF_SDI) 2 +set ad_project_params(LANES_PER_CHANNEL) 2 set ad_project_params(DDR_EN) 1 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr0_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr0_nr0.tcl index 8860510bf..fc62df913 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr0_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr0_nr0.tcl @@ -4,12 +4,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 2 set ad_project_params(CLK_MODE) 1 set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(NUM_OF_SDI) 4 +set ad_project_params(LANES_PER_CHANNEL) 4 set ad_project_params(DDR_EN) 0 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr1_nr0.tcl b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr1_nr0.tcl index ff950940c..e0907d9cb 100644 --- a/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr1_nr0.tcl +++ b/testbenches/project/ad463x/cfgs/cfg_ch2_cm1_cz2_sdi4_ddr1_nr0.tcl @@ -4,12 +4,20 @@ global ad_project_params set ad_project_params(NUM_OF_CHANNEL) 2 set ad_project_params(CLK_MODE) 1 set ad_project_params(CAPTURE_ZONE) 2 -set ad_project_params(NUM_OF_SDI) 4 +set ad_project_params(LANES_PER_CHANNEL) 4 set ad_project_params(DDR_EN) 1 -set ad_project_params(NO_REORDER) 0 +set ad_project_params(INTERLEAVE_MODE) 0 -if {$ad_project_params(NUM_OF_CHANNEL) == 2 && $ad_project_params(NUM_OF_SDI) == 1 && $ad_project_params(NO_REORDER) == 0} { - set ad_project_params(NUM_OF_SDI_TB) 1 +if {$ad_project_params(INTERLEAVE_MODE) == 1} { + set ad_project_params(NUM_OF_SDI_TB) 1 + # REORDER is mandatory in interleaved mode + set ad_project_params(NO_REORDER) 0 } else { - set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_SDI) * $ad_project_params(NUM_OF_CHANNEL)}] + set ad_project_params(NUM_OF_SDI_TB) [expr {$ad_project_params(NUM_OF_CHANNEL) * $ad_project_params(LANES_PER_CHANNEL)}] + if {$ad_project_params(NUM_OF_SDI_TB) > 2} { + # REORDER is mandatory when more than 2 lanes are used + set ad_project_params(NO_REORDER) 0 + } else { + set ad_project_params(NO_REORDER) 1 + } } diff --git a/testbenches/project/ad463x/system_tb.sv b/testbenches/project/ad463x/system_tb.sv index 73568d60a..54a842c66 100644 --- a/testbenches/project/ad463x/system_tb.sv +++ b/testbenches/project/ad463x/system_tb.sv @@ -60,6 +60,7 @@ module system_tb(); .ad463x_busy(ad463x_busy), .ad463x_irq(ad463x_irq), .ad463x_cnv(ad463x_cnv), + .ad463x_trigger(1'b0), .ad463x_echo_sclk(ad463x_echo_sclk), .ad463x_ext_clk(ad463x_ext_clk), .ad463x_spi_cs(ad463x_spi_cs), From ea035d4c4e90b5225d1908b65af6436827842c66 Mon Sep 17 00:00:00 2001 From: caosjr Date: Mon, 17 Nov 2025 16:15:45 -0300 Subject: [PATCH 3/4] WIP: test with increasing numbers Internal test. Will not be used in future. Signed-off-by: Carlos Souza --- testbenches/project/ad463x/tests/test_program.sv | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/testbenches/project/ad463x/tests/test_program.sv b/testbenches/project/ad463x/tests/test_program.sv index 303839e63..5c69c927c 100644 --- a/testbenches/project/ad463x/tests/test_program.sv +++ b/testbenches/project/ad463x/tests/test_program.sv @@ -266,6 +266,7 @@ bit [7:0] spi_sclk_pos_counter = 0; bit [7:0] spi_sclk_neg_counter = 0; bit [31:0] sdi_preg[$]; bit [31:0] sdi_nreg[$]; +bit [31:0] aux_counter = 32'hABCD_0000; initial begin forever begin @@ -292,6 +293,7 @@ initial begin spi_sclk_pos_counter <= 8'b0; end else begin spi_sclk_pos_counter <= (spi_sclk_pos_counter == DATA_DLENGTH) ? 0 : spi_sclk_pos_counter+1; + aux_counter <= (spi_sclk_pos_counter == DATA_DLENGTH-1) ? aux_counter + 1 : aux_counter; end end end @@ -324,8 +326,10 @@ initial begin if (m_spi_csn_negedge_s) begin // NOTE: assuming queue is empty repeat (NUM_OF_WORDS) begin - sdi_preg.push_front($urandom); - sdi_nreg.push_front($urandom); + // sdi_preg.push_front($urandom); + // sdi_nreg.push_front($urandom); + sdi_preg.push_front(aux_counter); + sdi_nreg.push_front(aux_counter); end #1step; // prevent race condition sdi_shiftreg <= (CPOL ^ CPHA) ? From d8ac28c83182becc5d98aeaa153633469a9c5e6a Mon Sep 17 00:00:00 2001 From: caosjr Date: Tue, 18 Nov 2025 05:34:09 -0300 Subject: [PATCH 4/4] Fix: SPI MODE is working with the CZ=1 Fixed the bug that was preventing the correct output for CLOCK_MODE=0 and CAPTURE_ZONE=1 with the reorder module. Every mode is working now. Signed-off-by: Carlos Souza --- .../project/ad463x/tests/test_program.sv | 55 +++++++++++-------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/testbenches/project/ad463x/tests/test_program.sv b/testbenches/project/ad463x/tests/test_program.sv index 5c69c927c..85ae7c826 100644 --- a/testbenches/project/ad463x/tests/test_program.sv +++ b/testbenches/project/ad463x/tests/test_program.sv @@ -158,8 +158,7 @@ initial begin `LINK(mng, base_env, mng) `LINK(ddr, base_env, ddr) - setLoggerVerbosity(ADI_VERBOSITY_LOW); - `INFO(("NUM_OF_SDI_TB: %d", `NUM_OF_SDI_TB), ADI_VERBOSITY_LOW); + setLoggerVerbosity(ADI_VERBOSITY_NONE); base_env.start(); base_env.sys_reset(); @@ -186,7 +185,7 @@ end //--------------------------------------------------------------------------- task sanity_test(); - bit [31:0] pcore_version = (`DEFAULT_AXI_SPI_ENGINE_VERSION_VERSION_PATCH) + automatic bit [31:0] pcore_version = (`DEFAULT_AXI_SPI_ENGINE_VERSION_VERSION_PATCH) | (`DEFAULT_AXI_SPI_ENGINE_VERSION_VERSION_MINOR)<<8 | (`DEFAULT_AXI_SPI_ENGINE_VERSION_VERSION_MAJOR)<<16; axi_read_v (`SPI_AD469X_REGMAP_BA + GetAddrs(AXI_SPI_ENGINE_VERSION), pcore_version); @@ -266,7 +265,8 @@ bit [7:0] spi_sclk_pos_counter = 0; bit [7:0] spi_sclk_neg_counter = 0; bit [31:0] sdi_preg[$]; bit [31:0] sdi_nreg[$]; -bit [31:0] aux_counter = 32'hABCD_0000; +bit [31:0] random_word = $urandom;//32'hABCD_0000; +bit first_offload_word = 1; initial begin forever begin @@ -293,7 +293,16 @@ initial begin spi_sclk_pos_counter <= 8'b0; end else begin spi_sclk_pos_counter <= (spi_sclk_pos_counter == DATA_DLENGTH) ? 0 : spi_sclk_pos_counter+1; - aux_counter <= (spi_sclk_pos_counter == DATA_DLENGTH-1) ? aux_counter + 1 : aux_counter; + if (spi_sclk_pos_counter == DATA_DLENGTH-1) begin + if (`NO_REORDER == 0 && `CAPTURE_ZONE == 1 && first_offload_word == 1) begin + // repeat the first word for SPI MODE in capture zone 1 with reorder + // this is necessary because the offload looses the first word in this mode + random_word <= random_word; + first_offload_word <= 0; + end else begin + random_word <= $urandom;//random_word + 1; + end + end end end end @@ -326,10 +335,8 @@ initial begin if (m_spi_csn_negedge_s) begin // NOTE: assuming queue is empty repeat (NUM_OF_WORDS) begin - // sdi_preg.push_front($urandom); - // sdi_nreg.push_front($urandom); - sdi_preg.push_front(aux_counter); - sdi_nreg.push_front(aux_counter); + sdi_preg.push_front(random_word); + sdi_nreg.push_front(random_word); end #1step; // prevent race condition sdi_shiftreg <= (CPOL ^ CPHA) ? @@ -353,7 +360,8 @@ end bit offload_status = 0; bit shiftreg_sampled = 0; -bit [15:0] sdi_store_cnt = (`NUM_OF_SDI_TB == 1) ? 'h1 : 'h0; +bit [15:0] sdi_store_cnt = (`NUM_OF_SDI_TB == 1) ? 'h1 : 'h0; +bit first_word = 1; bit [31:0] offload_sdi_data_store_arr [(2 * NUM_OF_TRANSFERS) - 1:0]; bit [31:0] sdi_fifo_data_store; bit [31:0] sdi_data_store; @@ -372,7 +380,14 @@ initial begin shiftreg_sampled <= 'h0; if (offload_status) begin if (`NUM_OF_SDI_TB == 1) begin - sdi_store_cnt <= sdi_store_cnt + 1; + if (`NO_REORDER == 0 && `CAPTURE_ZONE == 1 && sdi_store_cnt == 1 && first_word == 1) begin + // repeat the first word for SPI MODE in capture zone 1 with reorder + // this is necessary because the offload looses the first word in this mode + first_word <= 0; + sdi_store_cnt <= sdi_store_cnt; + end else begin + sdi_store_cnt <= sdi_store_cnt + 1; + end end else begin sdi_store_cnt <= sdi_store_cnt + 2; end @@ -507,7 +522,7 @@ task offload_spi_test(); #2000ns; for (int i=0; i<=((2 * NUM_OF_TRANSFERS) -1); i=i+1) begin - offload_captured_word_arr[i] = base_env.ddr.slave_sequencer.BackdoorRead32(xil_axi_uint'(`DDR_BA + 4*i)); + offload_captured_word_arr[i] = base_env.ddr.slave_sequencer.BackdoorRead32(xil_axi_uint'(`DDR_BA) + 4*i); end if (irq_pending == 'h0) begin @@ -517,20 +532,14 @@ task offload_spi_test(); end for (int i=2; i<=((2 * NUM_OF_TRANSFERS) -1); i=i+1) begin - `INFO(("offload_captured_word_arr[%d]: %x; offload_sdi_data_store_arr[%d]: %x", + if (offload_captured_word_arr[i] != offload_sdi_data_store_arr[i]) begin + `INFO(("offload_captured_word_arr[%d]: %x; offload_sdi_data_store_arr[%d]: %x", i, offload_captured_word_arr[i], i, offload_sdi_data_store_arr[i]), ADI_VERBOSITY_LOW); - if (offload_captured_word_arr[i] != offload_sdi_data_store_arr[i]) begin `ERROR(("Offload Test FAILED")); end end `INFO(("Offload Test PASSED"), ADI_VERBOSITY_LOW); - - // if (offload_captured_word_arr [(2 * NUM_OF_TRANSFERS) - 1:2] != offload_sdi_data_store_arr [(2 * NUM_OF_TRANSFERS) - 1:2]) begin - // `ERROR(("Offload Test FAILED")); - // end else begin - // `INFO(("Offload Test PASSED"), ADI_VERBOSITY_LOW); - // end endtask //--------------------------------------------------------------------------- @@ -583,11 +592,11 @@ task fifo_spi_test(); axi_read (`SPI_AD469X_REGMAP_BA + GetAddrs(AXI_SPI_ENGINE_SDI_FIFO_PEEK), sdi_fifo_data); end - `INFO(("sdi_fifo_data: %x; sdi_fifo_data_store: %x", + if (sdi_fifo_data != sdi_fifo_data_store) begin + `INFO(("sdi_fifo_data: %x; sdi_fifo_data_store: %x", sdi_fifo_data, sdi_fifo_data_store), ADI_VERBOSITY_LOW); - - if (sdi_fifo_data != sdi_fifo_data_store) `ERROR(("Fifo Read Test FAILED")); + end `INFO(("Fifo Read Test PASSED"), ADI_VERBOSITY_LOW); endtask