From 8fd627f5230c62403c5fc62d32ce4825fbad6afb Mon Sep 17 00:00:00 2001
From: Eric Kooistra <kooistra@astron.nl>
Date: Tue, 26 Mar 2024 13:53:01 +0100
Subject: [PATCH] Correct nof_dat in RAM circular buffer size.

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

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 1db302c2c2..e61f67f6d1 100644
--- a/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
+++ b/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
@@ -173,18 +173,20 @@ architecture rtl of dp_bsn_align_v2 is
            true_log_pow2(1 + g_bsn_latency_max),
            true_log_pow2(1 + g_bsn_latency_max * (g_nof_aligners_max - 1) + g_bsn_latency_first_node));
 
-  constant c_ram_size       : natural := c_buffer_nof_blocks * g_block_size;
+  constant c_ram_size_w     : natural := ceil_log2(c_buffer_nof_blocks * g_block_size);
+  constant c_ram_size       : natural := 2**c_ram_size_w;
   constant c_ram_buf        : t_c_mem := (latency  => 1,
-                                          adr_w    => ceil_log2(c_ram_size),
+                                          adr_w    => c_ram_size_w,
                                           dat_w    => g_data_w,
                                           nof_dat  => c_ram_size,
                                           init_sl  => '0');
 
   -- . reduced buffer size for remote input
   constant c_remote_buffer_nof_blocks  : natural := true_log_pow2(1 + g_bsn_latency_max);
-  constant c_remote_ram_size           : natural := c_remote_buffer_nof_blocks * g_block_size;
+  constant c_remote_ram_size_w         : natural := ceil_log2(c_remote_buffer_nof_blocks * g_block_size);
+  constant c_remote_ram_size           : natural := 2**c_remote_ram_size_w;
   constant c_remote_ram_buf            : t_c_mem := (latency  => 1,
-                                                     adr_w    => ceil_log2(c_remote_ram_size),
+                                                     adr_w    => c_remote_ram_size_w,
                                                      dat_w    => g_data_w,
                                                      nof_dat  => c_remote_ram_size,
                                                      init_sl  => '0');
-- 
GitLab