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 1e531e7fa1293dfe17b0eef885a839c5e43741a1..acf78513cfbfc511eed89265f978d49568bd9d06 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd
@@ -102,6 +102,7 @@ ARCHITECTURE str OF node_sdp_correlator IS
   SIGNAL quant_sosi_arr                : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
   SIGNAL dp_bsn_sync_scheduler_src_out : t_dp_sosi := c_dp_sosi_rst;
   SIGNAL xsel_sosi                     : t_dp_sosi := c_dp_sosi_rst;
+  SIGNAL xsel_data_sosi                : t_dp_sosi := c_dp_sosi_rst;
   SIGNAL local_sosi                    : t_dp_sosi := c_dp_sosi_rst;
 
   SIGNAL ring_mux_sosi                 : t_dp_sosi := c_dp_sosi_rst;
@@ -172,6 +173,14 @@ BEGIN
   ---------------------------------------------------------------
   -- Repack 32b to 64b 
   ---------------------------------------------------------------
+  -- repacking xsel re/im to data field.
+  p_wire_xsel_sosi : PROCESS(xsel_sosi)
+  BEGIN
+    xsel_data_sosi <= xsel_sosi;
+    xsel_data_sosi.data(                c_sdp_W_crosslet -1 DOWNTO 0)                <= xsel_sosi.re(c_sdp_W_crosslet-1 DOWNTO 0);
+    xsel_data_sosi.data(c_nof_complex * c_sdp_W_crosslet -1 DOWNTO c_sdp_W_crosslet) <= xsel_sosi.im(c_sdp_W_crosslet-1 DOWNTO 0);
+  END PROCESS;
+
   u_dp_repack_data_local : ENTITY dp_lib.dp_repack_data
   GENERIC MAP (
     g_in_dat_w      => c_data_w,
@@ -183,7 +192,7 @@ BEGIN
     rst => dp_rst,
     clk => dp_clk,
 
-    snk_in  => xsel_sosi,
+    snk_in  => xsel_data_sosi,
     src_out => local_sosi
   );
 
@@ -248,20 +257,21 @@ BEGIN
   -- dp_bsn_aligner_v2 
   ---------------------------------------------------------------
   u_mmp_dp_bsn_align_v2 : ENTITY dp_lib.mmp_dp_bsn_align_v2
