From d5eb1015a376a978e680bd5b96591319cc7e7b49 Mon Sep 17 00:00:00 2001
From: Eric Kooistra <kooistra@astron.nl>
Date: Wed, 6 Sep 2023 10:52:18 +0200
Subject: [PATCH] Use separate tb to verify dp_packet_unmerge.

---
 .../base/dp/tb/vhdl/tb_dp_packet_merge.vhd    | 35 ++++------------
 .../base/dp/tb/vhdl/tb_tb_dp_packet_merge.vhd | 41 +++++++++----------
 2 files changed, 27 insertions(+), 49 deletions(-)

diff --git a/libraries/base/dp/tb/vhdl/tb_dp_packet_merge.vhd b/libraries/base/dp/tb/vhdl/tb_dp_packet_merge.vhd
index 6466f7e36b..fe8db32e27 100644
--- a/libraries/base/dp/tb/vhdl/tb_dp_packet_merge.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_dp_packet_merge.vhd
@@ -21,7 +21,7 @@
 -------------------------------------------------------------------------------
 
 -- Purpose:
--- . Test bench for dp_packet_merge and dp_packet_unmerge
+-- . Test bench for dp_packet_merge
 -- Description:
 -- . The p_stimuli_st uses proc_dp_gen_block_data to generate g_nof_repeat packets for the DUT. The output of the DUT needs
 --   to be similar e.g. by means of an inverse DUT component so that the proc_dp_verify_* procedures can be used to verify
@@ -29,6 +29,8 @@
 --   verify that the test bench has yielded output results at all and that the output valid, sop, eop, and ready fits the
 --   streaming interface specification.
 -- . A seperate p_stimuli_mm process may be used to verify the nof_pkt input of the DUT.
+-- . Use separate tb_dp_packet_merge_unmerge to verify dp_packet_unmerge, to have easier control
+--   over expected output channel, err and empty of dp_packet_unmerge.
 -- Usage:
 -- > as 10
 -- > run -all
@@ -67,8 +69,7 @@ entity tb_dp_packet_merge is
     g_align_at_sync          : boolean := false;
     g_verify_bsn_err         : boolean := false;
     g_bsn_increment          : natural := 2;
-    g_bsn_err_at_pkt_index   : natural := 6;  -- force wrong snk_in.bsn for packet with this index, in range(g_nof_repeat)
-    g_use_dp_packet_unmerge  : boolean := false
+    g_bsn_err_at_pkt_index   : natural := 6  -- force wrong snk_in.bsn for packet with this index, in range(g_nof_repeat)
   );
 end tb_dp_packet_merge;
 
@@ -205,7 +206,7 @@ begin
     end loop;
 
     -- Determine expected sosi field values after end of stimuli
-    ---- . e_qual (account for merge size g_nof_pkt)
+    -- . e_qual (account for merge size g_nof_pkt)
     -- . e_at_least
     v_sosi.bsn     := std_logic_vector( unsigned(c_bsn_init) + c_verify_at_least * g_nof_pkt);
     v_sosi.channel := TO_DP_CHANNEL(c_channel_init           + c_verify_at_least * g_nof_pkt);
@@ -316,30 +317,8 @@ begin
   ------------------------------------------------------------------------------
   -- Optional reverse DUT dp_packet_unmerge
   ------------------------------------------------------------------------------
-  no_dp_packet_unmerge : if g_use_dp_packet_unmerge = false generate
-    dp_packet_merge_src_in <= verify_snk_out;
-    verify_snk_in          <= dp_packet_merge_src_out;
-  end generate;
-
-  gen_dp_packet_unmerge : if g_use_dp_packet_unmerge = true generate
-    u_dp_packet_unmerge : entity work.dp_packet_unmerge
-    generic map (
-      g_nof_pkt => g_nof_pkt
-    )
-    port map (
-      rst       => rst,
-      clk       => clk,
-
-      snk_out   => dp_packet_merge_src_in,
-      snk_in    => dp_packet_merge_src_out,
-
-      src_in    => dp_packet_unmerge_src_in,
-      src_out   => dp_packet_unmerge_src_out
-    );
-
-    dp_packet_unmerge_src_in <= verify_snk_out;
-    verify_snk_in            <= dp_packet_unmerge_src_out;
-  end generate;
+  dp_packet_merge_src_in <= verify_snk_out;
+  verify_snk_in          <= dp_packet_merge_src_out;
 
   -- Map to slv to ease monitoring in wave window
   stimuli_data <= stimuli_src_out.data(g_data_w - 1 downto 0);
diff --git a/libraries/base/dp/tb/vhdl/tb_tb_dp_packet_merge.vhd b/libraries/base/dp/tb/vhdl/tb_tb_dp_packet_merge.vhd
index 46fbd725ba..f08c53a92d 100644
--- a/libraries/base/dp/tb/vhdl/tb_tb_dp_packet_merge.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_tb_dp_packet_merge.vhd
@@ -50,29 +50,28 @@ begin
   --     g_verify_bsn_err         : boolean := false;
   --     g_bsn_increment          : natural := 0;
   --     g_bsn_err_at_pkt_index   : natural := 3;
-  --     g_use_dp_packet_unmerge  : boolean := false
 
