diff --git a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd
index b2160e3ac4fc414a0bf0f0b4698365b583de9701..512e44428bfef575e28ad1f8289af9f5250cb426 100644
--- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd
+++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd
@@ -148,6 +148,17 @@ package tb_sdp_pkg is
   function func_sdp_undo_transpose_beamlet_packet(packet_list : t_sdp_beamlet_packet_list) return t_sdp_beamlet_packet_list;
 
   -- Read beamlet packet octets per re and im parts
+  procedure proc_sdp_rx_beamlet_octets(
+      constant c_nof_blocks_per_packet  : in natural;
+      signal   clk                      : in std_logic;
+      signal   rx_beamlet_sosi          : in t_dp_sosi;
+      signal   rx_beamlet_cnt           : inout natural;
+      signal   rx_beamlet_valid         : out std_logic;
+      signal   rx_beamlet_arr_re        : out t_sdp_beamlet_part_arr;
+      signal   rx_beamlet_arr_im        : out t_sdp_beamlet_part_arr;
+      signal   rx_packet_list_re        : out t_slv_8_arr;
+      signal   rx_packet_list_im        : out t_slv_8_arr);
+
   procedure proc_sdp_rx_beamlet_octets(
       signal clk               : in std_logic;
       signal rx_beamlet_sosi   : in t_dp_sosi;
@@ -628,21 +639,25 @@ package body tb_sdp_pkg is
   -- . Beamlets array is stored big endian in the data, so X.real index 0 first
   --   in MSByte of rx_beamlet_sosi.data.
   procedure proc_sdp_rx_beamlet_octets(
-      signal clk               : in std_logic;
-      signal rx_beamlet_sosi   : in t_dp_sosi;
-      signal rx_beamlet_cnt    : inout natural;
-      signal rx_beamlet_valid  : out std_logic;
-      signal rx_beamlet_arr_re : out t_sdp_beamlet_part_arr;
-      signal rx_beamlet_arr_im : out t_sdp_beamlet_part_arr;
-      signal rx_packet_list_re : out t_sdp_beamlet_packet_list;
-      signal rx_packet_list_im : out t_sdp_beamlet_packet_list) is
+      constant c_nof_blocks_per_packet  : in natural;
+      signal   clk                      : in std_logic;
+      signal   rx_beamlet_sosi          : in t_dp_sosi;
+      signal   rx_beamlet_cnt           : inout natural;
+      signal   rx_beamlet_valid         : out std_logic;
+      signal   rx_beamlet_arr_re        : out t_sdp_beamlet_part_arr;  -- [0:3]
+      signal   rx_beamlet_arr_im        : out t_sdp_beamlet_part_arr;  -- [0:3]
+      signal   rx_packet_list_re        : out t_slv_8_arr;  -- [0:c_list_len - 1]
+      signal   rx_packet_list_im        : out t_slv_8_arr) is
+    constant c_nof_beamlets_per_packet  : natural := c_nof_blocks_per_packet * c_sdp_cep_nof_beamlets_per_block;
+    constant c_nof_longwords_per_packet : natural := c_nof_beamlets_per_packet / c_sdp_nof_beamlets_per_longword;
+    constant c_list_len                 : natural := c_nof_beamlets_per_packet * c_sdp_N_pol_bf;
   begin
     rx_beamlet_cnt <= 0;
     rx_beamlet_valid <= '0';
     -- Wait until start of a beamlet packet
     proc_common_wait_until_high(clk, rx_beamlet_sosi.sop);
     -- c_sdp_nof_beamlets_per_longword = 2 dual pol beamlets (= XY, XY) per 64b data word
-    for I in 0 to (c_sdp_cep_nof_beamlets_per_packet / c_sdp_nof_beamlets_per_longword) - 1 loop
+    for I in 0 to c_nof_longwords_per_packet - 1 loop
       proc_common_wait_until_high(clk, rx_beamlet_sosi.valid);
       rx_beamlet_valid <= '1';
       -- Capture rx beamlets per longword in rx_beamlet_arr, for time series view in Wave window
@@ -669,8 +684,29 @@ package body tb_sdp_pkg is
       -- contains no WAIT statement.
       wait until rising_edge(clk);
       rx_beamlet_valid <= '0';
-      rx_beamlet_cnt   <= (rx_beamlet_cnt + c_sdp_nof_beamlets_per_longword) mod c_sdp_cep_nof_beamlets_per_block;  -- 4 blocks/packet
+      rx_beamlet_cnt   <= (rx_beamlet_cnt + c_sdp_nof_beamlets_per_longword) mod c_sdp_cep_nof_beamlets_per_block;
     end loop;
   end proc_sdp_rx_beamlet_octets;
 
+  procedure proc_sdp_rx_beamlet_octets(
+      signal clk               : in std_logic;
+      signal rx_beamlet_sosi   : in t_dp_sosi;
+      signal rx_beamlet_cnt    : inout natural;
+      signal rx_beamlet_valid  : out std_logic;
+      signal rx_beamlet_arr_re : out t_sdp_beamlet_part_arr;
+      signal rx_beamlet_arr_im : out t_sdp_beamlet_part_arr;
+      signal rx_packet_list_re : out t_sdp_beamlet_packet_list;
+      signal rx_packet_list_im : out t_sdp_beamlet_packet_list) is
+  begin
+    proc_sdp_rx_beamlet_octets(
+      c_sdp_cep_nof_blocks_per_packet,  -- 4 blocks/packet
+      clk,
+      rx_beamlet_sosi,
+      rx_beamlet_cnt,
+      rx_beamlet_valid ,
+      rx_beamlet_arr_re,
+      rx_beamlet_arr_im,
+      rx_packet_list_re,
+      rx_packet_list_im);
+  end proc_sdp_rx_beamlet_octets;
 end tb_sdp_pkg;