-    GENERIC MAP(
+  GENERIC MAP(
     -- for dp_bsn_align_v2
     g_nof_streams             => g_P_sq,    
     g_bsn_latency_max         => 2,    
     g_nof_aligners_max        => c_sdp_N_pn_max,    
     g_block_size              => c_block_size,    
     g_data_w                  => c_data_w,    
-    g_use_mm_output           => TRUE,    
+    g_use_mm_output           => TRUE,   
+    g_rd_latency              => 1, -- Required for st_xst 
     -- for mms_dp_bsn_monitor_v2
     g_nof_clk_per_sync        => c_sdp_N_clk_sync_timeout, -- Using c_sdp_N_clk_sync_timeout as g_nof_clk_per_sync is used for BSN monitor timeout.
     g_nof_input_bsn_monitors  => g_P_sq,  
     g_use_bsn_output_monitor  => TRUE  
     )
-    PORT MAP (
+  PORT MAP (
     -- Memory-mapped clock domain
     mm_rst                  => mm_rst, 
     mm_clk                  => mm_clk, 
@@ -288,8 +298,7 @@ BEGIN
     mm_sosi     => crosslets_sosi,            
     mm_copi     => crosslets_copi,            
     mm_cipo_arr => crosslets_cipo_arr            
-
-    );
+  );
 
   ---------------------------------------------------------------
   -- Crosslets Statistics (XST) 
diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_crosslets_subband_select.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_crosslets_subband_select.vhd
index b945f7d6941896b98ec58077718a4450a3fb239a..1b4d1753f9c49ad38b28390d1df7906969393848 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_crosslets_subband_select.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_crosslets_subband_select.vhd
@@ -262,7 +262,7 @@ BEGIN
   u_reorder_col_wide_select : ENTITY reorder_lib.reorder_col_wide_select
   GENERIC MAP (
     g_nof_inputs         => c_sdp_P_pfb,
-    g_dsp_data_w         => c_sdp_W_subband,
+    g_dsp_data_w         => c_sdp_W_crosslet,
     g_nof_ch_in          => c_sdp_N_sub * c_sdp_Q_fft,
     g_nof_ch_sel         => g_N_crosslets * c_sdp_S_pn
   )
@@ -282,7 +282,7 @@ BEGIN
   
   u_reorder_row_select : ENTITY reorder_lib.reorder_row_select
   GENERIC MAP (
-    g_dsp_data_w         => c_sdp_W_subband,
+    g_dsp_data_w         => c_sdp_W_crosslet,
     g_nof_inputs         => c_sdp_P_pfb,
     g_nof_outputs        => 1,
     g_pipeline_in        => 0, 
diff --git a/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd b/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
index a3e0ace3aedcb902ec76e9223b5c99dabe351994..7de022f5ddf319ca778a479bd3eef82fe24e54fc 100644
--- a/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
+++ b/libraries/base/dp/src/vhdl/dp_bsn_align_v2.vhd
@@ -243,7 +243,8 @@ BEGIN
         -- . set address at start of block
         w.blk_pointer_slv := in_sosi_arr_p(I).bsn(c_blk_pointer_w-1 DOWNTO 0);
         w.product_slv := MULT_UVEC(w.blk_pointer_slv, c_block_size_slv);
-        v.wr_copi_arr(I).address := RESIZE_MEM_ADDRESS(w.product_slv);
+        -- . resize to c_mem_ram.adr_w
+        v.wr_copi_arr(I).address := RESIZE_MEM_ADDRESS(RESIZE_UVEC(w.product_slv, c_mem_ram.adr_w));
 
         -- . set filled flag at sop, so assume rest of block will follow in time
         v.filled_arr(I)(TO_UINT(w.blk_pointer_slv)) := '1';
diff --git a/libraries/base/dp/src/vhdl/mmp_dp_bsn_align_v2.vhd b/libraries/base/dp/src/vhdl/mmp_dp_bsn_align_v2.vhd
index e18047afe4322bab4ac2b2909e2ab21350987c4b..9264f91ca8b5305724128ed4b0f6415693a8edb1 100644
--- a/libraries/base/dp/src/vhdl/mmp_dp_bsn_align_v2.vhd
+++ b/libraries/base/dp/src/vhdl/mmp_dp_bsn_align_v2.vhd
@@ -106,7 +106,7 @@ ARCHITECTURE str OF mmp_dp_bsn_align_v2 IS
   --   init_sl   : STD_LOGIC;  -- optional, init all dat words to std_logic '0', '1' or 'X'
   CONSTANT c_mm_reg       : t_c_mem := (1, ceil_log2(g_nof_streams), 1, g_nof_streams, '0');
 
-  SIGNAL reg_wr           : STD_LOGIC_VECTOR(c_mm_reg.nof_dat*c_mm_reg.dat_w-1 DOWNTO 0);
+  SIGNAL reg_wr           : STD_LOGIC_VECTOR(c_mm_reg.nof_dat*c_mm_reg.dat_w-1 DOWNTO 0) := (OTHERS => '1');
   SIGNAL stream_en_arr    : STD_LOGIC_VECTOR(g_nof_streams-1 DOWNTO 0);
 
   SIGNAL ref_sync         : STD_LOGIC;
@@ -121,7 +121,8 @@ BEGIN
   GENERIC MAP (
     g_cross_clock_domain   => TRUE,
     g_readback             => FALSE,
-    g_reg                  => c_mm_reg
+    g_reg                  => c_mm_reg,
+    g_init_reg             => (OTHERS => '1')
   )
   PORT MAP (
     -- Clocks and reset
diff --git a/libraries/base/dp/tb/vhdl/tb_dp_bsn_align_v2.vhd b/libraries/base/dp/tb/vhdl/tb_dp_bsn_align_v2.vhd
index 30f6a9475042ae14f1f04d2c064b0fa4d32fe4c5..283ce58b977b232b389d13637a4c934bc03c9404 100644
--- a/libraries/base/dp/tb/vhdl/tb_dp_bsn_align_v2.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_dp_bsn_align_v2.vhd
@@ -130,13 +130,19 @@ ARCHITECTURE tb OF tb_dp_bsn_align_v2 IS
 
   -- Return input delay as function of inputs stream index I
   FUNCTION func_input_delay(I : NATURAL) RETURN NATURAL IS
+    VARIABLE v : NATURAL;
   BEGIN
-    RETURN c_diff_delay * I / (g_nof_streams - 1);
+    IF g_nof_streams > 1 THEN
+      v := c_diff_delay * I / (g_nof_streams - 1);
+    ELSE
+      v := 0;
+    END IF;
+    RETURN v;
   END;
 
   CONSTANT c_gap_size                 : NATURAL := g_block_period - g_block_size;
 
-  CONSTANT c_lost_bsn_stream_id       : NATURAL := 1;  -- fixed use stream 1 to verify g_lost_bsn_id
+  CONSTANT c_lost_bsn_stream_id       : NATURAL := sel_a_b(g_nof_streams > 1, 1, 0);  -- fixed use stream 1 to verify g_lost_bsn_id. Use 0 for g_nof_streams = 1.
 
   -- In the tb only support MM interface verification for c_nof_aligners_max = 1
   CONSTANT c_nof_aligners_max  : POSITIVE := sel_a_b(g_use_mm_output, 1, g_nof_aligners_max);
diff --git a/libraries/base/dp/tb/vhdl/tb_tb_dp_bsn_align_v2.vhd b/libraries/base/dp/tb/vhdl/tb_tb_dp_bsn_align_v2.vhd
index dfafc97e2fe1d57c9ac1f2b90e5816792ca92c9d..fce4f84c0dcbae62bc86693567443469f4657586 100644
--- a/libraries/base/dp/tb/vhdl/tb_tb_dp_bsn_align_v2.vhd
+++ b/libraries/base/dp/tb/vhdl/tb_tb_dp_bsn_align_v2.vhd
@@ -66,7 +66,9 @@ BEGIN
   -- g_tb_nof_blocks        : NATURAL := 10       -- number of input blocks per restart
 
   u_mm_output               : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (2, 1, 1, c_block, c_period, 32, 16, 17, 0, 0,  0,  TRUE, 0, 0, 1,  0, 2, c_nof_blk);
+  u_mm_output_single        : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (1, 1, 1, c_block, c_period, 32, 16, 17, 0, 0,  0,  TRUE, 0, 0, 1,  0, 2, c_nof_blk);
   u_dp_output               : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (2, 1, 1, c_block, c_period, 32, 16, 17, 0, 0,  0, FALSE, 0, 0, 1,  0, 2, c_nof_blk);
+  u_dp_output_single        : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (1, 1, 1, c_block, c_period, 32, 16, 17, 0, 0,  0, FALSE, 0, 0, 1,  0, 2, c_nof_blk);
   u_dp_output_p1            : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (2, 1, 1, c_block, c_period, 32, 16, 17, 0, 0,  0, FALSE, 1, 1, 1,  0, 2, c_nof_blk);
   u_bsn_lat_max_2           : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (2, 2, 1, c_block, c_period, 32, 16, 17, 0, 0,  0, FALSE, 0, 0, 1,  0, 2, c_nof_blk);
   u_bsn_lat_max_3           : ENTITY work.tb_dp_bsn_align_v2 GENERIC MAP (2, 3, 1, c_block, c_period, 32, 16, 17, 0, 0,  0, FALSE, 0, 0, 1,  0, 2, c_nof_blk);
diff --git a/libraries/dsp/st/src/vhdl/st_xsq_dp_to_mm.vhd b/libraries/dsp/st/src/vhdl/st_xsq_dp_to_mm.vhd
index 7b67d8e2083c598fa3645c48d5ddc7032bb9869c..805f2d1d78dec50b458b7187dc977e3da4a114d5 100644
--- a/libraries/dsp/st/src/vhdl/st_xsq_dp_to_mm.vhd
+++ b/libraries/dsp/st/src/vhdl/st_xsq_dp_to_mm.vhd
@@ -59,18 +59,10 @@ ARCHITECTURE rtl OF st_xsq_dp_to_mm IS
   SIGNAL ram_wr_mosi   :  t_mem_mosi := c_mem_mosi_rst;
 
   SIGNAL reg_sosi_info : t_dp_sosi := c_dp_sosi_rst;
-  SIGNAL in_sosi_rewired : t_dp_sosi := c_dp_sosi_rst;
   SIGNAL next_page : STD_LOGIC;
 
 BEGIN
 
-  p_in_sosi : PROCESS(in_sosi)
-  BEGIN
-    in_sosi_rewired <= in_sosi;
-    in_sosi_rewired.data(                g_dsp_data_w -1 DOWNTO 0)            <= in_sosi.re(g_dsp_data_w-1 DOWNTO 0);
-    in_sosi_rewired.data(c_nof_complex * g_dsp_data_w -1 DOWNTO g_dsp_data_w) <= in_sosi.im(g_dsp_data_w-1 DOWNTO 0);
-  END PROCESS;
-
   u_dp_block_to_mm : ENTITY dp_lib.dp_block_to_mm
   GENERIC MAP(
     g_data_size => 1,
@@ -82,7 +74,7 @@ BEGIN
     clk => clk,
     start_address => 0,
     mm_mosi => ram_wr_mosi,
-    in_sosi => in_sosi_rewired
+    in_sosi => in_sosi
   );
 
   u_common_paged_ram_r_w : ENTITY common_lib.common_paged_ram_r_w