-  u_act_act_8_nof_0      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 0, 29, 0, false, false, 1, 0, false);
-  u_act_act_8_nof_1      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 1, 29, 0, false, false, 1, 0, false);
-  u_act_act_8_nof_2      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 2, 29, 0, false, false, 1, 0, false);
-  u_act_act_8_nof_3      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 3, 29, 0, false, false, 1, 0, false);
-  u_act_act_8_nof_4      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 4, 29, 0, false, false, 1, 0, false);
-  u_act_act_8_nof_5      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 5, 29, 0, false, false, 1, 0, false);
-  u_act_act_8_nof_6      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 6, 29, 0, false, false, 1, 0, false);
-  u_act_act_8_nof_7      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 7, 29, 0, false, false, 1, 0, false);
+  u_act_act_8_nof_0      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 0, 29, 0, false, false, 1, 0);
+  u_act_act_8_nof_1      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 1, 29, 0, false, false, 1, 0);
+  u_act_act_8_nof_2      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 2, 29, 0, false, false, 1, 0);
+  u_act_act_8_nof_3      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 3, 29, 0, false, false, 1, 0);
+  u_act_act_8_nof_4      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 4, 29, 0, false, false, 1, 0);
+  u_act_act_8_nof_5      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 5, 29, 0, false, false, 1, 0);
+  u_act_act_8_nof_6      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 6, 29, 0, false, false, 1, 0);
+  u_act_act_8_nof_7      : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 7, 29, 0, false, false, 1, 0);
 
-  u_rnd_act_8_nof_3      : entity work.tb_dp_packet_merge generic map ( e_random, e_active, 8, c_nof_repeat, 3, 29, 0, false, false, 2, 0, false);
-  u_rnd_rnd_8_nof_3      : entity work.tb_dp_packet_merge generic map ( e_random, e_random, 8, c_nof_repeat, 3, 29, 0, false, false, 3, 0, false);
-  u_pls_act_8_nof_3      : entity work.tb_dp_packet_merge generic map ( e_pulse,  e_active, 8, c_nof_repeat, 3, 29, 0, false, false, 4, 0, false);
-  u_pls_rnd_8_nof_3      : entity work.tb_dp_packet_merge generic map ( e_pulse,  e_random, 8, c_nof_repeat, 3, 29, 0, false, false, 5, 0, false);
-  u_pls_pls_8_nof_3      : entity work.tb_dp_packet_merge generic map ( e_pulse,  e_pulse,  8, c_nof_repeat, 3, 29, 0, false, false, 6, 0, false);
+  u_rnd_act_8_nof_3      : entity work.tb_dp_packet_merge generic map ( e_random, e_active, 8, c_nof_repeat, 3, 29, 0, false, false, 2, 0);
+  u_rnd_rnd_8_nof_3      : entity work.tb_dp_packet_merge generic map ( e_random, e_random, 8, c_nof_repeat, 3, 29, 0, false, false, 3, 0);
+  u_pls_act_8_nof_3      : entity work.tb_dp_packet_merge generic map ( e_pulse,  e_active, 8, c_nof_repeat, 3, 29, 0, false, false, 4, 0);
+  u_pls_rnd_8_nof_3      : entity work.tb_dp_packet_merge generic map ( e_pulse,  e_random, 8, c_nof_repeat, 3, 29, 0, false, false, 5, 0);
+  u_pls_pls_8_nof_3      : entity work.tb_dp_packet_merge generic map ( e_pulse,  e_pulse,  8, c_nof_repeat, 3, 29, 0, false, false, 6, 0);
 
-  u_rnd_act_8_nof_1      : entity work.tb_dp_packet_merge generic map ( e_random, e_active, 8, c_nof_repeat, 1, 29, 0, false, false, 1, 0, false);
-  u_rnd_act_8_nof_3_gap  : entity work.tb_dp_packet_merge generic map ( e_random, e_active, 8, c_nof_repeat, 3, 29, 17, false, false, 1, 0, false);
+  u_rnd_act_8_nof_1      : entity work.tb_dp_packet_merge generic map ( e_random, e_active, 8, c_nof_repeat, 1, 29, 0, false, false, 1, 0);
+  u_rnd_act_8_nof_3_gap  : entity work.tb_dp_packet_merge generic map ( e_random, e_active, 8, c_nof_repeat, 3, 29, 17, false, false, 1, 0);
 
-  u_act_act_8_nof_3_no_err : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 3, 29, 0, false, true, 0, 10, false);
-  u_act_act_8_nof_3_err_10 : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 3, 29, 0, false, true, 1, 10, false);
-  u_act_act_8_nof_3_err_11 : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 3, 29, 0, false, true, 1, 11, false);
-  u_act_act_8_nof_3_err_12 : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 3, 29, 0, false, true, 1, 12, false);
-  u_act_act_8_nof_3_err_13 : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 3, 29, 0, false, true, 1, 13, false);
+  u_act_act_8_nof_3_no_err : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 3, 29, 0, false, true, 0, 10);
+  u_act_act_8_nof_3_err_10 : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 3, 29, 0, false, true, 1, 10);
+  u_act_act_8_nof_3_err_11 : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 3, 29, 0, false, true, 1, 11);
+  u_act_act_8_nof_3_err_12 : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 3, 29, 0, false, true, 1, 12);
+  u_act_act_8_nof_3_err_13 : entity work.tb_dp_packet_merge generic map ( e_active, e_active, 8, c_nof_repeat, 3, 29, 0, false, true, 1, 13);
 end tb;
-- 
GitLab