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 d84f73d36b3aa9e40ad46423df5a9c748285ea2d..355c337f364c42b2314e5c459a79d17a64388b52 100644
--- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd
+++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_pkg.vhd
@@ -105,6 +105,22 @@ package tb_sdp_pkg is
                                nof_rem : natural)
                                return t_real_arr;  -- 0:3 = ampl, phase, re, im
 
+  -----------------------------------------------------------------------------
+  -- Beamlet output packet
+  -----------------------------------------------------------------------------
+  -- beamlet part index in longword [0 : 3] = X, Y, X, Y
+  subtype t_sdp_beamlet_longword_list is t_slv_8_arr(0 to c_sdp_cep_nof_beamlets_per_longword * c_sdp_N_pol_bf - 1);
+
+  -- beamlet part index in packet [0 : 4 * 488 * 2 - 1] = [0 : 3903]
+  subtype t_sdp_beamlet_packet_list is t_slv_8_arr(0 to c_sdp_cep_nof_beamlets_per_packet * c_sdp_N_pol_bf - 1);
+
+  -- beamlet part index in block [0 : 488 * 2 - 1] =  [0 : 975]
+  subtype t_sdp_beamlet_block_list is t_slv_8_arr(0 to c_sdp_cep_nof_beamlets_per_block * c_sdp_N_pol_bf - 1);
+
+  function func_sdp_transpose_packet(nof_blocks_per_packet : natural;
+                                     nof_beamlets_per_block : natural;
+                                     packet_list : t_sdp_beamlet_packet_list) return t_sdp_beamlet_packet_list;
+
 end package tb_sdp_pkg;
 
 package body tb_sdp_pkg is
@@ -475,4 +491,29 @@ package body tb_sdp_pkg is
     return v_tuple;
   end;
 
+  -- input packet_list:
+  -- . blk       0,     1,     2,     3,  for nof_blocks_per_packet = 4
+  -- . blet  0:487, 0:487, 0:487, 0:487,  for nof_beamlets_per_block = 488
+  -- . v_in  0,1,2, ...            1951
+  -- return v_list = transposed packet_list:
+  --             0,   1, ..., 487
+  --           0:3, 0:3, ..., 0:3
+  --         0,488,976,1464, 1,489,977,1465, ..., 487,975,1463,1951
+  -- . v_out 0,4,8,...,1948, 1,5,9,...,1949, 2,6,10,...,1950, 3,7,11,...,1951
+  function func_sdp_transpose_packet(nof_blocks_per_packet : natural;
+                                     nof_beamlets_per_block : natural;
+                                     packet_list : t_sdp_beamlet_packet_list) return t_sdp_beamlet_packet_list is
+    variable v_list : t_sdp_beamlet_packet_list;
+    variable v_in   : natural;
+    variable v_out  : natural;
+  begin
+    for blk in 0 to nof_blocks_per_packet - 1 loop
+      for blet in 0 to nof_beamlets_per_block - 1 loop
+        v_in := blk * nof_beamlets_per_block + blet;
+        v_out := blet * nof_blocks_per_packet + blk;
+        v_list(v_out) := packet_list(v_in);
+      end loop;
+   end loop;
+  end func_sdp_transpose_packet;
+
 end tb_sdp_pkg;