From 3b074870ad30efed0406505e631adb779a64f03a Mon Sep 17 00:00:00 2001
From: Eric Kooistra <kooistra@astron.nl>
Date: Wed, 29 Sep 2021 19:19:54 +0200
Subject: [PATCH] Prepare test support for stream_en_arr.

---
 .../base/dp/tb/vhdl/tb_dp_bsn_align_v2.vhd    | 20 ++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/libraries/base/dp/tb/vhdl/tb_dp_bsn_align_v2.vhd b/libraries/base/dp/tb/vhdl/tb_dp_bsn_align_v2.vhd
index cc561ee13f..030019880a 100644
--- a/libraries/base/dp/tb/vhdl/tb_dp_bsn_align_v2.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_dp_bsn_align_v2.vhd
@@ -77,7 +77,7 @@ ARCHITECTURE tb OF tb_dp_bsn_align_v2 IS
   CONSTANT c_total_latency            : NATURAL := c_dut_latency + c_align_latency_nof_clk;
   CONSTANT c_verify_nof_blocks        : NATURAL := g_tb_nof_blocks - g_bsn_latency_max;  -- skip last blocks
 
-  TYPE t_tb_state IS (s_idle, s_start, s_restart, s_lost);
+  TYPE t_tb_state IS (s_idle, s_start, s_restart, s_disable, s_lost);
 
   TYPE t_data_arr    IS ARRAY (g_nof_streams-1 DOWNTO 0) OF STD_LOGIC_VECTOR(c_data_w-1 DOWNTO 0);
   TYPE t_bsn_arr     IS ARRAY (g_nof_streams-1 DOWNTO 0) OF STD_LOGIC_VECTOR(c_bsn_w-1 DOWNTO 0);
@@ -190,6 +190,9 @@ BEGIN
       -- Begin of stimuli
       FOR S IN 0 TO g_tb_nof_restart-1 LOOP
         v_bsn := c_bsn_init;
+        IF S = 2 THEN
+          stream_en_arr(1) <= '0';
+        END IF;
         FOR R IN 0 TO g_tb_nof_blocks-1 LOOP
           v_sync := sel_a_b(v_bsn MOD c_sync_period = c_sync_offset, '1', '0');
           proc_dp_gen_block_data(c_rl, TRUE, c_data_w, c_data_w, v_data, 0, 0, g_block_size, v_channel, v_err, v_sync, TO_UVEC(v_bsn, c_bsn_w), clk, stream_en_arr(I), ref_siso_arr(I), ref_sosi_arr(I));
@@ -223,7 +226,8 @@ BEGIN
     tb_state <= s_idle;
     IF restart_cnt = 0 THEN tb_state <= s_start; END IF;
     IF restart_cnt = 1 THEN tb_state <= s_restart; END IF;
-    IF restart_cnt = 2 THEN tb_state <= s_lost; END IF;
+    IF restart_cnt = 3 THEN tb_state <= s_disable; END IF;
+    IF restart_cnt = 4 THEN tb_state <= s_lost; END IF;
   END PROCESS;
 
   -- Create latency misalignment between the input streams
@@ -326,9 +330,15 @@ BEGIN
            ASSERT out_sosi_arr(I).sop = out_sosi_arr_exp(I).sop REPORT "Wrong sop for output " & int_to_str(I) SEVERITY ERROR;
            ASSERT out_sosi_arr(I).eop = out_sosi_arr_exp(I).eop REPORT "Wrong eop for output " & int_to_str(I) SEVERITY ERROR;
            ASSERT out_sosi_arr(I).valid = out_sosi_arr_exp(I).valid REPORT "Wrong valid for output " & int_to_str(I) SEVERITY ERROR;
-           ASSERT out_sosi_arr(I).data  = out_sosi_arr_exp(I).data REPORT "Wrong data for output " & int_to_str(I) & " : "
-                                                                          & int_to_str(TO_UINT(out_sosi_arr(I).data)) & " /= "
-                                                                          & int_to_str(TO_UINT(out_sosi_arr_exp(I).data)) SEVERITY ERROR;
+           IF stream_en_arr(I) = '1' THEN
+             ASSERT out_sosi_arr(I).data  = out_sosi_arr_exp(I).data REPORT "Wrong data for output " & int_to_str(I) & " : "
+                                                                            & int_to_str(TO_UINT(out_sosi_arr(I).data)) & " /= "
+                                                                            & int_to_str(TO_UINT(out_sosi_arr_exp(I).data)) SEVERITY ERROR;
+           ELSE
+             ASSERT TO_UINT(out_sosi_arr(I).data) = g_replacement_value REPORT "Wrong data for output " & int_to_str(I) & " : "
+                                                                               & int_to_str(TO_UINT(out_sosi_arr(I).data)) & " /= "
+                                                                               & int_to_str(g_replacement_value) SEVERITY ERROR;
+           END IF;
         END IF;
       END IF;
     END PROCESS;
-- 
GitLab