From 9820b94f64a0d20ed70d8ce564964351ca6b0f35 Mon Sep 17 00:00:00 2001
From: Eric Kooistra <kooistra@astron.nl>
Date: Wed, 12 Jan 2022 15:21:29 +0100
Subject: [PATCH] Improved p_rd_rx_hdr_words.

---
 libraries/base/dp/tb/vhdl/tb_dp_offload_tx_v3.vhd | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/libraries/base/dp/tb/vhdl/tb_dp_offload_tx_v3.vhd b/libraries/base/dp/tb/vhdl/tb_dp_offload_tx_v3.vhd
index 0481f2ff99..7b079c77f9 100644
--- a/libraries/base/dp/tb/vhdl/tb_dp_offload_tx_v3.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_dp_offload_tx_v3.vhd
@@ -56,7 +56,6 @@ ENTITY tb_dp_offload_tx_v3 IS
     g_flow_control_verify    : t_dp_flow_control_enum := e_active;  -- always e_active, e_random or e_pulse flow control
     -- specific
     g_data_w                 : NATURAL := 64;
-    g_nof_repeat             : NATURAL := 100;
     g_pkt_len                : NATURAL := 240;
     g_pkt_gap                : NATURAL := 16
   );
@@ -87,9 +86,11 @@ ARCHITECTURE tb OF tb_dp_offload_tx_v3 IS
   CONSTANT c_sync_period              : NATURAL := 5;
   CONSTANT c_sync_offset              : NATURAL := 2;
   CONSTANT c_bsn_init                 : STD_LOGIC_VECTOR(c_dp_stream_bsn_w-1 DOWNTO 0) := TO_DP_BSN(0);
+  CONSTANT c_nof_sync                 : NATURAL := 5;
+  CONSTANT c_nof_packets              : NATURAL := c_sync_period * c_nof_sync;
 
   CONSTANT c_hdr_len                  : NATURAL := 7;
-  CONSTANT c_wait_last_evt            : NATURAL := 100 + g_nof_repeat * c_hdr_len;
+  CONSTANT c_wait_last_evt            : NATURAL := 100 + c_nof_packets * c_hdr_len;
 
   -----------------------------------------------------------------------------
   -- Tx offload
@@ -279,7 +280,7 @@ BEGIN
     g_bsn_init       => c_bsn_init,
     -- specific
     g_in_dat_w       => g_data_w,
-    g_nof_repeat     => g_nof_repeat,
+    g_nof_repeat     => c_nof_packets,
     g_pkt_len        => g_pkt_len,
     g_pkt_gap        => g_pkt_gap,
     g_wait_last_evt  => c_wait_last_evt
@@ -437,7 +438,6 @@ BEGIN
   p_rd_tx_hdr_words : PROCESS
     VARIABLE v_word : STD_LOGIC_VECTOR(c_word_w-1 DOWNTO 0);
   BEGIN
-    proc_common_wait_until_hi_lo(dp_clk, tx_offload_sosi_arr(0).sync);
     proc_common_wait_until_hi_lo(dp_clk, tx_offload_sosi_arr(0).sync);
     print_str("");
     FOR I IN 0 TO c_udp_offload_nof_hdr_words-1 LOOP
@@ -522,6 +522,8 @@ BEGIN
     proc_common_wait_until_hi_lo(dp_clk, verify_snk_in.sync);
     proc_common_wait_until_hi_lo(dp_clk, verify_snk_in.sync);
     proc_common_wait_until_hi_lo(dp_clk, verify_snk_in.sync);
+    -- wait some latency until header fields of this sync packet are available via MM
+    proc_common_wait_some_cycles(dp_clk, 10);
     print_str("");
     FOR I IN 0 TO c_udp_offload_nof_hdr_words-1 LOOP
       proc_mem_mm_bus_rd(I, mm_clk, reg_dp_offload_rx_hdr_dat_mosi);
-- 
GitLab