From cc9734bfb28d27632a9d1f5d7b0699a6d68cd701 Mon Sep 17 00:00:00 2001
From: Eric Kooistra <kooistra@astron.nl>
Date: Thu, 6 Oct 2022 10:40:41 +0200
Subject: [PATCH] Correct c_eth_runtime_timeout to account for skipped first
 new_interval.

---
 .../tb_lofar2_unb2b_sdp_station_bf_bst_offload.vhd       | 7 +++++--
 .../tb_lofar2_unb2b_sdp_station_fsub_sst_offload.vhd     | 9 ++++++---
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_bf/tb_lofar2_unb2b_sdp_station_bf_bst_offload.vhd b/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_bf/tb_lofar2_unb2b_sdp_station_bf_bst_offload.vhd
index c3cd741d7f..f053efd602 100644
--- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_bf/tb_lofar2_unb2b_sdp_station_bf_bst_offload.vhd
+++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_bf/tb_lofar2_unb2b_sdp_station_bf_bst_offload.vhd
@@ -75,6 +75,7 @@ ARCHITECTURE tb OF tb_lofar2_unb2b_sdp_station_bf_bst_offload IS
   CONSTANT c_nof_clk_per_sync    : NATURAL := c_nof_block_per_sync*c_sdp_N_fft; 
   CONSTANT c_pps_period          : NATURAL := c_nof_clk_per_sync;
   CONSTANT c_wpfb_sim            : t_wpfb := func_wpfb_set_nof_block_per_sync(c_sdp_wpfb_subbands, c_nof_block_per_sync);
+  CONSTANT c_nof_sync            : NATURAL := 1;
 
   -- MM  
   CONSTANT c_mm_file_reg_bsn_source_v2   : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "REG_BSN_SOURCE_V2";
@@ -88,12 +89,14 @@ ARCHITECTURE tb OF tb_lofar2_unb2b_sdp_station_bf_bst_offload IS
   SIGNAL eth_done            : STD_LOGIC := '0';
 
   -- . 1GbE output
-  CONSTANT c_eth_check_nof_packets        : NATURAL := 1; -- received packets in 1 sync period
+  CONSTANT c_eth_check_nof_packets        : NATURAL := c_nof_sync * 1;  -- 1 received packet per sync interval
   CONSTANT c_eth_header_size              : NATURAL := 19; -- words
   CONSTANT c_eth_crc_size                 : NATURAL := 1; -- word
   CONSTANT c_eth_packet_size              : NATURAL := c_eth_header_size + c_eth_crc_size + (c_sdp_W_statistic / c_word_w) * c_sdp_S_sub_bf * c_sdp_N_pol; -- 20 + 2 * 488 * 2 = 1972 
   CONSTANT c_eth_check_nof_valid          : NATURAL := c_eth_check_nof_packets * c_eth_packet_size;  
-  CONSTANT c_eth_runtime_timeout          : TIME := 2 * c_nof_clk_per_sync * c_ext_clk_period;  -- eth statistics should be done at the second sync interval
+
+  -- eth statistics should be done after c_nof_sync + 1 intervals (+1 because first new_interval is skipped)
+  CONSTANT c_eth_runtime_timeout          : TIME := (c_nof_sync + 2) * c_nof_clk_per_sync * c_ext_clk_period;
   
   -- DUT
   SIGNAL ext_clk             : STD_LOGIC := '0';
diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_fsub/tb_lofar2_unb2b_sdp_station_fsub_sst_offload.vhd b/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_fsub/tb_lofar2_unb2b_sdp_station_fsub_sst_offload.vhd
index d819aae880..456f74dd11 100644
--- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_fsub/tb_lofar2_unb2b_sdp_station_fsub_sst_offload.vhd
+++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/revisions/lofar2_unb2b_sdp_station_fsub/tb_lofar2_unb2b_sdp_station_fsub_sst_offload.vhd
@@ -74,6 +74,7 @@ ARCHITECTURE tb OF tb_lofar2_unb2b_sdp_station_fsub_sst_offload IS
   CONSTANT c_nof_clk_per_sync    : NATURAL := c_nof_block_per_sync*c_sdp_N_fft; 
   CONSTANT c_pps_period          : NATURAL := c_nof_clk_per_sync;
   CONSTANT c_wpfb_sim            : t_wpfb := func_wpfb_set_nof_block_per_sync(c_sdp_wpfb_subbands, c_nof_block_per_sync);
+  CONSTANT c_nof_sync            : NATURAL := 1;
 
   -- MM  
   CONSTANT c_mm_file_reg_bsn_source_v2    : STRING := mmf_unb_file_prefix(c_unb_nr, c_node_nr) & "REG_BSN_SOURCE_V2";
@@ -87,13 +88,15 @@ ARCHITECTURE tb OF tb_lofar2_unb2b_sdp_station_fsub_sst_offload IS
   SIGNAL eth_done            : STD_LOGIC := '0';
 
   -- . 1GbE output
-  CONSTANT c_eth_check_nof_packets        : NATURAL := c_sdp_S_pn; -- received packets in 1 sync period
+  CONSTANT c_eth_check_nof_packets        : NATURAL := c_nof_sync * c_sdp_S_pn;  -- S_pn = 12 received packets per sync interval
   CONSTANT c_eth_header_size              : NATURAL := 19; -- words
   CONSTANT c_eth_crc_size                 : NATURAL := 1; -- word
   CONSTANT c_eth_packet_size              : NATURAL := c_eth_header_size + c_eth_crc_size + c_sdp_N_sub * (c_sdp_W_statistic / c_word_w); -- 20 + 512 * 2 = 1044 
   CONSTANT c_eth_check_nof_valid          : NATURAL := c_eth_check_nof_packets * c_eth_packet_size;  
-  CONSTANT c_eth_runtime_timeout          : TIME := 2 * c_nof_clk_per_sync * c_ext_clk_period;  -- eth statistics should be done at the second sync interval
-  
+
+  -- eth statistics should be done after c_nof_sync + 1 intervals (+1 because first new_interval is skipped)
+  CONSTANT c_eth_runtime_timeout          : TIME := (c_nof_sync + 2) * c_nof_clk_per_sync * c_ext_clk_period;
+
   -- DUT
   SIGNAL ext_clk             : STD_LOGIC := '0';
   SIGNAL pps                 : STD_LOGIC := '0';
-- 
GitLab