From 8972aa654e4ca56b2c2585e8973f7cfaff7084a2 Mon Sep 17 00:00:00 2001
From: Eric Kooistra <kooistra@astron.nl>
Date: Wed, 15 Dec 2021 13:21:57 +0100
Subject: [PATCH] Prepare support for g_user_size in dp_block_from_mm_dc.vhd
 and rename g_data_w into g_word_w.

---
 .../lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd | 3 +++
 libraries/base/dp/src/vhdl/dp_block_from_mm_dc.vhd           | 5 +++++
 libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd               | 3 ++-
 libraries/base/dp/tb/vhdl/tb_dp_block_from_mm.vhd            | 4 ++++
 libraries/base/dp/tb/vhdl/tb_dp_bsn_align_v2.vhd             | 3 ++-
 5 files changed, 16 insertions(+), 2 deletions(-)

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 97525368d3..e3e4d130f1 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
@@ -106,6 +106,7 @@ ARCHITECTURE str OF sdp_statistics_offload IS
   CONSTANT c_beamlet_id                : NATURAL := g_beamset_id * c_sdp_S_sub_bf;
 
   -- MM access settings per packet for u_dp_block_from_mm_dc
+  CONSTANT c_mm_user_size              : NATURAL := func_sdp_get_stat_from_mm_data_size(g_statistics_type);
   CONSTANT c_mm_data_size              : NATURAL := func_sdp_get_stat_from_mm_data_size(g_statistics_type);
   CONSTANT c_mm_step_size              : NATURAL := func_sdp_get_stat_from_mm_step_size(g_statistics_type);
   CONSTANT c_mm_nof_data               : NATURAL := func_sdp_get_stat_from_mm_nof_data(g_statistics_type);
@@ -386,9 +387,11 @@ BEGIN
   
   u_dp_block_from_mm_dc : ENTITY dp_lib.dp_block_from_mm_dc
   GENERIC MAP (
+    g_user_size          => c_mm_user_size,
     g_data_size          => c_mm_data_size,
     g_step_size          => c_mm_step_size,
     g_nof_data           => c_mm_nof_data,
+    g_word_w             => c_word_w,
     g_reverse_word_order => g_reverse_word_order
   ) 
   PORT MAP(
diff --git a/libraries/base/dp/src/vhdl/dp_block_from_mm_dc.vhd b/libraries/base/dp/src/vhdl/dp_block_from_mm_dc.vhd
index cdf640ced4..0ac01ec489 100644
--- a/libraries/base/dp/src/vhdl/dp_block_from_mm_dc.vhd
+++ b/libraries/base/dp/src/vhdl/dp_block_from_mm_dc.vhd
@@ -24,6 +24,7 @@
 --   this is a dual-clock wrapper around dp_block_from_mm.vhd 
 -- Description:
 -- . https://support.astron.nl/confluence/display/L2M/L5+SDPFW+Design+Document%3A+Subband+filterbank
+-- . see dp_block_from_mm.vhd
 -- --------------------------------------------------------------------------
 
 LIBRARY IEEE,common_lib;
@@ -35,9 +36,11 @@ USE work.dp_stream_pkg.ALL;
 
 ENTITY dp_block_from_mm_dc IS
   GENERIC (
+    g_user_size          : NATURAL;
     g_data_size          : NATURAL;
     g_step_size          : NATURAL;
     g_nof_data           : NATURAL;
+    g_word_w             : NATURAL := c_word_w;
     g_reverse_word_order : BOOLEAN := FALSE
   ); 
   PORT (
@@ -135,9 +138,11 @@ BEGIN
 
   u_dp_block_from_mm : ENTITY work.dp_block_from_mm
   GENERIC MAP (
+    g_user_size          => g_user_size,
     g_data_size          => g_data_size,
     g_step_size          => g_step_size,
     g_nof_data           => g_nof_data,
+    g_word_w             => g_word_w,
     g_reverse_word_order => g_reverse_word_order 
   )
   PORT MAP (
diff --git a/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd b/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
index e94cd4efd0..20ca5fa3b0 100644
--- a/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
+++ b/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
@@ -418,10 +418,11 @@ BEGIN
     gen_mm_to_dp : FOR I IN 0 TO g_nof_streams-1 GENERATE
       u_mm_to_dp: ENTITY work.dp_block_from_mm
       GENERIC MAP (
+        g_user_size          => 1,
         g_data_size          => 1,
         g_step_size          => 1,
         g_nof_data           => g_block_size,
-        g_data_w             => g_data_w,
+        g_word_w             => g_data_w,
         g_mm_rd_latency      => g_rd_latency,
         g_reverse_word_order => FALSE
       )
diff --git a/libraries/base/dp/tb/vhdl/tb_dp_block_from_mm.vhd b/libraries/base/dp/tb/vhdl/tb_dp_block_from_mm.vhd
index d139f3759e..3212862289 100644
--- a/libraries/base/dp/tb/vhdl/tb_dp_block_from_mm.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_dp_block_from_mm.vhd
@@ -33,6 +33,9 @@
 --   . p_verify_read, set ram address (using g_data_size and g_step_size) to check and
 --     read value from ram, also set expected ram value.
 --   . p_verify_check, check if ram_value is equal to expected value. 
+--
+-- Remark:
+-- . g_user_size and g_reverse_word_order are verified in tb_sdp_statistics_offload.vhd
 -- --------------------------------------------------------------------------
 
 -- > as 10
@@ -222,6 +225,7 @@ BEGIN
   -- DUT, dp_block_from_mm
   u_dp_block_from_mm: ENTITY work.dp_block_from_mm
   GENERIC MAP (
+    g_user_size => g_data_size,
     g_data_size => g_data_size,
     g_step_size => g_step_size,
     g_nof_data  => g_nof_data
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 1c464c468c..30f6a94750 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
@@ -603,10 +603,11 @@ BEGIN
     gen_mm_to_dp : FOR I IN 0 TO g_nof_streams-1 GENERATE
       u_mm_to_dp: ENTITY work.dp_block_from_mm
       GENERIC MAP (
+        g_user_size          => 1,
         g_data_size          => 1,
         g_step_size          => 1,
         g_nof_data           => g_block_size,
-        g_data_w             => g_data_w,
+        g_word_w             => g_data_w,
         g_mm_rd_latency      => g_rd_latency,
         g_reverse_word_order => FALSE
       )
-- 
GitLab