diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd
index d12b7783bb7d960b402db1a5896280f4e4c1409a..688042034a72ccd9de6c174478ae02b121eb4516 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_output.vhd
@@ -92,18 +92,31 @@ architecture str of sdp_beamformer_output is
   constant c_fifo_size      : natural := true_log_pow2(c_sdp_cep_payload_nof_longwords) * c_sdp_N_beamsets;  -- 2048
 
   -- Reorder c_nof_ch = c_nof_ch_sel = c_nof_ch_in
-  constant c_nof_ch         : natural := c_sdp_S_sub_bf * c_sdp_cep_nof_blocks_per_packet;
+  constant c_nof_blocks_per_packet : natural := c_sdp_cep_nof_blocks_per_packet;  -- = 4
+  constant c_nof_data_per_block    : natural := c_sdp_S_sub_bf;  -- = 488 dual pol beamlets
+  constant c_nof_words_per_data    : natural := 1;  -- 1 dual pol beamlet data per 32b word
+  constant c_nof_ch                : natural := c_nof_blocks_per_packet * c_nof_data_per_block * c_nof_words_per_data;  -- = 1952
+
+  -- Use c_transpose_indices and c_transpose_indices_inv for debug view in Objects window.
+  -- Use c_transpose_indices for func_reorder_transpose() in this sdp_beamformer_output,
+  -- a tb can then use c_transpose_indices_inv to undo the transpose.
+  constant c_transpose_indices     : t_natural_arr(0 to c_nof_ch - 1) :=
+                                       func_reorder_transpose_indices(c_nof_blocks_per_packet,
+                                                                      c_nof_data_per_block,
+                                                                      c_nof_words_per_data);
+  constant c_transpose_indices_inv : t_natural_arr(0 to c_nof_ch - 1) :=
+                                       func_reorder_transpose_indices(c_nof_data_per_block,
+                                                                      c_nof_blocks_per_packet,
+                                                                      c_nof_words_per_data);
 
   -- Dynamic reorder block size control input
-  -- . The data consists of 1 word = 1 ch, because 1 word contains 1 dual pol
-  --   beamlet.
-  -- . The input packet has nof_ch = nof_data_per_block * nof_blocks_per_packet
-  --   of data per packet.
+  -- . The data consists of 1 word = 1 ch, because 1 word contains 1 dual pol  beamlet.
+  -- . The input packet has nof_ch of data per packet.
   -- . The transposed output packet will have blocks with nof_blocks_per_packet
   --   data per block and nof_data_per_block blocks per packet.
   signal nof_ch                : natural := c_nof_ch;
-  signal nof_data_per_block    : natural := c_sdp_S_sub_bf;
-  signal nof_blocks_per_packet : natural := c_sdp_cep_nof_blocks_per_packet;
+  signal nof_blocks_per_packet : natural := c_nof_blocks_per_packet;
+  signal nof_data_per_block    : natural := c_nof_data_per_block;
   signal select_copi           : t_mem_copi := c_mem_copi_rst;
   signal select_cipo           : t_mem_cipo := c_mem_cipo_rst;
   signal r_identity            : t_reorder_identity;
@@ -175,11 +188,11 @@ begin
         -- first block.
         v_ref_time := NOW;
         -- Offset the v_ref_time to the second block of the
-        -- c_sdp_cep_nof_blocks_per_packet = 4 blocks that will be merged.
+        -- c_nof_blocks_per_packet = 4 blocks that will be merged.
         v_ref_time := v_ref_time + c_sdp_block_period * 1 ns;
       end if;
-    elsif NOW > v_ref_time + 1 * c_sdp_cep_nof_blocks_per_packet * c_sdp_block_period * 1 ns and
-          NOW < v_ref_time + 4 * c_sdp_cep_nof_blocks_per_packet * c_sdp_block_period * 1 ns then
+    elsif NOW > v_ref_time + 1 * c_nof_blocks_per_packet * c_sdp_block_period * 1 ns and
+          NOW < v_ref_time + 4 * c_nof_blocks_per_packet * c_sdp_block_period * 1 ns then
       -- Disturb BSN to cause merged payload error. Expected results for the
       -- merged blocks:
       -- . index 0 : First merged block bsn ok and payload_error = '0'.
@@ -231,7 +244,7 @@ begin
   -----------------------------------------------------------------------------
   u_dp_packet_merge : entity dp_lib.dp_packet_merge
   generic map(
-    g_nof_pkt       => c_sdp_cep_nof_blocks_per_packet,
+    g_nof_pkt       => c_nof_blocks_per_packet,
     g_bsn_increment => 1
   )
   port map(
@@ -322,12 +335,12 @@ begin
   end process;
 
   p_reorder_transpose : process(dp_rst, select_cipo,
-                                nof_data_per_block, nof_blocks_per_packet, r_transpose)
+                                nof_blocks_per_packet, nof_data_per_block, r_transpose)
     variable v : t_reorder_transpose;
   begin
     if select_cipo.waitrequest = '0' then
       -- Read from reorder_col_select page
-      v := func_reorder_transpose(nof_data_per_block, nof_blocks_per_packet, r_transpose);
+      v := func_reorder_transpose(nof_blocks_per_packet, nof_data_per_block, r_transpose);
     else
       -- No read, new reorder_col_select page not available yet
       v := c_reorder_transpose_rst;