diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_bdo_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_bdo_pkg.vhd index e33f2166ab48f8e3c6b0c3ba91232a8b110323fb..33df8e23bce60049b8e93a075628e96df6a7e400 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_bdo_pkg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_bdo_pkg.vhd @@ -59,11 +59,21 @@ package sdp_bdo_pkg is -- nof_destinations > 1 and how many block RAM resources are available for -- the reordering. Therefore c_sdp_bdo_reorder_nof_blocks_max = 16 is a -- suitable compromise value. - constant c_sdp_bdo_reorder_nof_blocks_max : natural := 16; + -- Conclusion: + -- . Choose c_sdp_bdo_reorder_nof_blocks_max = 4 to save block RAM resources, + -- and because it is acceptable to have smaller packets in case of more + -- than 4 destinations. Note that the reorder buffer is dual page. + -- . Choose nof_bdo_destinations_max = 8 in design revision, because it is + -- enough for CEP and to save logic resources and to ease timing closure. + -- Remark: + -- . The c_sdp_bdo_reorder_nof_blocks_max must be <= + -- nof_bdo_destinations_max, because otherwise this probably caused + -- Quartus synthesis to yield an segmentation error. + constant c_sdp_bdo_reorder_nof_blocks_max : natural := 4; constant c_sdp_bdo_reorder_nof_blocks_w : natural := ceil_log2(c_sdp_bdo_reorder_nof_blocks_max + 1); constant c_sdp_bdo_reorder_nof_ch_max : natural := c_sdp_bdo_reorder_nof_blocks_max * c_sdp_nof_beamlets_per_block * - c_sdp_nof_words_per_beamlet; -- = 7808 + c_sdp_nof_words_per_beamlet; -- = 4 * 488 * 1 = 1952 32b -- 32 * 3 + 4 = 100 fields constant c_sdp_bdo_destinations_info_nof_hdr_fields : natural := c_sdp_bdo_mm_nof_destinations_max * 3 + 4;