From c72935be95f3af4d3198ed568e404223f6a38d08 Mon Sep 17 00:00:00 2001
From: donker <donker@astron.nl>
Date: Wed, 3 Feb 2021 17:43:28 +0100
Subject: [PATCH] L2SDP-180, processed review comments 3.

---
 .../lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd       |  2 +-
 .../sdp/src/vhdl/sdp_statistics_offload.vhd         |  7 +++----
 .../sdp/tb/vhdl/tb_sdp_statistics_offload.vhd       | 13 ++++++-------
 3 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
index d3b6636991..d20dee52d2 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
@@ -204,7 +204,7 @@ PACKAGE sdp_pkg is
   CONSTANT c_sdp_reg_nw_10GbE_mac_addr_w    : NATURAL := 13;
   CONSTANT c_sdp_reg_nw_10GbE_eth10g_addr_w : NATURAL := 1;
 
-  -- statistics SST offload
+  -- statistics offload
   CONSTANT c_sdp_stat_nof_hdr_fields : NATURAL := 3+12+4+20+1; -- 592b; 9.25 64b words
   CONSTANT c_sdp_stat_hdr_field_sel  : STD_LOGIC_VECTOR(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := "101"&"111111111001"&"0111"&"01000000000000000000"&"0";  -- 0=data path, 1=MM controlled TODO
 
diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
index 7c8a9600e6..582ed069d6 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
@@ -202,9 +202,9 @@ BEGIN
 
     -- assign sdp_data_id for different statistic types
     IF g_statistics_type = "SST" THEN
-      d.data_id <= x"000000" & TO_UVEC(r.block_count, 8);
+      d.data_id <= x"000000" & TO_UVEC(r.block_count + c_sdp_S_pn * gn_index, 8);
     ELSIF g_statistics_type = "BST" THEN
-      d.data_id <= x"0000" & TO_UVEC(c_beamlet_id, 24);
+      d.data_id <= x"0000" & TO_UVEC(c_beamlet_id, 16);
     ELSIF g_statistics_type = "XST" THEN
       d.data_id <= x"00" & TO_UVEC(0, 8) & TO_UVEC(0, 8) & TO_UVEC(0, 8);  -- TODO: fill in right values for XST.
     ELSE
@@ -228,8 +228,7 @@ BEGIN
         d.start_pulse <= '1';
         d.block_count <= r.block_count + 1;
       ELSE
-        -- prepare for next trigger interval, this is in fact don't care, because trigger will start
-        -- next offload interval, but may ease interpretation in the wave window
+        -- Prepare for next trigger interval.
         d.start_address <= 0;
         d.block_count   <= 0;
       END IF;
diff --git a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd
index 26c9d34d80..4de55d2595 100644
--- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd
+++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd
@@ -212,10 +212,9 @@ BEGIN
   p_in_sosi : PROCESS
   BEGIN
     proc_common_wait_until_low(dp_clk, dp_rst);
-    proc_common_wait_some_cycles(dp_clk, 10);
-    in_sosi.valid <= '1';
+    proc_common_wait_some_cycles(dp_clk, 12);
     in_sosi.bsn <= TO_DP_BSN(16#10000#);
-    proc_common_wait_some_cycles(dp_clk, 1);
+    in_sosi.valid <= '1';
     WHILE TRUE LOOP
       FOR i IN 0 TO c_nof_block_per_sync-1 LOOP
         FOR j IN 0 TO c_nof_clk_per_block-1 LOOP
@@ -315,13 +314,13 @@ BEGIN
   END PROCESS;
 
   -- Count number of blocks in a sync interval, rx_request is used to start counting from 0.
-  p_rx_block_cnt : PROCESS(dp_clk, test_offload_sosi)
+  p_rx_block_cnt : PROCESS(dp_clk)
   BEGIN
     IF rising_edge(dp_clk) THEN
       IF test_offload_sosi.sop = '1' THEN
         IF rx_request = '1' THEN 
           rx_block_cnt <= 0;
-          rx_request <= '0';
+          rx_request   <= '0';
         ELSE
           rx_block_cnt <= rx_block_cnt + 1;
         END IF;
@@ -338,7 +337,7 @@ BEGIN
   rx_prev_bsn <= rx_bsn WHEN rising_edge(dp_clk);
 
   -- verify number of blocks between 2 syncs and between 2 changed bsn numbers 
-  p_verify_nof_blocks : PROCESS(dp_clk, in_sosi, rx_block_cnt, rx_prev_bsn, rx_bsn, rx_hdr_fields_raw, test_offload_sosi)
+  p_verify_nof_blocks : PROCESS(dp_clk)
   BEGIN
     IF rising_edge(dp_clk) THEN
       IF init_ram_done = '1' THEN
@@ -355,7 +354,7 @@ BEGIN
 
         rx_data_id <= TO_UINT(rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_data_id") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_data_id")));
         IF test_offload_sosi.eop = '1' THEN
-          ASSERT rx_data_id = rx_block_cnt REPORT "wrong block count number, received data_id not same as counted blocks" SEVERITY ERROR;
+          ASSERT rx_data_id = rx_block_cnt + c_sdp_S_pn * gn_index REPORT "wrong block count number, received data_id not same as counted blocks" SEVERITY ERROR;
         END IF;
 
       END IF;
-- 
GitLab