From b331f7efb7ce74e20183f496acb5f976d05a22bd Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Thu, 3 Nov 2022 07:30:27 +0100 Subject: [PATCH] Use no default raw width, to force instance to set it. --- .../libraries/sdp/src/vhdl/node_sdp_correlator.vhd | 5 +++-- .../libraries/sdp/src/vhdl/sdp_beamformer_local.vhd | 12 ++++++++++-- .../lofar2/libraries/sdp/src/vhdl/sdp_bf_weights.vhd | 3 ++- .../libraries/sdp/src/vhdl/sdp_subband_equalizer.vhd | 5 +++-- 4 files changed, 18 insertions(+), 7 deletions(-) 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 fcab7aaaea..0acf498e35 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd @@ -45,8 +45,9 @@ ENTITY node_sdp_correlator IS g_sim : BOOLEAN := FALSE; g_sim_sdp : t_sdp_sim := c_sdp_sim; g_P_sq : NATURAL := c_sdp_P_sq; - g_subband_raw_dat_w : NATURAL := c_sdp_W_subband; - g_subband_raw_fraction_w : NATURAL := 0 + -- Use no default raw width, to force instance to set it + g_subband_raw_dat_w : NATURAL; -- default: c_sdp_W_subband; + g_subband_raw_fraction_w : NATURAL -- default: 0 ); PORT ( dp_clk : IN STD_LOGIC; diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_local.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_local.vhd index 6ed1dfde59..f37a393d3e 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_local.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_local.vhd @@ -40,8 +40,9 @@ USE work.sdp_pkg.ALL; ENTITY sdp_beamformer_local IS GENERIC ( g_bf_weights_file_name : STRING := "UNUSED"; - g_raw_dat_w : NATURAL := c_sdp_W_subband; - g_raw_fraction_w : NATURAL := 0 + -- Use no default raw width, to force instance to set it + g_raw_dat_w : NATURAL; -- default: c_sdp_W_subband; + g_raw_fraction_w : NATURAL -- default: 0 ); PORT ( dp_clk : IN STD_LOGIC; @@ -66,6 +67,13 @@ ARCHITECTURE str OF sdp_beamformer_local IS -- Product width, do -1 to skip double sign bit in product CONSTANT c_product_w : NATURAL := c_sdp_W_bf_weight + g_raw_dat_w - 1; + + -- With BF adder wrapping a c_complex_adder_sum_w = c_sdp_W_beamlet_sum is + -- in fact enough, because the MSbit will be simply removed. However, + -- it is fine to use wider BF adder, because the extra MSbits will likely + -- be optimized away by synthesis. If instead BF adder clipping was used + -- then it would be necessary to keep the extra bits, to avoid wrapping of + -- the sum. CONSTANT c_complex_adder_sum_w : NATURAL := c_product_w + ceil_log2(c_sdp_S_pn); SIGNAL sub_sosi_arr : t_dp_sosi_arr(c_sdp_N_pol_bf*c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst); diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_bf_weights.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_bf_weights.vhd index 9f52c63883..bb4d4cb9b5 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_bf_weights.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_bf_weights.vhd @@ -44,7 +44,8 @@ USE work.sdp_pkg.ALL; ENTITY sdp_bf_weights IS GENERIC ( g_gains_file_name : STRING := "UNUSED"; - g_raw_dat_w : NATURAL + -- Use no default raw width, to force instance to set it + g_raw_dat_w : NATURAL -- default: c_sdp_W_subband; ); PORT ( dp_clk : IN STD_LOGIC; diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_subband_equalizer.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_subband_equalizer.vhd index 6282d804b9..69f6daea58 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_subband_equalizer.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_subband_equalizer.vhd @@ -46,8 +46,9 @@ ENTITY sdp_subband_equalizer IS GENERIC ( g_gains_file_name : STRING := "UNUSED"; g_nof_streams : NATURAL := c_sdp_P_pfb; - g_raw_dat_w : NATURAL := c_sdp_W_subband; - g_raw_fraction_w : NATURAL := 0 + -- Use no default raw width, to force instance to set it + g_raw_dat_w : NATURAL; -- default: c_sdp_W_subband; + g_raw_fraction_w : NATURAL -- default: 0 ); PORT ( dp_clk : IN STD_LOGIC; -- GitLab