From c5cd568df90487867fea888a1690c1cde416f67b Mon Sep 17 00:00:00 2001
From: Erik Kooistra <kooistra@astron.nl>
Date: Tue, 24 Jul 2018 10:07:18 +0000
Subject: [PATCH] Store 64 visibility packets in DB output to fit all channels
 for one beamlet (as supported in r 18616 apertif_unb1_correlator_full).

---
 .../vhdl/node_apertif_unb1_correlator_output.vhd    | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/node_apertif_unb1_correlator_output.vhd b/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/node_apertif_unb1_correlator_output.vhd
index 16d068a68d..fcf3739739 100644
--- a/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/node_apertif_unb1_correlator_output.vhd
+++ b/applications/apertif/designs/apertif_unb1_correlator/src/vhdl/node_apertif_unb1_correlator_output.vhd
@@ -91,12 +91,21 @@ ARCHITECTURE str OF node_apertif_unb1_correlator_output IS
   -- Output DB
   CONSTANT c_vis_header_size                         : NATURAL := 21;  -- (pad(2) + eth(14) + ip(20) + udp(8) + app_id(16) + app_flags(24)) / 4 = 84 bytes / 4 = 21 words
   CONSTANT c_vis_payload_size                        : NATURAL := c_nof_complex*g_nof_visibilities;
-  CONSTANT c_vis_packet_size                         : NATURAL := c_vis_header_size + c_vis_payload_size;
+  CONSTANT c_vis_packet_size                         : NATURAL := c_vis_header_size + c_vis_payload_size;  -- = 21 + 600 = 621
   CONSTANT c_vis_nof_packets_per_sync                : NATURAL := g_nof_beamlets * g_nof_channels;
   CONSTANT c_vis_nof_data_per_sync                   : NATURAL := c_vis_nof_packets_per_sync * c_vis_packet_size;
-  CONSTANT c_db_nof_data_hw                          : NATURAL := 1024;    -- on HW at least 1 packet (21 header + 600 payload words)
+  CONSTANT c_vis_nof_data_per_beamlet                : NATURAL := g_nof_channels * c_vis_packet_size;  -- = 64 * 621 = 39744
+  CONSTANT c_db_nof_data_hw                          : NATURAL := ceil_value(c_vis_nof_data_per_beamlet, 1024);  -- = 39 * 1024 = 39936, on HW at least 64 packets to fit all channels for one beamlet
+  --CONSTANT c_db_nof_data_hw                          : NATURAL := ceil_value(c_vis_packet_size, 1024);    -- = 1024, on HW at least 1 packet (21 header + 600 payload words)
   CONSTANT c_db_nof_data_sim                         : NATURAL := c_vis_nof_data_per_sync;  -- in sim at least one sync interval
   CONSTANT c_db_nof_data                             : NATURAL := sel_a_b(g_sim, c_db_nof_data_sim, c_db_nof_data_hw);
+
+  -- load tb_apertif_unb1_correlator_full, as 8, to see value of dbg_c_db_nof_data_hw on hardware
+  SIGNAL dbg_c_vis_packet_size                       : NATURAL := c_vis_packet_size;
+  SIGNAL dbg_c_vis_nof_data_per_beamlet              : NATURAL := c_vis_nof_data_per_beamlet;
+  SIGNAL dbg_c_db_nof_data_hw                        : NATURAL := c_db_nof_data_hw;
+  SIGNAL dbg_c_db_nof_data_sim                       : NATURAL := c_db_nof_data_sim;
+  SIGNAL dbg_c_db_nof_data                           : NATURAL := c_db_nof_data;
   
   SIGNAL db_sosi_arr                                 : t_dp_sosi_arr(0 DOWNTO 0);
   SIGNAL db_data                                     : STD_LOGIC_VECTOR(c_32-1 DOWNTO 0);
-- 
GitLab