diff --git a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd index ec24c83918eb1cd71388cd8aa2b027afaf2f438a..03f715308242a93f66576406a97ecc7148d20e3d 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd @@ -89,11 +89,19 @@ END node_sdp_correlator; ARCHITECTURE str OF node_sdp_correlator IS - CONSTANT c_nof_controllers : POSITIVE := 2; - CONSTANT c_block_size : NATURAL := c_sdp_N_crosslets_max * c_sdp_S_pn; - CONSTANT c_data_w : NATURAL := c_sdp_W_crosslet * c_nof_complex; - CONSTANT c_mux_fifo_size : NATURAL := 2**ceil_log2(g_P_sq * c_block_size); -- Large enough to store a block for each remote packet. - CONSTANT c_fifo_fill_size : NATURAL := 2**ceil_log2(3 * c_block_size); + CONSTANT c_nof_controllers : POSITIVE := 2; + CONSTANT c_block_size : NATURAL := c_sdp_N_crosslets_max * c_sdp_S_pn; + CONSTANT c_block_size_longwords : NATURAL := ceil_div(c_block_size, 2); -- 32b -> 64b + CONSTANT c_data_w : NATURAL := c_sdp_W_crosslet * c_nof_complex; + +-- The size for 1 block is probably already enough as the number of blocks received +-- on the remote input of the mux probably have enough gap time in between. Just +-- to be sure to not run into issues in the future, the fifo size is increased to +-- buffer the maximum nof blocks per block period. + CONSTANT c_mux_fifo_size : NATURAL := 2**ceil_log2(g_P_sq * c_block_size_longwords); +-- c_fifo_fill_size should be at least 2 * c_block_size_longwords as dp_repack_data +-- repacks from 64bit to 32bit. Chosing 3x to have some room. + CONSTANT c_fifo_fill_size : NATURAL := 2**ceil_log2(3 * c_block_size_longwords); -- crosslet statistics offload SIGNAL ram_st_offload_copi : t_mem_copi := c_mem_copi_rst; @@ -246,7 +254,7 @@ BEGIN g_use_channel => TRUE, g_use_error => TRUE, g_use_sync => TRUE, - g_fifo_fill => c_block_size, + g_fifo_fill => c_block_size_longwords, g_fifo_size => c_fifo_fill_size ) PORT MAP (