diff --git a/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/lofar2_unb2c_sdp_station.vhd b/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/lofar2_unb2c_sdp_station.vhd
index 7387bca849337e7924e0195584bcf60694162277..a93c20be86985f9cc4251fc7c507b0a47d3aa413 100644
--- a/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/lofar2_unb2c_sdp_station.vhd
+++ b/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/lofar2_unb2c_sdp_station.vhd
@@ -307,6 +307,16 @@ ARCHITECTURE str OF lofar2_unb2c_sdp_station IS
   SIGNAL ram_bf_weights_copi        : t_mem_copi := c_mem_copi_rst;
   SIGNAL ram_bf_weights_cipo        : t_mem_cipo := c_mem_cipo_rst;
 
+  -- BF bsn aligner_v2
+  SIGNAL reg_bsn_align_v2_bf_copi   : t_mem_copi := c_mem_copi_rst;
+  SIGNAL reg_bsn_align_v2_bf_cipo   : t_mem_cipo := c_mem_cipo_rst;
+   
+  -- BF bsn aligner_v2 bsn monitors
+  SIGNAL reg_bsn_monitor_v2_rx_align_bf_copi : t_mem_copi := c_mem_copi_rst;
+  SIGNAL reg_bsn_monitor_v2_rx_align_bf_cipo : t_mem_cipo := c_mem_cipo_rst;
+  SIGNAL reg_bsn_monitor_v2_aligned_bf_copi  : t_mem_copi := c_mem_copi_rst;
+  SIGNAL reg_bsn_monitor_v2_aligned_bf_cipo  : t_mem_cipo := c_mem_cipo_rst;
+
   -- mms_dp_scale Scale Beamlets
   SIGNAL reg_bf_scale_copi          : t_mem_copi := c_mem_copi_rst;
   SIGNAL reg_bf_scale_cipo          : t_mem_cipo := c_mem_cipo_rst;
@@ -323,6 +333,25 @@ ARCHITECTURE str OF lofar2_unb2c_sdp_station IS
   SIGNAL ram_st_bst_copi            : t_mem_copi := c_mem_copi_rst;
   SIGNAL ram_st_bst_cipo            : t_mem_cipo := c_mem_cipo_rst;
 
+  -- BF ring lane info
+  SIGNAL  reg_ring_lane_info_bf_copi                 : t_mem_copi := c_mem_copi_rst;
+  SIGNAL  reg_ring_lane_info_bf_cipo                 : t_mem_cipo := c_mem_cipo_rst;
+
+  -- BF ring bsn monitor rx 
+  SIGNAL  reg_bsn_monitor_v2_ring_rx_bf_copi         : t_mem_copi := c_mem_copi_rst;
+  SIGNAL  reg_bsn_monitor_v2_ring_rx_bf_cipo         : t_mem_cipo := c_mem_cipo_rst;
+
+  -- BF ring bsn monitor tx 
+  SIGNAL  reg_bsn_monitor_v2_ring_tx_bf_copi         : t_mem_copi := c_mem_copi_rst;
+  SIGNAL  reg_bsn_monitor_v2_ring_tx_bf_cipo         : t_mem_cipo := c_mem_cipo_rst;
+
+  -- BF ring validate err 
+  SIGNAL  reg_dp_block_validate_err_bf_copi          : t_mem_copi := c_mem_copi_rst;
+  SIGNAL  reg_dp_block_validate_err_bf_cipo          : t_mem_cipo := c_mem_cipo_rst;
+
+  -- BF ring bsn at sync 
+  SIGNAL  reg_dp_block_validate_bsn_at_sync_bf_copi  : t_mem_copi := c_mem_copi_rst;
+  SIGNAL  reg_dp_block_validate_bsn_at_sync_bf_cipo  : t_mem_cipo := c_mem_cipo_rst;
   ----------------------------------------------
   -- SST 
   ----------------------------------------------
@@ -341,22 +370,22 @@ ARCHITECTURE str OF lofar2_unb2c_sdp_station IS
   -- XST 
   ----------------------------------------------
   -- Statistics Enable
-  SIGNAL reg_stat_enable_xst_copi       : t_mem_copi;
-  SIGNAL reg_stat_enable_xst_cipo       : t_mem_cipo;
+  SIGNAL reg_stat_enable_xst_copi    : t_mem_copi;
+  SIGNAL reg_stat_enable_xst_cipo    : t_mem_cipo;
   
   -- Statistics header info  
-  SIGNAL reg_stat_hdr_dat_xst_copi      : t_mem_copi;
-  SIGNAL reg_stat_hdr_dat_xst_cipo      : t_mem_cipo;
+  SIGNAL reg_stat_hdr_dat_xst_copi   : t_mem_copi;
+  SIGNAL reg_stat_hdr_dat_xst_cipo   : t_mem_cipo;
 
   -- XST bsn aligner_v2
-  SIGNAL  reg_bsn_align_v2_copi                       : t_mem_copi;
-  SIGNAL  reg_bsn_align_v2_cipo                       : t_mem_cipo;
+  SIGNAL  reg_bsn_align_v2_xsub_copi : t_mem_copi;
+  SIGNAL  reg_bsn_align_v2_xsub_cipo : t_mem_cipo;
    
   -- XST bsn aligner_v2 bsn monitors
-  SIGNAL  reg_bsn_monitor_v2_bsn_align_v2_input_copi  : t_mem_copi;
-  SIGNAL  reg_bsn_monitor_v2_bsn_align_v2_input_cipo  : t_mem_cipo;
-  SIGNAL  reg_bsn_monitor_v2_bsn_align_v2_output_copi : t_mem_copi;
-  SIGNAL  reg_bsn_monitor_v2_bsn_align_v2_output_cipo : t_mem_cipo;
+  SIGNAL reg_bsn_monitor_v2_rx_align_xsub_copi : t_mem_copi := c_mem_copi_rst;
+  SIGNAL reg_bsn_monitor_v2_rx_align_xsub_cipo : t_mem_cipo := c_mem_cipo_rst;
+  SIGNAL reg_bsn_monitor_v2_aligned_xsub_copi  : t_mem_copi := c_mem_copi_rst;
+  SIGNAL reg_bsn_monitor_v2_aligned_xsub_cipo  : t_mem_cipo := c_mem_cipo_rst;
 
   -- XST UDP offload bsn monitor
   SIGNAL  reg_bsn_monitor_v2_xst_offload_copi         : t_mem_copi;
@@ -664,7 +693,23 @@ BEGIN
     reg_dp_xonoff_copi                           => reg_dp_xonoff_copi,         
     reg_dp_xonoff_cipo                           => reg_dp_xonoff_cipo,         
     ram_st_bst_copi                              => ram_st_bst_copi,            
-    ram_st_bst_cipo                              => ram_st_bst_cipo,            
+    ram_st_bst_cipo                              => ram_st_bst_cipo,       
+    reg_bsn_align_v2_bf_copi                     => reg_bsn_align_v2_bf_copi, 
+    reg_bsn_align_v2_bf_cipo                     => reg_bsn_align_v2_bf_cipo, 
+    reg_bsn_monitor_v2_rx_align_bf_copi          => reg_bsn_monitor_v2_rx_align_bf_copi, 
+    reg_bsn_monitor_v2_rx_align_bf_cipo          => reg_bsn_monitor_v2_rx_align_bf_cipo, 
+    reg_bsn_monitor_v2_aligned_bf_copi           => reg_bsn_monitor_v2_aligned_bf_copi, 
+    reg_bsn_monitor_v2_aligned_bf_cipo           => reg_bsn_monitor_v2_aligned_bf_cipo, 
+    reg_ring_lane_info_bf_copi                   => reg_ring_lane_info_bf_copi, 
+    reg_ring_lane_info_bf_cipo                   => reg_ring_lane_info_bf_cipo, 
+    reg_bsn_monitor_v2_ring_rx_bf_copi           => reg_bsn_monitor_v2_ring_rx_bf_copi, 
+    reg_bsn_monitor_v2_ring_rx_bf_cipo           => reg_bsn_monitor_v2_ring_rx_bf_cipo, 
+    reg_bsn_monitor_v2_ring_tx_bf_copi           => reg_bsn_monitor_v2_ring_tx_bf_copi, 
+    reg_bsn_monitor_v2_ring_tx_bf_cipo           => reg_bsn_monitor_v2_ring_tx_bf_cipo, 
+    reg_dp_block_validate_err_bf_copi            => reg_dp_block_validate_err_bf_copi, 
+    reg_dp_block_validate_err_bf_cipo            => reg_dp_block_validate_err_bf_cipo, 
+    reg_dp_block_validate_bsn_at_sync_bf_copi    => reg_dp_block_validate_bsn_at_sync_bf_copi, 
+    reg_dp_block_validate_bsn_at_sync_bf_cipo    => reg_dp_block_validate_bsn_at_sync_bf_cipo, 
     reg_nw_10GbE_mac_copi                        => reg_nw_10GbE_mac_copi,      
     reg_nw_10GbE_mac_cipo                        => reg_nw_10GbE_mac_cipo,      
     reg_nw_10GbE_eth10g_copi                     => reg_nw_10GbE_eth10g_copi,   
@@ -689,12 +734,12 @@ BEGIN
     reg_nof_crosslets_cipo                       => reg_nof_crosslets_cipo, 
     reg_bsn_sync_scheduler_xsub_copi             => reg_bsn_sync_scheduler_xsub_copi, 
     reg_bsn_sync_scheduler_xsub_cipo             => reg_bsn_sync_scheduler_xsub_cipo,
-    reg_bsn_align_v2_copi                        => reg_bsn_align_v2_copi, 
-    reg_bsn_align_v2_cipo                        => reg_bsn_align_v2_cipo, 
-    reg_bsn_monitor_v2_bsn_align_v2_input_copi   => reg_bsn_monitor_v2_bsn_align_v2_input_copi, 
-    reg_bsn_monitor_v2_bsn_align_v2_input_cipo   => reg_bsn_monitor_v2_bsn_align_v2_input_cipo, 
-    reg_bsn_monitor_v2_bsn_align_v2_output_copi  => reg_bsn_monitor_v2_bsn_align_v2_output_copi, 
-    reg_bsn_monitor_v2_bsn_align_v2_output_cipo  => reg_bsn_monitor_v2_bsn_align_v2_output_cipo, 
+    reg_bsn_align_v2_xsub_copi                   => reg_bsn_align_v2_xsub_copi, 
+    reg_bsn_align_v2_xsub_cipo                   => reg_bsn_align_v2_xsub_cipo, 
+    reg_bsn_monitor_v2_rx_align_xsub_copi        => reg_bsn_monitor_v2_rx_align_xsub_copi, 
+    reg_bsn_monitor_v2_rx_align_xsub_cipo        => reg_bsn_monitor_v2_rx_align_xsub_cipo, 
+    reg_bsn_monitor_v2_aligned_xsub_copi         => reg_bsn_monitor_v2_aligned_xsub_copi, 
+    reg_bsn_monitor_v2_aligned_xsub_cipo         => reg_bsn_monitor_v2_aligned_xsub_cipo, 
     reg_bsn_monitor_v2_xst_offload_copi          => reg_bsn_monitor_v2_xst_offload_copi, 
     reg_bsn_monitor_v2_xst_offload_cipo          => reg_bsn_monitor_v2_xst_offload_cipo, 
     reg_bsn_monitor_v2_bst_offload_copi          => reg_bsn_monitor_v2_bst_offload_copi, 
@@ -839,7 +884,23 @@ BEGIN
     reg_dp_xonoff_cipo          => reg_dp_xonoff_cipo,
     ram_st_bst_copi             => ram_st_bst_copi,
     ram_st_bst_cipo             => ram_st_bst_cipo,
-                                                               
+    reg_bsn_align_v2_bf_copi    => reg_bsn_align_v2_bf_copi,
+    reg_bsn_align_v2_bf_cipo    => reg_bsn_align_v2_bf_cipo, 
+    reg_bsn_monitor_v2_rx_align_bf_copi => reg_bsn_monitor_v2_rx_align_bf_copi, 
+    reg_bsn_monitor_v2_rx_align_bf_cipo => reg_bsn_monitor_v2_rx_align_bf_cipo, 
+    reg_bsn_monitor_v2_aligned_bf_copi  => reg_bsn_monitor_v2_aligned_bf_copi, 
+    reg_bsn_monitor_v2_aligned_bf_cipo  => reg_bsn_monitor_v2_aligned_bf_cipo, 
+    reg_ring_lane_info_bf_copi          => reg_ring_lane_info_bf_copi, 
+    reg_ring_lane_info_bf_cipo          => reg_ring_lane_info_bf_cipo, 
+    reg_bsn_monitor_v2_ring_rx_bf_copi  => reg_bsn_monitor_v2_ring_rx_bf_copi, 
+    reg_bsn_monitor_v2_ring_rx_bf_cipo  => reg_bsn_monitor_v2_ring_rx_bf_cipo, 
+    reg_bsn_monitor_v2_ring_tx_bf_copi  => reg_bsn_monitor_v2_ring_tx_bf_copi, 
+    reg_bsn_monitor_v2_ring_tx_bf_cipo  => reg_bsn_monitor_v2_ring_tx_bf_cipo, 
+    reg_dp_block_validate_err_bf_copi   => reg_dp_block_validate_err_bf_copi, 
+    reg_dp_block_validate_err_bf_cipo   => reg_dp_block_validate_err_bf_cipo, 
+    reg_dp_block_validate_bsn_at_sync_bf_copi => reg_dp_block_validate_bsn_at_sync_bf_copi, 
+    reg_dp_block_validate_bsn_at_sync_bf_cipo => reg_dp_block_validate_bsn_at_sync_bf_cipo,          
+                                                   
     -- SST                         
     reg_stat_enable_sst_copi            => reg_stat_enable_sst_copi, 
     reg_stat_enable_sst_cipo            => reg_stat_enable_sst_cipo, 
@@ -854,12 +915,12 @@ BEGIN
     reg_stat_hdr_dat_xst_copi   => reg_stat_hdr_dat_xst_copi, 
     reg_stat_hdr_dat_xst_cipo   => reg_stat_hdr_dat_xst_cipo, 
       
-    reg_bsn_align_copi                         => reg_bsn_align_v2_copi, 
-    reg_bsn_align_cipo                         => reg_bsn_align_v2_cipo, 
-    reg_bsn_monitor_v2_bsn_align_input_copi    => reg_bsn_monitor_v2_bsn_align_v2_input_copi, 
-    reg_bsn_monitor_v2_bsn_align_input_cipo    => reg_bsn_monitor_v2_bsn_align_v2_input_cipo, 
-    reg_bsn_monitor_v2_bsn_align_output_copi   => reg_bsn_monitor_v2_bsn_align_v2_output_copi, 
-    reg_bsn_monitor_v2_bsn_align_output_cipo   => reg_bsn_monitor_v2_bsn_align_v2_output_cipo, 
+    reg_bsn_align_v2_xsub_copi                 => reg_bsn_align_v2_xsub_copi, 
+    reg_bsn_align_v2_xsub_cipo                 => reg_bsn_align_v2_xsub_cipo, 
+    reg_bsn_monitor_v2_rx_align_xsub_copi      => reg_bsn_monitor_v2_rx_align_xsub_copi, 
+    reg_bsn_monitor_v2_rx_align_xsub_cipo      => reg_bsn_monitor_v2_rx_align_xsub_cipo, 
+    reg_bsn_monitor_v2_aligned_xsub_copi       => reg_bsn_monitor_v2_aligned_xsub_copi, 
+    reg_bsn_monitor_v2_aligned_xsub_cipo       => reg_bsn_monitor_v2_aligned_xsub_cipo, 
     reg_bsn_monitor_v2_xst_offload_copi        => reg_bsn_monitor_v2_xst_offload_copi, 
     reg_bsn_monitor_v2_xst_offload_cipo        => reg_bsn_monitor_v2_xst_offload_cipo, 
     reg_ring_lane_info_xst_copi                => reg_ring_lane_info_xst_copi, 
diff --git a/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/mmm_lofar2_unb2c_sdp_station.vhd b/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/mmm_lofar2_unb2c_sdp_station.vhd
index 3c9f5998dda3e2cd2b739a0c7035bd7e2b47f81a..97f4a99ab25b7dfc11817ebe70ba2d51c77b08ec 100644
--- a/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/mmm_lofar2_unb2c_sdp_station.vhd
+++ b/applications/lofar2/designs/lofar2_unb2c_sdp_station/src/vhdl/mmm_lofar2_unb2c_sdp_station.vhd
@@ -168,6 +168,16 @@ ENTITY mmm_lofar2_unb2c_sdp_station IS
    ram_bf_weights_copi            : OUT t_mem_copi;
    ram_bf_weights_cipo            : IN  t_mem_cipo;
 
+   -- BF bsn aligner_v2
+   reg_bsn_align_v2_bf_copi       : OUT t_mem_copi;
+   reg_bsn_align_v2_bf_cipo       : IN  t_mem_cipo;
+   
+   -- BF bsn aligner_v2 bsn monitors
+   reg_bsn_monitor_v2_rx_align_bf_copi : OUT t_mem_copi;
+   reg_bsn_monitor_v2_rx_align_bf_cipo : IN  t_mem_cipo;
+   reg_bsn_monitor_v2_aligned_bf_copi  : OUT t_mem_copi;
+   reg_bsn_monitor_v2_aligned_bf_cipo  : IN  t_mem_cipo;
+
    -- mms_dp_scale Scale Beamlets
    reg_bf_scale_copi              : OUT t_mem_copi;
    reg_bf_scale_cipo              : IN  t_mem_cipo;
@@ -180,6 +190,26 @@ ENTITY mmm_lofar2_unb2c_sdp_station IS
    reg_dp_xonoff_copi             : OUT t_mem_copi;
    reg_dp_xonoff_cipo             : IN  t_mem_cipo;
 
+   -- BF ring lane info
+   reg_ring_lane_info_bf_copi                 : OUT t_mem_copi;
+   reg_ring_lane_info_bf_cipo                 : IN  t_mem_cipo;
+
+   -- BF ring bsn monitor rx 
+   reg_bsn_monitor_v2_ring_rx_bf_copi         : OUT t_mem_copi;
+   reg_bsn_monitor_v2_ring_rx_bf_cipo         : IN  t_mem_cipo;
+
+   -- BF ring bsn monitor tx 
+   reg_bsn_monitor_v2_ring_tx_bf_copi         : OUT t_mem_copi;
+   reg_bsn_monitor_v2_ring_tx_bf_cipo         : IN  t_mem_cipo;
+
+   -- BF ring validate err 
+   reg_dp_block_validate_err_bf_copi          : OUT t_mem_copi;
+   reg_dp_block_validate_err_bf_cipo          : IN  t_mem_cipo;
+
+   -- BF ring bsn at sync 
+   reg_dp_block_validate_bsn_at_sync_bf_copi  : OUT t_mem_copi;
+   reg_dp_block_validate_bsn_at_sync_bf_cipo  : IN  t_mem_cipo;
+
    -- Beamlet Statistics (BST)
    ram_st_bst_copi                : OUT t_mem_copi;
    ram_st_bst_cipo                : IN  t_mem_cipo;
@@ -233,14 +263,14 @@ ENTITY mmm_lofar2_unb2c_sdp_station IS
    reg_nw_10GbE_eth10g_cipo       : IN  t_mem_cipo;
 
    -- XST bsn aligner_v2
-   reg_bsn_align_v2_copi          : OUT t_mem_copi;             
-   reg_bsn_align_v2_cipo          : IN  t_mem_cipo;             
+   reg_bsn_align_v2_xsub_copi                : OUT t_mem_copi;
+   reg_bsn_align_v2_xsub_cipo                : IN  t_mem_cipo;
    
    -- XST bsn aligner_v2 bsn monitors
-   reg_bsn_monitor_v2_bsn_align_v2_input_copi  : OUT t_mem_copi;             
-   reg_bsn_monitor_v2_bsn_align_v2_input_cipo  : IN  t_mem_cipo;             
-   reg_bsn_monitor_v2_bsn_align_v2_output_copi : OUT t_mem_copi;             
-   reg_bsn_monitor_v2_bsn_align_v2_output_cipo : IN  t_mem_cipo;             
+   reg_bsn_monitor_v2_rx_align_xsub_copi     : OUT t_mem_copi;
+   reg_bsn_monitor_v2_rx_align_xsub_cipo     : IN  t_mem_cipo;
+   reg_bsn_monitor_v2_aligned_xsub_copi      : OUT t_mem_copi;
+   reg_bsn_monitor_v2_aligned_xsub_cipo      : IN  t_mem_cipo;        
 
    -- XST UDP offload bsn monitor
    reg_bsn_monitor_v2_xst_offload_copi       : OUT t_mem_copi;             
@@ -428,40 +458,64 @@ BEGIN
                                                 PORT MAP(mm_rst, mm_clk, reg_nof_crosslets_copi, reg_nof_crosslets_cipo);
 
     u_mm_file_reg_bsn_sync_scheduler_xsub  : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_SYNC_SCHEDULER_XSUB")
-                                                PORT MAP(mm_rst, mm_clk, reg_bsn_sync_scheduler_xsub_copi, reg_bsn_sync_scheduler_xsub_cipo);
+                                                     PORT MAP(mm_rst, mm_clk, reg_bsn_sync_scheduler_xsub_copi, reg_bsn_sync_scheduler_xsub_cipo);
 
     u_mm_file_ram_st_xsq              : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_ST_XSQ")
                                                 PORT MAP(mm_rst, mm_clk, ram_st_xsq_copi, ram_st_xsq_cipo);
 
     u_mm_file_reg_nw_10GbE_mac        : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_NW_10GBE_MAC")
-                                               PORT MAP(mm_rst, mm_clk, reg_nw_10GbE_mac_copi, reg_nw_10GbE_mac_cipo );
+                                                PORT MAP(mm_rst, mm_clk, reg_nw_10GbE_mac_copi, reg_nw_10GbE_mac_cipo );
 
     u_mm_file_reg_nw_10GbE_eth10g     : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_NW_10GBE_ETH10G")
-                                               PORT MAP(mm_rst, mm_clk, reg_nw_10GbE_eth10g_copi, reg_nw_10GbE_eth10g_cipo );
+                                                PORT MAP(mm_rst, mm_clk, reg_nw_10GbE_eth10g_copi, reg_nw_10GbE_eth10g_cipo );
+
+    u_mm_file_reg_bsn_align_v2_bf     : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_ALIGN_V2_BF")
+                                                PORT MAP(mm_rst, mm_clk, reg_bsn_align_v2_bf_copi, reg_bsn_align_v2_bf_cipo );
 
-    u_mm_file_reg_bsn_align_v2         : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_ALIGN_V2")
-                                                PORT MAP(mm_rst, mm_clk, reg_bsn_align_v2_copi, reg_bsn_align_v2_cipo );
+    u_mm_file_reg_bsn_monitor_v2_rx_align_bf : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_RX_ALIGN_BF")
+                                                       PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_rx_align_bf_copi, reg_bsn_monitor_v2_rx_align_bf_cipo );
 
-    u_mm_file_reg_bsn_monitor_v2_bsn_align_v2_input : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_BSN_ALIGN_V2_INPUT")
-                                                           PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_bsn_align_v2_input_copi, reg_bsn_monitor_v2_bsn_align_v2_input_cipo );
+    u_mm_file_reg_bsn_monitor_v2_aligned_bf  : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_ALIGNED_BF")
+                                                       PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_aligned_bf_copi, reg_bsn_monitor_v2_aligned_bf_cipo );
 
-    u_mm_file_reg_bsn_monitor_v2_bsn_align_v2_output: mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_BSN_ALIGN_V2_OUTPUT")
-                                                           PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_bsn_align_v2_output_copi, reg_bsn_monitor_v2_bsn_align_v2_output_cipo );
+    u_mm_file_reg_ring_lane_info_bf          : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_RING_LANE_INFO_BF")
+                                                       PORT MAP(mm_rst, mm_clk, reg_ring_lane_info_bf_copi, reg_ring_lane_info_bf_cipo );
 
-    u_mm_file_reg_bsn_monitor_v2_sst_offload     : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_SST_OFFLOAD")
-                                                PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_sst_offload_copi, reg_bsn_monitor_v2_sst_offload_cipo );
+    u_mm_file_reg_bsn_monitor_v2_ring_rx_bf         : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_RING_RX_BF")
+                                                              PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_ring_rx_bf_copi, reg_bsn_monitor_v2_ring_rx_bf_cipo );
 
-    u_mm_file_reg_bsn_monitor_v2_bst_offload     : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_BST_OFFLOAD")
-                                                PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_bst_offload_copi, reg_bsn_monitor_v2_bst_offload_cipo );
+    u_mm_file_reg_bsn_monitor_v2_ring_tx_bf         : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_RING_TX_BF")
+                                                              PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_ring_tx_bf_copi, reg_bsn_monitor_v2_ring_tx_bf_cipo );
 
-    u_mm_file_reg_bsn_monitor_v2_beamlet_output  : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_BEAMLET_OUTPUT")
-                                                PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_beamlet_output_copi, reg_bsn_monitor_v2_beamlet_output_cipo );
+    u_mm_file_reg_dp_block_validate_err_bf          : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DP_BLOCK_VALIDATE_ERR_BF")
+                                                              PORT MAP(mm_rst, mm_clk, reg_dp_block_validate_err_bf_copi, reg_dp_block_validate_err_bf_cipo );
 
-    u_mm_file_reg_bsn_monitor_v2_xst_offload     : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_XST_OFFLOAD")
-                                                PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_xst_offload_copi, reg_bsn_monitor_v2_xst_offload_cipo );
+    u_mm_file_reg_dp_block_validate_bsn_at_sync_bf  : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DP_BLOCK_VALIDATE_BSN_AT_SYNC_BF")
+                                                              PORT MAP(mm_rst, mm_clk, reg_dp_block_validate_bsn_at_sync_bf_copi, reg_dp_block_validate_bsn_at_sync_bf_cipo );
 
-    u_mm_file_reg_ring_lane_info_xst  : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_RING_LANE_INFO_XST")
-                                                PORT MAP(mm_rst, mm_clk, reg_ring_lane_info_xst_copi, reg_ring_lane_info_xst_cipo );
+    u_mm_file_reg_bsn_align_v2_xsub                 : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_ALIGN_V2_XSUB")
+                                                              PORT MAP(mm_rst, mm_clk, reg_bsn_align_v2_xsub_copi, reg_bsn_align_v2_xsub_cipo );
+
+    u_mm_file_reg_bsn_monitor_v2_rx_align_xsub      : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_RX_ALIGN_XSUB")
+                                                              PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_rx_align_xsub_copi, reg_bsn_monitor_v2_rx_align_xsub_cipo );
+
+    u_mm_file_reg_bsn_monitor_v2_aligned_xsub       : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_ALIGNED_XSUB")
+                                                          PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_aligned_xsub_copi, reg_bsn_monitor_v2_aligned_xsub_cipo );
+
+    u_mm_file_reg_bsn_monitor_v2_sst_offload        : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_SST_OFFLOAD")
+                                                              PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_sst_offload_copi, reg_bsn_monitor_v2_sst_offload_cipo );
+
+    u_mm_file_reg_bsn_monitor_v2_bst_offload        : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_BST_OFFLOAD")
+                                                              PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_bst_offload_copi, reg_bsn_monitor_v2_bst_offload_cipo );
+
+    u_mm_file_reg_bsn_monitor_v2_beamlet_output     : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_BEAMLET_OUTPUT")
+                                                              PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_beamlet_output_copi, reg_bsn_monitor_v2_beamlet_output_cipo );
+
+    u_mm_file_reg_bsn_monitor_v2_xst_offload        : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_XST_OFFLOAD")
+                                                            PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_xst_offload_copi, reg_bsn_monitor_v2_xst_offload_cipo );
+
+    u_mm_file_reg_ring_lane_info_xst                : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_RING_LANE_INFO_XST")
+                                                              PORT MAP(mm_rst, mm_clk, reg_ring_lane_info_xst_copi, reg_ring_lane_info_xst_cipo );
 
     u_mm_file_reg_bsn_monitor_v2_ring_rx_xst        : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_BSN_MONITOR_V2_RING_RX_XST")
                                                               PORT MAP(mm_rst, mm_clk, reg_bsn_monitor_v2_ring_rx_xst_copi, reg_bsn_monitor_v2_ring_rx_xst_cipo );
@@ -482,7 +536,7 @@ BEGIN
                                                 PORT MAP(mm_rst, mm_clk, reg_tr_10GbE_eth10g_copi, reg_tr_10GbE_eth10g_cipo );
 
     u_mm_file_ram_scrap               : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_SCRAP")
-                                               PORT MAP(mm_rst, mm_clk, ram_scrap_copi, ram_scrap_cipo );
+                                                PORT MAP(mm_rst, mm_clk, ram_scrap_copi, ram_scrap_cipo );
     ----------------------------------------------------------------------------
     -- Procedure that polls a sim control file that can be used to e.g. get
     -- the simulation time in ns
@@ -920,29 +974,53 @@ BEGIN
       reg_nw_10GbE_eth10g_read_export           => reg_nw_10GbE_eth10g_copi.rd,
       reg_nw_10GbE_eth10g_readdata_export       => reg_nw_10GbE_eth10g_cipo.rddata(c_word_w-1 DOWNTO 0),
 
-      reg_bsn_align_v2_clk_export               => OPEN,
-      reg_bsn_align_v2_reset_export             => OPEN,
-      reg_bsn_align_v2_address_export           => reg_bsn_align_v2_copi.address(c_sdp_reg_bsn_align_v2_addr_w-1 DOWNTO 0),
-      reg_bsn_align_v2_write_export             => reg_bsn_align_v2_copi.wr,
-      reg_bsn_align_v2_writedata_export         => reg_bsn_align_v2_copi.wrdata(c_word_w-1 DOWNTO 0), 
-      reg_bsn_align_v2_read_export              => reg_bsn_align_v2_copi.rd,
-      reg_bsn_align_v2_readdata_export          => reg_bsn_align_v2_cipo.rddata(c_word_w-1 DOWNTO 0),
-
-      reg_bsn_monitor_v2_bsn_align_v2_input_clk_export       => OPEN,
-      reg_bsn_monitor_v2_bsn_align_v2_input_reset_export     => OPEN,
-      reg_bsn_monitor_v2_bsn_align_v2_input_address_export   => reg_bsn_monitor_v2_bsn_align_v2_input_copi.address(c_sdp_reg_bsn_monitor_v2_bsn_align_v2_input_addr_w-1 DOWNTO 0),
-      reg_bsn_monitor_v2_bsn_align_v2_input_write_export     => reg_bsn_monitor_v2_bsn_align_v2_input_copi.wr,
-      reg_bsn_monitor_v2_bsn_align_v2_input_writedata_export => reg_bsn_monitor_v2_bsn_align_v2_input_copi.wrdata(c_word_w-1 DOWNTO 0), 
-      reg_bsn_monitor_v2_bsn_align_v2_input_read_export      => reg_bsn_monitor_v2_bsn_align_v2_input_copi.rd,
-      reg_bsn_monitor_v2_bsn_align_v2_input_readdata_export  => reg_bsn_monitor_v2_bsn_align_v2_input_cipo.rddata(c_word_w-1 DOWNTO 0),
-
-      reg_bsn_monitor_v2_bsn_align_v2_output_clk_export      => OPEN,
-      reg_bsn_monitor_v2_bsn_align_v2_output_reset_export    => OPEN,
-      reg_bsn_monitor_v2_bsn_align_v2_output_address_export  => reg_bsn_monitor_v2_bsn_align_v2_output_copi.address(c_sdp_reg_bsn_monitor_v2_bsn_align_v2_output_addr_w-1 DOWNTO 0),
-      reg_bsn_monitor_v2_bsn_align_v2_output_write_export    => reg_bsn_monitor_v2_bsn_align_v2_output_copi.wr,
-      reg_bsn_monitor_v2_bsn_align_v2_output_writedata_export=> reg_bsn_monitor_v2_bsn_align_v2_output_copi.wrdata(c_word_w-1 DOWNTO 0), 
-      reg_bsn_monitor_v2_bsn_align_v2_output_read_export     => reg_bsn_monitor_v2_bsn_align_v2_output_copi.rd,
-      reg_bsn_monitor_v2_bsn_align_v2_output_readdata_export => reg_bsn_monitor_v2_bsn_align_v2_output_cipo.rddata(c_word_w-1 DOWNTO 0),
+      reg_bsn_align_v2_bf_clk_export          => OPEN,
+      reg_bsn_align_v2_bf_reset_export        => OPEN,
+      reg_bsn_align_v2_bf_address_export      => reg_bsn_align_v2_bf_copi.address(c_sdp_reg_bsn_align_v2_bf_addr_w-1 DOWNTO 0),
+      reg_bsn_align_v2_bf_write_export        => reg_bsn_align_v2_bf_copi.wr,
+      reg_bsn_align_v2_bf_writedata_export    => reg_bsn_align_v2_bf_copi.wrdata(c_word_w-1 DOWNTO 0), 
+      reg_bsn_align_v2_bf_read_export         => reg_bsn_align_v2_bf_copi.rd,
+      reg_bsn_align_v2_bf_readdata_export     => reg_bsn_align_v2_bf_cipo.rddata(c_word_w-1 DOWNTO 0),
+
+      reg_bsn_monitor_v2_rx_align_bf_clk_export       => OPEN,
+      reg_bsn_monitor_v2_rx_align_bf_reset_export     => OPEN,
+      reg_bsn_monitor_v2_rx_align_bf_address_export   => reg_bsn_monitor_v2_rx_align_bf_copi.address(c_sdp_reg_bsn_monitor_v2_rx_align_bf_addr_w-1 DOWNTO 0),
+      reg_bsn_monitor_v2_rx_align_bf_write_export     => reg_bsn_monitor_v2_rx_align_bf_copi.wr,
+      reg_bsn_monitor_v2_rx_align_bf_writedata_export => reg_bsn_monitor_v2_rx_align_bf_copi.wrdata(c_word_w-1 DOWNTO 0), 
+      reg_bsn_monitor_v2_rx_align_bf_read_export      => reg_bsn_monitor_v2_rx_align_bf_copi.rd,
+      reg_bsn_monitor_v2_rx_align_bf_readdata_export  => reg_bsn_monitor_v2_rx_align_bf_cipo.rddata(c_word_w-1 DOWNTO 0),
+
+      reg_bsn_monitor_v2_aligned_bf_clk_export       => OPEN,
+      reg_bsn_monitor_v2_aligned_bf_reset_export     => OPEN,
+      reg_bsn_monitor_v2_aligned_bf_address_export   => reg_bsn_monitor_v2_aligned_bf_copi.address(c_sdp_reg_bsn_monitor_v2_aligned_bf_addr_w-1 DOWNTO 0),
+      reg_bsn_monitor_v2_aligned_bf_write_export     => reg_bsn_monitor_v2_aligned_bf_copi.wr,
+      reg_bsn_monitor_v2_aligned_bf_writedata_export => reg_bsn_monitor_v2_aligned_bf_copi.wrdata(c_word_w-1 DOWNTO 0), 
+      reg_bsn_monitor_v2_aligned_bf_read_export      => reg_bsn_monitor_v2_aligned_bf_copi.rd,
+      reg_bsn_monitor_v2_aligned_bf_readdata_export  => reg_bsn_monitor_v2_aligned_bf_cipo.rddata(c_word_w-1 DOWNTO 0),
+
+      reg_bsn_align_v2_xsub_clk_export          => OPEN,
+      reg_bsn_align_v2_xsub_reset_export        => OPEN,
+      reg_bsn_align_v2_xsub_address_export      => reg_bsn_align_v2_xsub_copi.address(c_sdp_reg_bsn_align_v2_xsub_addr_w-1 DOWNTO 0),
+      reg_bsn_align_v2_xsub_write_export        => reg_bsn_align_v2_xsub_copi.wr,
+      reg_bsn_align_v2_xsub_writedata_export    => reg_bsn_align_v2_xsub_copi.wrdata(c_word_w-1 DOWNTO 0), 
+      reg_bsn_align_v2_xsub_read_export         => reg_bsn_align_v2_xsub_copi.rd,
+      reg_bsn_align_v2_xsub_readdata_export     => reg_bsn_align_v2_xsub_cipo.rddata(c_word_w-1 DOWNTO 0),
+
+      reg_bsn_monitor_v2_rx_align_xsub_clk_export       => OPEN,
+      reg_bsn_monitor_v2_rx_align_xsub_reset_export     => OPEN,
+      reg_bsn_monitor_v2_rx_align_xsub_address_export   => reg_bsn_monitor_v2_rx_align_xsub_copi.address(c_sdp_reg_bsn_monitor_v2_rx_align_xsub_addr_w-1 DOWNTO 0),
+      reg_bsn_monitor_v2_rx_align_xsub_write_export     => reg_bsn_monitor_v2_rx_align_xsub_copi.wr,
+      reg_bsn_monitor_v2_rx_align_xsub_writedata_export => reg_bsn_monitor_v2_rx_align_xsub_copi.wrdata(c_word_w-1 DOWNTO 0), 
+      reg_bsn_monitor_v2_rx_align_xsub_read_export      => reg_bsn_monitor_v2_rx_align_xsub_copi.rd,
+      reg_bsn_monitor_v2_rx_align_xsub_readdata_export  => reg_bsn_monitor_v2_rx_align_xsub_cipo.rddata(c_word_w-1 DOWNTO 0),
+
+      reg_bsn_monitor_v2_aligned_xsub_clk_export       => OPEN,
+      reg_bsn_monitor_v2_aligned_xsub_reset_export     => OPEN,
+      reg_bsn_monitor_v2_aligned_xsub_address_export   => reg_bsn_monitor_v2_aligned_xsub_copi.address(c_sdp_reg_bsn_monitor_v2_aligned_xsub_addr_w-1 DOWNTO 0),
+      reg_bsn_monitor_v2_aligned_xsub_write_export     => reg_bsn_monitor_v2_aligned_xsub_copi.wr,
+      reg_bsn_monitor_v2_aligned_xsub_writedata_export => reg_bsn_monitor_v2_aligned_xsub_copi.wrdata(c_word_w-1 DOWNTO 0), 
+      reg_bsn_monitor_v2_aligned_xsub_read_export      => reg_bsn_monitor_v2_aligned_xsub_copi.rd,
+      reg_bsn_monitor_v2_aligned_xsub_readdata_export  => reg_bsn_monitor_v2_aligned_xsub_cipo.rddata(c_word_w-1 DOWNTO 0),
 
       reg_bsn_monitor_v2_sst_offload_clk_export            => OPEN,
       reg_bsn_monitor_v2_sst_offload_reset_export          => OPEN,
@@ -976,6 +1054,46 @@ BEGIN
       reg_bsn_monitor_v2_xst_offload_read_export           => reg_bsn_monitor_v2_xst_offload_copi.rd,
       reg_bsn_monitor_v2_xst_offload_readdata_export       => reg_bsn_monitor_v2_xst_offload_cipo.rddata(c_word_w-1 DOWNTO 0),
 
+      reg_ring_lane_info_bf_clk_export               => OPEN,
+      reg_ring_lane_info_bf_reset_export             => OPEN,
+      reg_ring_lane_info_bf_address_export           => reg_ring_lane_info_bf_copi.address(c_sdp_reg_ring_lane_info_bf_addr_w-1 DOWNTO 0),
+      reg_ring_lane_info_bf_write_export             => reg_ring_lane_info_bf_copi.wr,
+      reg_ring_lane_info_bf_writedata_export         => reg_ring_lane_info_bf_copi.wrdata(c_word_w-1 DOWNTO 0), 
+      reg_ring_lane_info_bf_read_export              => reg_ring_lane_info_bf_copi.rd,
+      reg_ring_lane_info_bf_readdata_export          => reg_ring_lane_info_bf_cipo.rddata(c_word_w-1 DOWNTO 0),
+
+      reg_bsn_monitor_v2_ring_rx_bf_clk_export       => OPEN,
+      reg_bsn_monitor_v2_ring_rx_bf_reset_export     => OPEN,
+      reg_bsn_monitor_v2_ring_rx_bf_address_export   => reg_bsn_monitor_v2_ring_rx_bf_copi.address(c_sdp_reg_bsn_monitor_v2_ring_rx_bf_addr_w-1 DOWNTO 0),
+      reg_bsn_monitor_v2_ring_rx_bf_write_export     => reg_bsn_monitor_v2_ring_rx_bf_copi.wr,
+      reg_bsn_monitor_v2_ring_rx_bf_writedata_export => reg_bsn_monitor_v2_ring_rx_bf_copi.wrdata(c_word_w-1 DOWNTO 0), 
+      reg_bsn_monitor_v2_ring_rx_bf_read_export      => reg_bsn_monitor_v2_ring_rx_bf_copi.rd,
+      reg_bsn_monitor_v2_ring_rx_bf_readdata_export  => reg_bsn_monitor_v2_ring_rx_bf_cipo.rddata(c_word_w-1 DOWNTO 0),
+
+      reg_bsn_monitor_v2_ring_tx_bf_clk_export       => OPEN,
+      reg_bsn_monitor_v2_ring_tx_bf_reset_export     => OPEN,
+      reg_bsn_monitor_v2_ring_tx_bf_address_export   => reg_bsn_monitor_v2_ring_tx_bf_copi.address(c_sdp_reg_bsn_monitor_v2_ring_tx_bf_addr_w-1 DOWNTO 0),
+      reg_bsn_monitor_v2_ring_tx_bf_write_export     => reg_bsn_monitor_v2_ring_tx_bf_copi.wr,
+      reg_bsn_monitor_v2_ring_tx_bf_writedata_export => reg_bsn_monitor_v2_ring_tx_bf_copi.wrdata(c_word_w-1 DOWNTO 0), 
+      reg_bsn_monitor_v2_ring_tx_bf_read_export      => reg_bsn_monitor_v2_ring_tx_bf_copi.rd,
+      reg_bsn_monitor_v2_ring_tx_bf_readdata_export  => reg_bsn_monitor_v2_ring_tx_bf_cipo.rddata(c_word_w-1 DOWNTO 0),
+
+      reg_dp_block_validate_err_bf_clk_export       => OPEN,
+      reg_dp_block_validate_err_bf_reset_export     => OPEN,
+      reg_dp_block_validate_err_bf_address_export   => reg_dp_block_validate_err_bf_copi.address(c_sdp_reg_dp_block_validate_err_bf_addr_w-1 DOWNTO 0),
+      reg_dp_block_validate_err_bf_write_export     => reg_dp_block_validate_err_bf_copi.wr,
+      reg_dp_block_validate_err_bf_writedata_export => reg_dp_block_validate_err_bf_copi.wrdata(c_word_w-1 DOWNTO 0), 
+      reg_dp_block_validate_err_bf_read_export      => reg_dp_block_validate_err_bf_copi.rd,
+      reg_dp_block_validate_err_bf_readdata_export  => reg_dp_block_validate_err_bf_cipo.rddata(c_word_w-1 DOWNTO 0),
+
+      reg_dp_block_validate_bsn_at_sync_bf_clk_export       => OPEN,
+      reg_dp_block_validate_bsn_at_sync_bf_reset_export     => OPEN,
+      reg_dp_block_validate_bsn_at_sync_bf_address_export   => reg_dp_block_validate_bsn_at_sync_bf_copi.address(c_sdp_reg_dp_block_validate_bsn_at_sync_bf_addr_w-1 DOWNTO 0),
+      reg_dp_block_validate_bsn_at_sync_bf_write_export     => reg_dp_block_validate_bsn_at_sync_bf_copi.wr,
+      reg_dp_block_validate_bsn_at_sync_bf_writedata_export => reg_dp_block_validate_bsn_at_sync_bf_copi.wrdata(c_word_w-1 DOWNTO 0), 
+      reg_dp_block_validate_bsn_at_sync_bf_read_export      => reg_dp_block_validate_bsn_at_sync_bf_copi.rd,
+      reg_dp_block_validate_bsn_at_sync_bf_readdata_export  => reg_dp_block_validate_bsn_at_sync_bf_cipo.rddata(c_word_w-1 DOWNTO 0),
+
       reg_ring_lane_info_xst_clk_export         => OPEN,
       reg_ring_lane_info_xst_reset_export       => OPEN,
       reg_ring_lane_info_xst_address_export     => reg_ring_lane_info_xst_copi.address(c_sdp_reg_ring_lane_info_xst_addr_w-1 DOWNTO 0),
diff --git a/applications/lofar2/libraries/sdp/hdllib.cfg b/applications/lofar2/libraries/sdp/hdllib.cfg
index 20b9cf3d5a1a27bf384f3e33d35ee91ecd7e7705..380e327a6bc72885dc4b16121b43a70e32146aca 100644
--- a/applications/lofar2/libraries/sdp/hdllib.cfg
+++ b/applications/lofar2/libraries/sdp/hdllib.cfg
@@ -10,6 +10,7 @@ synth_files =
     src/vhdl/sdp_subband_equalizer.vhd 
     src/vhdl/sdp_bf_weights.vhd 
     src/vhdl/sdp_beamformer_local.vhd 
+    src/vhdl/sdp_beamformer_remote.vhd 
     src/vhdl/sdp_info_reg.vhd 
     src/vhdl/sdp_info.vhd 
     src/vhdl/sdp_beamformer_output.vhd 
diff --git a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_beamformer.vhd b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_beamformer.vhd
index ebe6a0d76da72e26fc87d3ca54549cac67ba3189..05b1eed4cada981d995f1a2c6692a4f2957acdcc 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_beamformer.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_beamformer.vhd
@@ -49,6 +49,8 @@ ENTITY node_sdp_beamformer IS
     dp_rst        : IN  STD_LOGIC;
 
     in_sosi_arr   : IN  t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0);
+    from_ri_sosi  : IN  t_dp_sosi;
+    to_ri_sosi    : OUT t_dp_sosi;
     bf_udp_sosi   : OUT t_dp_sosi;
     bf_udp_siso   : IN  t_dp_siso;
     bst_udp_sosi  : OUT t_dp_sosi;
@@ -73,10 +75,16 @@ ENTITY node_sdp_beamformer IS
     reg_stat_enable_miso  : OUT t_mem_miso;    
     reg_stat_hdr_dat_mosi : IN  t_mem_mosi := c_mem_mosi_rst;
     reg_stat_hdr_dat_miso : OUT t_mem_miso;
-    reg_bsn_monitor_v2_bst_offload_copi : IN  t_mem_copi := c_mem_copi_rst;
-    reg_bsn_monitor_v2_bst_offload_cipo : OUT t_mem_cipo;
-    reg_bsn_monitor_v2_beamlet_output_copi : IN  t_mem_copi := c_mem_copi_rst;
-    reg_bsn_monitor_v2_beamlet_output_cipo : OUT t_mem_cipo;
+    reg_bsn_align_copi    : IN  t_mem_copi := c_mem_copi_rst; 
+    reg_bsn_align_cipo    : OUT t_mem_cipo;
+    reg_bsn_monitor_v2_bsn_align_input_copi  : IN  t_mem_copi := c_mem_copi_rst; 
+    reg_bsn_monitor_v2_bsn_align_input_cipo  : OUT t_mem_cipo;
+    reg_bsn_monitor_v2_bsn_align_output_copi : IN  t_mem_copi := c_mem_copi_rst; 
+    reg_bsn_monitor_v2_bsn_align_output_cipo : OUT t_mem_cipo;
+    reg_bsn_monitor_v2_bst_offload_copi      : IN  t_mem_copi := c_mem_copi_rst;
+    reg_bsn_monitor_v2_bst_offload_cipo      : OUT t_mem_cipo;
+    reg_bsn_monitor_v2_beamlet_output_copi   : IN  t_mem_copi := c_mem_copi_rst;
+    reg_bsn_monitor_v2_beamlet_output_cipo   : OUT t_mem_cipo;
     sdp_info : IN t_sdp_info;
     gn_id    : IN STD_LOGIC_VECTOR(c_sdp_W_gn_id-1 DOWNTO 0);
 
@@ -169,8 +177,27 @@ BEGIN
   ---------------------------------------------------------------
   -- Remote BF
   ---------------------------------------------------------------
-  -- Not yet implemented
-  bf_sum_sosi <= local_bf_sosi;
+  u_sdp_beamformer_remote : ENTITY work.sdp_beamformer_remote
+  PORT MAP (
+    dp_rst             => dp_rst, 
+    dp_clk             => dp_clk, 
+    mm_rst             => mm_rst, 
+    mm_clk             => mm_clk, 
+
+    local_bf_sosi      => local_bf_sosi, 
+    from_ri_sosi       => from_ri_sosi, 
+    to_ri_sosi         => to_ri_sosi, 
+    bf_sum_sosi        => bf_sum_sosi, 
+
+    reg_bsn_align_copi => reg_bsn_align_copi, 
+    reg_bsn_align_cipo => reg_bsn_align_cipo, 
+
+    reg_bsn_monitor_v2_bsn_align_input_copi  => reg_bsn_monitor_v2_bsn_align_input_copi, 
+    reg_bsn_monitor_v2_bsn_align_input_cipo  => reg_bsn_monitor_v2_bsn_align_input_cipo, 
+
+    reg_bsn_monitor_v2_bsn_align_output_copi => reg_bsn_monitor_v2_bsn_align_output_copi, 
+    reg_bsn_monitor_v2_bsn_align_output_cipo => reg_bsn_monitor_v2_bsn_align_output_cipo 
+  );
 
   ---------------------------------------------------------------
   -- Scale Beamlets
@@ -260,7 +287,7 @@ BEGIN
     -- Streaming clock domain
     dp_rst         => dp_rst,
     dp_clk         => dp_clk,
-    ref_sync       => mon_bf_udp_sosi.sync, -- using in_sosi sync instead of udp_sosi as it has no sync.
+    ref_sync       => mon_bf_udp_sosi.sync, 
 
     in_sosi_arr(0) => mon_bf_udp_sosi
   );
diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_remote.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_remote.vhd
index 8bff66dd947afaa319f43fdfa3ab7998b8ad44d6..28ce5424a0bd5e346be59c23967b2f9555ddb797 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_remote.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_beamformer_remote.vhd
@@ -22,10 +22,9 @@
 --
 -- Author: R. van der Walle
 -- Purpose: 
--- . Implements the functionality of beamformer_local in node_sdp_beamformer.
+-- . Implements the functionality of beamformer_remote in node_sdp_beamformer.
 -- Description:
--- The local BF function weights the subbands from the S_pn signal inputs and 
--- adds them to form the local beamlet sum.
+-- The remote BF function adds the local and remote sums.
 -- Remark:
 -- .
 -------------------------------------------------------------------------------
@@ -38,57 +37,49 @@ USE dp_lib.dp_stream_pkg.ALL;
 USE work.sdp_pkg.ALL;
 
 ENTITY sdp_beamformer_remote IS
-  GENERIC (
-    g_bf_weights_file_name : STRING := "UNUSED"
-  );
   PORT (
     dp_clk      : IN  STD_LOGIC;
     dp_rst      : IN  STD_LOGIC;
 
-    in_sosi_arr : IN  t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0);
-    out_sosi    : OUT t_dp_sosi;
+    local_bf_sosi : IN  t_dp_sosi;
+    from_ri_sosi  : IN  t_dp_sosi;
+    to_ri_sosi    : OUT t_dp_sosi;
+    bf_sum_sosi   : OUT t_dp_sosi;
+
+    mm_rst        : IN  STD_LOGIC;
+    mm_clk        : IN  STD_LOGIC;
+
+    reg_bsn_align_copi : IN  t_mem_copi := c_mem_copi_rst; 
+    reg_bsn_align_cipo : OUT t_mem_cipo;
 
-    mm_rst      : IN  STD_LOGIC;
-    mm_clk      : IN  STD_LOGIC;
+    reg_bsn_monitor_v2_bsn_align_input_copi  : IN  t_mem_copi := c_mem_copi_rst; 
+    reg_bsn_monitor_v2_bsn_align_input_cipo  : OUT t_mem_cipo;
 
-    ram_bf_weights_mosi : IN  t_mem_mosi := c_mem_mosi_rst; 
-    ram_bf_weights_miso : OUT t_mem_miso
+    reg_bsn_monitor_v2_bsn_align_output_copi : IN  t_mem_copi := c_mem_copi_rst; 
+    reg_bsn_monitor_v2_bsn_align_output_cipo : OUT t_mem_cipo
   );
 END sdp_beamformer_remote;
 
 ARCHITECTURE str OF sdp_beamformer_remote IS
   
-  CONSTANT c_data_w                : NATURAL := c_nof_complex * c_sdp_W_beamlet_sum;
-  CONSTANT c_block_size            : NATURAL := c_sdp_S_sub_bf * c_sdp_N_pol_bf;
-  CONSTANT c_fifo_size             : NATURAL := 2** ceil_log2((c_block_size * 9) / 16); -- 1 block of 64 bit words rounded to the next power of 2 = 1024.
-  CONSTANT c_complex_adder_latency : NATURAL := ceil_log2(c_sdp_S_pn);
-  CONSTANT c_bf_weights_latency    : NATURAL := 3;
-  CONSTANT c_total_latency         : NATURAL := 4 + c_bf_weights_latency + c_complex_adder_latency; 
-
-  CONSTANT c_complex_adder_sum_w : NATURAL := c_sdp_W_bf_product + ceil_log2(c_sdp_S_pn); 
-
-  SIGNAL sub_sosi_arr             : t_dp_sosi_arr(c_sdp_N_pol_bf*c_sdp_P_pfb-1 DOWNTO 0)  := (OTHERS => c_dp_sosi_rst);
-  SIGNAL bf_weights_out_sosi_arr  : t_dp_sosi_arr(c_sdp_N_pol_bf*c_sdp_P_pfb-1 DOWNTO 0)  := (OTHERS => c_dp_sosi_rst);
-  SIGNAL bf_weights_x_sosi_arr    : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
-  SIGNAL bf_weights_y_sosi_arr    : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
-  SIGNAL deinterleaved_x_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0)  := (OTHERS => c_dp_sosi_rst);
-  SIGNAL deinterleaved_y_sosi_arr : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0)  := (OTHERS => c_dp_sosi_rst);
-  SIGNAL interleave_out_sosi_arr  : t_dp_sosi_arr(c_sdp_S_pn-1 DOWNTO 0)  := (OTHERS => c_dp_sosi_rst);
-  SIGNAL complex_add_out_sosi     : t_dp_sosi := c_dp_sosi_rst;
-  SIGNAL pipelined_in_sosi        : t_dp_sosi := c_dp_sosi_rst;
-  SIGNAL dp_requantize_in_sosi    : t_dp_sosi := c_dp_sosi_rst;
-
+  CONSTANT c_data_w             : NATURAL := c_nof_complex * c_sdp_W_beamlet_sum;
+  CONSTANT c_block_size         : NATURAL := c_sdp_S_sub_bf * c_sdp_N_pol_bf;
+  CONSTANT c_fifo_size          : NATURAL := 2** ceil_log2((c_block_size * 9) / 16); -- 1 block of 64 bit words rounded to the next power of 2 = 1024.
+
+  SIGNAL dispatch_sosi_arr      : t_dp_sosi_arr(1 DOWNTO 0)  := (OTHERS => c_dp_sosi_rst); -- 1 for local, 1 for remote.
+  SIGNAL dp_fifo_sosi           : t_dp_sosi := c_dp_sosi_rst;
+  SIGNAL dp_fifo_siso           : t_dp_siso := c_dp_siso_rdy;
+  SIGNAL beamlets_data_sosi_arr : t_dp_sosi_arr(1 DOWNTO 0)  := (OTHERS => c_dp_sosi_rst);
+  SIGNAL beamlets_sosi_arr      : t_dp_sosi_arr(1 DOWNTO 0)  := (OTHERS => c_dp_sosi_rst);
+  SIGNAL i_bf_sum_sosi          : t_dp_sosi := c_dp_sosi_rst;
+  SIGNAL bf_sum_data_sosi       : t_dp_sosi := c_dp_sosi_rst;
 BEGIN
-
-  dispatch_sosi_arr(0) <= local_bf_sosi;
-
-
   -- repacking beamlets re/im to data field.
   p_wire_local_bf_sosi : PROCESS(local_bf_sosi)
   BEGIN
     dispatch_sosi_arr(0) <= local_bf_sosi;
-    dispatch_sosi_arr(0).data(c_sdp_W_beamlet_sum -1 DOWNTO 0)                                   <= local_bf_sosi.re(c_sdp_W_beamlet_sum-1 DOWNTO 0);
-    dispatch_sosi_arr(0).data(c_nof_complex * c_sdp_W_beamlet_sum -1 DOWNTO c_sdp_W_beamlet_sum) <= local_bf_sosi.im(c_sdp_W_beamlet_sum-1 DOWNTO 0); 
+    dispatch_sosi_arr(0).data(c_sdp_W_beamlet_sum -1 DOWNTO 0)                   <= local_bf_sosi.re(c_sdp_W_beamlet_sum-1 DOWNTO 0);
+    dispatch_sosi_arr(0).data(c_data_w -1            DOWNTO c_sdp_W_beamlet_sum) <= local_bf_sosi.im(c_sdp_W_beamlet_sum-1 DOWNTO 0); 
   END PROCESS;
 
   ---------------------------------------------------------------
@@ -120,7 +111,7 @@ BEGIN
     g_in_nof_words   => 9,
     g_out_dat_w      => c_data_w,
     g_out_nof_words  => 16,
-    g_pipeline_ready => TRUE -- Needed for src_in.ready to snk_out.ready.
+    g_pipeline_ready => TRUE
   )
   PORT MAP (
     rst => dp_rst,
@@ -177,13 +168,12 @@ BEGIN
   BEGIN
     beamlets_sosi_arr(0) <= beamlets_data_sosi_arr(0);
     beamlets_sosi_arr(1) <= beamlets_data_sosi_arr(1);
-    beamlets_sosi_arr(0).re(c_sdp_W_beamlet_sum-1 DOWNTO 0) <= beamlets_data_sosi_arr(0).data(                c_sdp_W_beamlet_sum -1 DOWNTO 0);
-    beamlets_sosi_arr(0).im(c_sdp_W_beamlet_sum-1 DOWNTO 0) <= beamlets_data_sosi_arr(0).data(c_nof_complex * c_sdp_W_beamlet_sum -1 DOWNTO c_sdp_W_beamlet_sum); 
-    beamlets_sosi_arr(1).re(c_sdp_W_beamlet_sum-1 DOWNTO 0) <= beamlets_data_sosi_arr(1).data(                c_sdp_W_beamlet_sum -1 DOWNTO 0);
-    beamlets_sosi_arr(1).im(c_sdp_W_beamlet_sum-1 DOWNTO 0) <= beamlets_data_sosi_arr(1).data(c_nof_complex * c_sdp_W_beamlet_sum -1 DOWNTO c_sdp_W_beamlet_sum); 
+    beamlets_sosi_arr(0).re(c_sdp_W_beamlet_sum-1 DOWNTO 0) <= beamlets_data_sosi_arr(0).data(c_sdp_W_beamlet_sum -1 DOWNTO 0);
+    beamlets_sosi_arr(0).im(c_sdp_W_beamlet_sum-1 DOWNTO 0) <= beamlets_data_sosi_arr(0).data(           c_data_w -1 DOWNTO c_sdp_W_beamlet_sum); 
+    beamlets_sosi_arr(1).re(c_sdp_W_beamlet_sum-1 DOWNTO 0) <= beamlets_data_sosi_arr(1).data(c_sdp_W_beamlet_sum -1 DOWNTO 0);
+    beamlets_sosi_arr(1).im(c_sdp_W_beamlet_sum-1 DOWNTO 0) <= beamlets_data_sosi_arr(1).data(           c_data_w -1 DOWNTO c_sdp_W_beamlet_sum); 
   END PROCESS;
 
-
   ---------------------------------------------------------------
   -- ADD 
   ---------------------------------------------------------------
@@ -197,19 +187,20 @@ BEGIN
     clk   => dp_clk,      
 
     snk_in_arr => beamlets_sosi_arr, 
-    src_out => i_bf_sum_sosi 
+    src_out    => i_bf_sum_sosi 
   );
 
   bf_sum_sosi <= i_bf_sum_sosi;
+
   ---------------------------------------------------------------
   -- Repack 36b to 64b 
   ---------------------------------------------------------------
-  -- repacking xsel re/im to data field.
-  p_wire_xsel_sosi : PROCESS(xsel_sosi)
+  -- repacking bf_sum re/im to data field.
+  p_wire_bf_sum_sosi : PROCESS(i_bf_sum_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);
+    bf_sum_data_sosi <= i_bf_sum_sosi;
+    bf_sum_data_sosi.data(c_sdp_W_beamlet_sum -1 DOWNTO 0)                   <= i_bf_sum_sosi.re(c_sdp_W_beamlet_sum-1 DOWNTO 0);
+    bf_sum_data_sosi.data(           c_data_w -1 DOWNTO c_sdp_W_beamlet_sum) <= i_bf_sum_sosi.im(c_sdp_W_beamlet_sum-1 DOWNTO 0);
   END PROCESS;
 
   u_dp_repack_data_local : ENTITY dp_lib.dp_repack_data
@@ -218,16 +209,14 @@ BEGIN
     g_in_nof_words   => 16,
     g_out_dat_w      => c_longword_w,
     g_out_nof_words  => 9,
-    g_pipeline_ready => TRUE -- Needed for src_in.ready to snk_out.ready. 
+    g_pipeline_ready => TRUE  
   )
   PORT MAP (
     rst => dp_rst,
     clk => dp_clk,
 
-    snk_in  => i_bf_sum_sosi,
-    src_out => to_ri_sosi_sosi
+    snk_in  => bf_sum_data_sosi,
+    src_out => to_ri_sosi
   );
 
-
-
 END str;
diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
index 58548487f710ad963396e60dec61c2697878288a..d0c32782b256cbd0d93903a0894f8319e74e5040 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
@@ -442,16 +442,24 @@ PACKAGE sdp_pkg is
   CONSTANT c_sdp_reg_stat_enable_addr_w     : NATURAL  := 1;
 
   -- BF MM address widths
-  CONSTANT c_sdp_reg_sdp_info_addr_w                      : NATURAL := 4;  
-  CONSTANT c_sdp_ram_ss_ss_wide_addr_w                    : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft);
-  CONSTANT c_sdp_ram_bf_weights_addr_w                    : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_N_pol_bf * c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft);
-  CONSTANT c_sdp_reg_bf_scale_addr_w                      : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1;  
-  CONSTANT c_sdp_reg_dp_xonoff_addr_w                     : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1;
-  CONSTANT c_sdp_ram_st_bst_addr_w                        : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_S_sub_bf * c_sdp_N_pol_bf * c_sdp_W_statistic_sz);
-  CONSTANT c_sdp_reg_stat_enable_bst_addr_w               : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_enable_addr_w;
-  CONSTANT c_sdp_reg_stat_hdr_dat_bst_addr_w              : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_hdr_dat_addr_w;
-  CONSTANT c_sdp_reg_bsn_monitor_v2_bst_offload_addr_w    : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_bsn_monitor_v2_addr_w;
-  CONSTANT c_sdp_reg_bsn_monitor_v2_beamlet_output_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_bsn_monitor_v2_addr_w;
+  CONSTANT c_sdp_reg_sdp_info_addr_w                         : NATURAL := 4;  
+  CONSTANT c_sdp_ram_ss_ss_wide_addr_w                       : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft);
+  CONSTANT c_sdp_ram_bf_weights_addr_w                       : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_N_pol_bf * c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft);
+  CONSTANT c_sdp_reg_bf_scale_addr_w                         : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1;  
+  CONSTANT c_sdp_reg_dp_xonoff_addr_w                        : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1;
+  CONSTANT c_sdp_ram_st_bst_addr_w                           : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_S_sub_bf * c_sdp_N_pol_bf * c_sdp_W_statistic_sz);
+  CONSTANT c_sdp_reg_stat_enable_bst_addr_w                  : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_enable_addr_w;
+  CONSTANT c_sdp_reg_stat_hdr_dat_bst_addr_w                 : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_stat_hdr_dat_addr_w;
+  CONSTANT c_sdp_reg_bsn_monitor_v2_bst_offload_addr_w       : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_bsn_monitor_v2_addr_w;
+  CONSTANT c_sdp_reg_bsn_monitor_v2_beamlet_output_addr_w    : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_bsn_monitor_v2_addr_w;
+  CONSTANT c_sdp_reg_bsn_align_v2_bf_addr_w                  : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(2*2); 
+  CONSTANT c_sdp_reg_bsn_monitor_v2_rx_align_bf_addr_w       : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(2) + c_sdp_reg_bsn_monitor_v2_addr_w;
+  CONSTANT c_sdp_reg_bsn_monitor_v2_aligned_bf_addr_w        : NATURAL := ceil_log2(c_sdp_N_beamsets) + c_sdp_reg_bsn_monitor_v2_addr_w;
+  CONSTANT c_sdp_reg_ring_lane_info_bf_addr_w                : NATURAL := ceil_log2(c_sdp_N_beamsets) + 1;
+  CONSTANT c_sdp_reg_bsn_monitor_v2_ring_rx_bf_addr_w        : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_N_pn_max) + c_sdp_reg_bsn_monitor_v2_addr_w;
+  CONSTANT c_sdp_reg_bsn_monitor_v2_ring_tx_bf_addr_w        : NATURAL := ceil_log2(c_sdp_N_beamsets) + ceil_log2(c_sdp_N_pn_max) + c_sdp_reg_bsn_monitor_v2_addr_w;
+  CONSTANT c_sdp_reg_dp_block_validate_err_bf_addr_w         : NATURAL := ceil_log2(c_sdp_N_beamsets) + 4;
+  CONSTANT c_sdp_reg_dp_block_validate_bsn_at_sync_bf_addr_w : NATURAL := ceil_log2(c_sdp_N_beamsets) + 2;
 
   -- XSUB
   CONSTANT c_sdp_crosslets_index_w          : NATURAL := ceil_log2(c_sdp_N_sub);
@@ -483,9 +491,9 @@ PACKAGE sdp_pkg is
   CONSTANT c_sdp_reg_bsn_sync_scheduler_xsub_addr_w            : NATURAL := 4; 
   CONSTANT c_sdp_ram_st_xsq_addr_w                             : NATURAL := ceil_log2(c_sdp_N_crosslets_max * c_sdp_X_sq * c_nof_complex * c_sdp_W_statistic_sz);
   CONSTANT c_sdp_ram_st_xsq_arr_addr_w                         : NATURAL := ceil_log2(c_sdp_P_sq) + c_sdp_ram_st_xsq_addr_w;
-  CONSTANT c_sdp_reg_bsn_align_v2_addr_w                       : NATURAL := ceil_log2(2*c_sdp_P_sq); 
-  CONSTANT c_sdp_reg_bsn_monitor_v2_bsn_align_v2_input_addr_w  : NATURAL := ceil_log2(c_sdp_P_sq) + c_sdp_reg_bsn_monitor_v2_addr_w;
-  CONSTANT c_sdp_reg_bsn_monitor_v2_bsn_align_v2_output_addr_w : NATURAL := c_sdp_reg_bsn_monitor_v2_addr_w;
+  CONSTANT c_sdp_reg_bsn_align_v2_xsub_addr_w                  : NATURAL := ceil_log2(2*c_sdp_P_sq); 
+  CONSTANT c_sdp_reg_bsn_monitor_v2_rx_align_xsub_addr_w       : NATURAL := ceil_log2(c_sdp_P_sq) + c_sdp_reg_bsn_monitor_v2_addr_w;
+  CONSTANT c_sdp_reg_bsn_monitor_v2_aligned_xsub_addr_w        : NATURAL := c_sdp_reg_bsn_monitor_v2_addr_w;
   CONSTANT c_sdp_reg_bsn_monitor_v2_xst_offload_addr_w         : NATURAL := c_sdp_reg_bsn_monitor_v2_addr_w;
   CONSTANT c_sdp_reg_ring_lane_info_xst_addr_w                 : NATURAL := 1;
   CONSTANT c_sdp_reg_bsn_monitor_v2_ring_rx_xst_addr_w         : NATURAL := ceil_log2(c_sdp_N_pn_max) + c_sdp_reg_bsn_monitor_v2_addr_w;
diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd
index 528ce3d5d74364c88bb0062061a910d2e6355643..fbc27de1c475995bc018f359549195699a0ed7a0 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd
@@ -213,6 +213,16 @@ ENTITY sdp_station IS
     ram_bf_weights_copi        : IN  t_mem_copi := c_mem_copi_rst;
     ram_bf_weights_cipo        : OUT t_mem_cipo := c_mem_cipo_rst;
 
+    -- BF bsn aligner_v2
+    reg_bsn_align_v2_bf_copi   : IN  t_mem_copi := c_mem_copi_rst;
+    reg_bsn_align_v2_bf_cipo   : OUT t_mem_cipo := c_mem_cipo_rst;
+   
+    -- BF bsn aligner_v2 bsn monitors
+    reg_bsn_monitor_v2_rx_align_bf_copi : IN  t_mem_copi := c_mem_copi_rst;
+    reg_bsn_monitor_v2_rx_align_bf_cipo : OUT t_mem_cipo := c_mem_cipo_rst;
+    reg_bsn_monitor_v2_aligned_bf_copi  : IN  t_mem_copi := c_mem_copi_rst;
+    reg_bsn_monitor_v2_aligned_bf_cipo  : OUT t_mem_cipo := c_mem_cipo_rst;
+
     -- mms_dp_scale Scale Beamlets
     reg_bf_scale_copi          : IN  t_mem_copi := c_mem_copi_rst;
     reg_bf_scale_cipo          : OUT t_mem_cipo := c_mem_cipo_rst;
@@ -237,70 +247,88 @@ ENTITY sdp_station IS
     reg_bsn_monitor_v2_beamlet_output_copi : IN  t_mem_copi := c_mem_copi_rst;
     reg_bsn_monitor_v2_beamlet_output_cipo : OUT t_mem_cipo := c_mem_cipo_rst;
 
+    -- BF ring lane info
+    reg_ring_lane_info_bf_copi                 : IN  t_mem_copi := c_mem_copi_rst;
+    reg_ring_lane_info_bf_cipo                 : OUT t_mem_cipo := c_mem_cipo_rst;
+
+    -- BF ring bsn monitor rx 
+    reg_bsn_monitor_v2_ring_rx_bf_copi         : IN  t_mem_copi := c_mem_copi_rst;
+    reg_bsn_monitor_v2_ring_rx_bf_cipo         : OUT t_mem_cipo := c_mem_cipo_rst;
+
+    -- BF ring bsn monitor tx 
+    reg_bsn_monitor_v2_ring_tx_bf_copi         : IN  t_mem_copi := c_mem_copi_rst;
+    reg_bsn_monitor_v2_ring_tx_bf_cipo         : OUT t_mem_cipo := c_mem_cipo_rst;
 
+    -- BF ring validate err 
+    reg_dp_block_validate_err_bf_copi          : IN  t_mem_copi := c_mem_copi_rst;
+    reg_dp_block_validate_err_bf_cipo          : OUT t_mem_cipo := c_mem_cipo_rst;
+
+    -- BF ring bsn at sync 
+    reg_dp_block_validate_bsn_at_sync_bf_copi  : IN  t_mem_copi := c_mem_copi_rst;
+    reg_dp_block_validate_bsn_at_sync_bf_cipo  : OUT t_mem_cipo := c_mem_cipo_rst;
     ----------------------------------------------
     -- SST 
     ----------------------------------------------
     -- Statistics Enable
-    reg_stat_enable_sst_copi       : IN  t_mem_copi;
-    reg_stat_enable_sst_cipo       : OUT t_mem_cipo;
+    reg_stat_enable_sst_copi       : IN  t_mem_copi := c_mem_copi_rst;
+    reg_stat_enable_sst_cipo       : OUT t_mem_cipo := c_mem_cipo_rst;
     
     -- Statistics header info  
-    reg_stat_hdr_dat_sst_copi      : IN  t_mem_copi;
-    reg_stat_hdr_dat_sst_cipo      : OUT t_mem_cipo;
+    reg_stat_hdr_dat_sst_copi      : IN  t_mem_copi := c_mem_copi_rst;
+    reg_stat_hdr_dat_sst_cipo      : OUT t_mem_cipo := c_mem_cipo_rst;
 
     ----------------------------------------------
     -- XST 
     ----------------------------------------------
     -- Statistics Enable
-    reg_stat_enable_xst_copi                    : IN  t_mem_copi;
-    reg_stat_enable_xst_cipo                    : OUT t_mem_cipo;
+    reg_stat_enable_xst_copi                    : IN  t_mem_copi := c_mem_copi_rst;
+    reg_stat_enable_xst_cipo                    : OUT t_mem_cipo := c_mem_cipo_rst;
     
     -- Statistics header info  
-    reg_stat_hdr_dat_xst_copi                   : IN  t_mem_copi;
-    reg_stat_hdr_dat_xst_cipo                   : OUT t_mem_cipo;
+    reg_stat_hdr_dat_xst_copi                   : IN  t_mem_copi := c_mem_copi_rst;
+    reg_stat_hdr_dat_xst_cipo                   : OUT t_mem_cipo := c_mem_cipo_rst;
 
     -- XST bsn aligner_v2
-    reg_bsn_align_copi                          : IN  t_mem_copi;
-    reg_bsn_align_cipo                          : OUT t_mem_cipo;
+    reg_bsn_align_v2_xsub_copi                  : IN  t_mem_copi := c_mem_copi_rst;
+    reg_bsn_align_v2_xsub_cipo                  : OUT t_mem_cipo := c_mem_cipo_rst;
    
     -- XST bsn aligner_v2 bsn monitors
-    reg_bsn_monitor_v2_bsn_align_input_copi     : IN  t_mem_copi;
-    reg_bsn_monitor_v2_bsn_align_input_cipo     : OUT t_mem_cipo;
-    reg_bsn_monitor_v2_bsn_align_output_copi    : IN  t_mem_copi;
-    reg_bsn_monitor_v2_bsn_align_output_cipo    : OUT t_mem_cipo;
+    reg_bsn_monitor_v2_rx_align_xsub_copi       : IN  t_mem_copi := c_mem_copi_rst;
+    reg_bsn_monitor_v2_rx_align_xsub_cipo       : OUT t_mem_cipo := c_mem_cipo_rst;
+    reg_bsn_monitor_v2_aligned_xsub_copi        : IN  t_mem_copi := c_mem_copi_rst;
+    reg_bsn_monitor_v2_aligned_xsub_cipo        : OUT t_mem_cipo := c_mem_cipo_rst;
 
     -- XST UDP offload bsn monitor
-    reg_bsn_monitor_v2_xst_offload_copi         : IN  t_mem_copi;
-    reg_bsn_monitor_v2_xst_offload_cipo         : OUT t_mem_cipo;
+    reg_bsn_monitor_v2_xst_offload_copi         : IN  t_mem_copi := c_mem_copi_rst;
+    reg_bsn_monitor_v2_xst_offload_cipo         : OUT t_mem_cipo := c_mem_cipo_rst;
 
     -- XST ring lane info
-    reg_ring_lane_info_xst_copi                 : IN  t_mem_copi;
-    reg_ring_lane_info_xst_cipo                 : OUT t_mem_cipo;
+    reg_ring_lane_info_xst_copi                 : IN  t_mem_copi := c_mem_copi_rst;
+    reg_ring_lane_info_xst_cipo                 : OUT t_mem_cipo := c_mem_cipo_rst;
 
     -- XST ring bsn monitor rx 
-    reg_bsn_monitor_v2_ring_rx_xst_copi         : IN  t_mem_copi;
-    reg_bsn_monitor_v2_ring_rx_xst_cipo         : OUT t_mem_cipo;
+    reg_bsn_monitor_v2_ring_rx_xst_copi         : IN  t_mem_copi := c_mem_copi_rst;
+    reg_bsn_monitor_v2_ring_rx_xst_cipo         : OUT t_mem_cipo := c_mem_cipo_rst;
 
     -- XST ring bsn monitor tx 
-    reg_bsn_monitor_v2_ring_tx_xst_copi         : IN  t_mem_copi;
-    reg_bsn_monitor_v2_ring_tx_xst_cipo         : OUT t_mem_cipo;
+    reg_bsn_monitor_v2_ring_tx_xst_copi         : IN  t_mem_copi := c_mem_copi_rst;
+    reg_bsn_monitor_v2_ring_tx_xst_cipo         : OUT t_mem_cipo := c_mem_cipo_rst;
 
     -- XST ring validate err 
-    reg_dp_block_validate_err_xst_copi          : IN  t_mem_copi;
-    reg_dp_block_validate_err_xst_cipo          : OUT t_mem_cipo;
+    reg_dp_block_validate_err_xst_copi          : IN  t_mem_copi := c_mem_copi_rst;
+    reg_dp_block_validate_err_xst_cipo          : OUT t_mem_cipo := c_mem_cipo_rst;
 
     -- XST ring bsn at sync 
-    reg_dp_block_validate_bsn_at_sync_xst_copi  : IN  t_mem_copi;
-    reg_dp_block_validate_bsn_at_sync_xst_cipo  : OUT t_mem_cipo;
+    reg_dp_block_validate_bsn_at_sync_xst_copi  : IN  t_mem_copi := c_mem_copi_rst;
+    reg_dp_block_validate_bsn_at_sync_xst_cipo  : OUT t_mem_cipo := c_mem_cipo_rst;
 
     -- XST ring MAC 
-    reg_tr_10GbE_mac_copi                       : IN  t_mem_copi;
-    reg_tr_10GbE_mac_cipo                       : OUT t_mem_cipo;
+    reg_tr_10GbE_mac_copi                       : IN  t_mem_copi := c_mem_copi_rst;
+    reg_tr_10GbE_mac_cipo                       : OUT t_mem_cipo := c_mem_cipo_rst;
                              
     -- XST ring ETH 
-    reg_tr_10GbE_eth10g_copi                    : IN  t_mem_copi;
-    reg_tr_10GbE_eth10g_cipo                    : OUT t_mem_cipo;
+    reg_tr_10GbE_eth10g_copi                    : IN  t_mem_copi := c_mem_copi_rst;
+    reg_tr_10GbE_eth10g_cipo                    : OUT t_mem_cipo := c_mem_cipo_rst;
 
 
     ----------------------------------------------
@@ -345,33 +373,39 @@ ARCHITECTURE str OF sdp_station IS
   CONSTANT c_fifo_tx_size                  : NATURAL := c_fifo_tx_fill + 11; -- Make fifo size large enough for adding header.
  
   -- Address widths of a single MM instance
-  CONSTANT c_addr_w_ram_ss_ss_wide : NATURAL := ceil_log2(c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft); 
-  CONSTANT c_addr_w_ram_bf_weights : NATURAL := ceil_log2(c_sdp_N_pol * c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft); 
-  CONSTANT c_addr_w_reg_bf_scale   : NATURAL := 1; 
-  CONSTANT c_addr_w_reg_hdr_dat    : NATURAL := ceil_log2(field_nof_words(c_sdp_cep_hdr_field_arr, c_word_w)); 
-  CONSTANT c_addr_w_reg_dp_xonoff  : NATURAL := 1; 
-  CONSTANT c_addr_w_ram_st_bst     : NATURAL := ceil_log2(c_sdp_S_sub_bf*c_sdp_N_pol*(c_longword_sz/c_word_sz));
-  
+  CONSTANT c_addr_w_ram_ss_ss_wide                 : NATURAL := ceil_log2(c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft); 
+  CONSTANT c_addr_w_ram_bf_weights                 : NATURAL := ceil_log2(c_sdp_N_pol * c_sdp_P_pfb * c_sdp_S_sub_bf * c_sdp_Q_fft); 
+  CONSTANT c_addr_w_reg_bf_scale                   : NATURAL := 1; 
+  CONSTANT c_addr_w_reg_hdr_dat                    : NATURAL := ceil_log2(field_nof_words(c_sdp_cep_hdr_field_arr, c_word_w)); 
+  CONSTANT c_addr_w_reg_dp_xonoff                  : NATURAL := 1; 
+  CONSTANT c_addr_w_ram_st_bst                     : NATURAL := ceil_log2(c_sdp_S_sub_bf*c_sdp_N_pol*(c_longword_sz/c_word_sz));
+  CONSTANT c_addr_w_reg_bsn_align_v2_bf            : NATURAL := ceil_log2(2*2);
+  CONSTANT c_addr_w_reg_bsn_monitor_v2_rx_align_bf : NATURAL := ceil_log2(2) + c_sdp_reg_bsn_monitor_v2_addr_w;
+  CONSTANT c_addr_w_reg_bsn_monitor_v2_ring_rx_bf  : NATURAL := ceil_log2(c_sdp_N_pn_max) + c_sdp_reg_bsn_monitor_v2_addr_w;
+  CONSTANT c_addr_w_reg_bsn_monitor_v2_ring_tx_bf  : NATURAL := ceil_log2(c_sdp_N_pn_max) + c_sdp_reg_bsn_monitor_v2_addr_w;
+
   -- Read only sdp_info values
   CONSTANT c_f_adc     : STD_LOGIC := '1'; -- '0' => 160M, '1' => 200M
   CONSTANT c_fsub_type : STD_LOGIC := '0'; -- '0' => critical sampled PFB, '1' => oversampled PFB
  
   CONSTANT c_use_dp_layer              : BOOLEAN := TRUE; 
-  CONSTANT c_lane_packet_length        : NATURAL := c_sdp_N_crosslets_max * c_sdp_S_pn / 2; -- = crosslet subband select block size devided by 2 as it is repacked from 32b to 64b.
+  CONSTANT c_lane_packet_length_xst    : NATURAL := c_sdp_N_crosslets_max * c_sdp_S_pn / 2; -- = crosslet subband select block size devided by 2 as it is repacked from 32b to 64b. = 42
+  CONSTANT c_lane_packet_length_bf     : NATURAL := (c_sdp_S_sub_bf * c_sdp_N_pol_bf * 9) / 16; -- = beamlet block size repacked from 36b to 64b. = 549
   CONSTANT c_err_bi                    : NATURAL := 0; 
   CONSTANT c_nof_err_counts            : NATURAL := 8; 
   CONSTANT c_bsn_at_sync_check_channel : NATURAL := 1; 
   CONSTANT c_validate_channel          : BOOLEAN := TRUE; 
   CONSTANT c_validate_channel_mode     : STRING  := "=";
   CONSTANT c_sync_timeout              : NATURAL := sel_a_b(g_sim, g_sim_sync_timeout, c_sdp_N_clk_sync_timeout );
-  CONSTANT c_xsub_fifo_tx_fill         : NATURAL := c_lane_packet_length + sel_a_b(c_use_dp_layer, c_ring_dp_hdr_field_size, c_ring_eth_hdr_field_size); --total packet length
-  CONSTANT c_xsub_fifo_tx_size         : NATURAL := 2 * c_lane_packet_length;
+  CONSTANT c_xsub_fifo_tx_fill         : NATURAL := c_lane_packet_length_bf + sel_a_b(c_use_dp_layer, c_ring_dp_hdr_field_size, c_ring_eth_hdr_field_size); --total max packet length (bf has largest packets)
+  CONSTANT c_xsub_fifo_tx_size         : NATURAL := 2 * c_lane_packet_length_bf;
 
+  CONSTANT c_nof_lane                  : NATURAL := 3; -- 0 = XST, 1 = BF_0, 2 = BF_1.
   CONSTANT c_nof_if                    : NATURAL := 3; -- 3 different interfaces, QSFP, RING_0 and RING_1
   CONSTANT c_qsfp_if_offset            : NATURAL := 0; -- QSFP signals are indexed at c_nof_if * I.
   CONSTANT c_ring_0_if_offset          : NATURAL := 1; -- RING_0 signals are indexed at c_nof_if * I + 1. 
   CONSTANT c_ring_1_if_offset          : NATURAL := 2; -- RING_1 signals are indexed at c_nof_if * I + 2.
-  CONSTANT c_nof_mac                   : NATURAL := 3; -- must match one of the MAC IP variations, e.g. 1, 3, 4, 12, 24, 48
+  CONSTANT c_nof_mac                   : NATURAL := 12; -- Using 9, must match one of the MAC IP variations, e.g. 1, 3, 4, 12, 24, 48
 
   SIGNAL gn_index : NATURAL := 0;
   SIGNAL this_rn  : STD_LOGIC_VECTOR(c_byte_w-1 DOWNTO 0);  
@@ -402,6 +436,38 @@ ARCHITECTURE str OF sdp_station IS
   SIGNAL ram_st_bst_copi_arr        : t_mem_copi_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_copi_rst);
   SIGNAL ram_st_bst_cipo_arr        : t_mem_cipo_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_cipo_rst);
 
+  -- BF bsn align v2
+  SIGNAL reg_bsn_align_v2_bf_copi_arr : t_mem_copi_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_copi_rst);
+  SIGNAL reg_bsn_align_v2_bf_cipo_arr : t_mem_cipo_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_cipo_rst);
+
+  -- BF bsn monitor v2 rx align
+  SIGNAL reg_bsn_monitor_v2_rx_align_bf_copi_arr : t_mem_copi_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_copi_rst);
+  SIGNAL reg_bsn_monitor_v2_rx_align_bf_cipo_arr : t_mem_cipo_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_cipo_rst);
+
+  -- BF bsn monitor v2 aligned
+  SIGNAL reg_bsn_monitor_v2_aligned_bf_copi_arr : t_mem_copi_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_copi_rst);
+  SIGNAL reg_bsn_monitor_v2_aligned_bf_cipo_arr : t_mem_cipo_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_cipo_rst);
+
+  -- BF ring lane info
+  SIGNAL reg_ring_lane_info_bf_copi_arr : t_mem_copi_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_copi_rst);
+  SIGNAL reg_ring_lane_info_bf_cipo_arr : t_mem_cipo_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_cipo_rst);
+
+  -- BF ring bsn monitor rx 
+  SIGNAL reg_bsn_monitor_v2_ring_rx_bf_copi_arr : t_mem_copi_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_copi_rst);
+  SIGNAL reg_bsn_monitor_v2_ring_rx_bf_cipo_arr : t_mem_cipo_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_cipo_rst);
+
+  -- BF ring bsn monitor tx 
+  SIGNAL reg_bsn_monitor_v2_ring_tx_bf_copi_arr : t_mem_copi_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_copi_rst);
+  SIGNAL reg_bsn_monitor_v2_ring_tx_bf_cipo_arr : t_mem_cipo_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_cipo_rst);
+
+  -- BF ring validate err 
+  SIGNAL reg_dp_block_validate_err_bf_copi_arr : t_mem_copi_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_copi_rst);
+  SIGNAL reg_dp_block_validate_err_bf_cipo_arr : t_mem_cipo_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_cipo_rst);
+
+  -- BF ring bsn at sync 
+  SIGNAL reg_dp_block_validate_bsn_at_sync_bf_copi_arr : t_mem_copi_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_copi_rst);
+  SIGNAL reg_dp_block_validate_bsn_at_sync_bf_cipo_arr : t_mem_cipo_arr(c_sdp_N_beamsets-1 DOWNTO 0) := (OTHERS => c_mem_cipo_rst);
+
   ----------------------------------------------
   -- BST 
   ----------------------------------------------
@@ -427,11 +493,13 @@ ARCHITECTURE str OF sdp_station IS
   SIGNAL bs_sosi                           : t_dp_sosi;        
  
   SIGNAL xst_from_ri_sosi                  : t_dp_sosi;        
-  SIGNAL xst_to_ri_sosi                    : t_dp_sosi;        
-  SIGNAL lane_rx_cable_sosi_arr            : t_dp_sosi_arr(2 DOWNTO 0); -- 3 as, a total of 3 lanes will be used. 
-  SIGNAL lane_tx_cable_sosi_arr            : t_dp_sosi_arr(2 DOWNTO 0); -- 3 as, a total of 3 lanes will be used.       
-  SIGNAL lane_rx_board_sosi_arr            : t_dp_sosi_arr(2 DOWNTO 0); -- 3 as, a total of 3 lanes will be used.       
-  SIGNAL lane_tx_board_sosi_arr            : t_dp_sosi_arr(2 DOWNTO 0); -- 3 as, a total of 3 lanes will be used.       
+  SIGNAL xst_to_ri_sosi                    : t_dp_sosi;     
+  SIGNAL bf_from_ri_sosi_arr               : t_dp_sosi_arr(c_sdp_N_beamsets-1 DOWNTO 0);        
+  SIGNAL bf_to_ri_sosi_arr                 : t_dp_sosi_arr(c_sdp_N_beamsets-1 DOWNTO 0);    
+  SIGNAL lane_rx_cable_sosi_arr            : t_dp_sosi_arr(c_nof_lane-1 DOWNTO 0);  
+  SIGNAL lane_tx_cable_sosi_arr            : t_dp_sosi_arr(c_nof_lane-1 DOWNTO 0);        
+  SIGNAL lane_rx_board_sosi_arr            : t_dp_sosi_arr(c_nof_lane-1 DOWNTO 0);        
+  SIGNAL lane_tx_board_sosi_arr            : t_dp_sosi_arr(c_nof_lane-1 DOWNTO 0);        
  
   SIGNAL dp_bsn_source_restart             : STD_LOGIC;
  
@@ -678,12 +746,12 @@ BEGIN
       reg_stat_hdr_dat_copi                    => reg_stat_hdr_dat_xst_copi,
       reg_stat_hdr_dat_cipo                    => reg_stat_hdr_dat_xst_cipo,
 
-      reg_bsn_align_copi                       => reg_bsn_align_copi, 
-      reg_bsn_align_cipo                       => reg_bsn_align_cipo,       
-      reg_bsn_monitor_v2_bsn_align_input_copi  => reg_bsn_monitor_v2_bsn_align_input_copi,   
-      reg_bsn_monitor_v2_bsn_align_input_cipo  => reg_bsn_monitor_v2_bsn_align_input_cipo,   
-      reg_bsn_monitor_v2_bsn_align_output_copi => reg_bsn_monitor_v2_bsn_align_output_copi,  
-      reg_bsn_monitor_v2_bsn_align_output_cipo => reg_bsn_monitor_v2_bsn_align_output_cipo,  
+      reg_bsn_align_copi                       => reg_bsn_align_v2_xsub_copi, 
+      reg_bsn_align_cipo                       => reg_bsn_align_v2_xsub_cipo,       
+      reg_bsn_monitor_v2_bsn_align_input_copi  => reg_bsn_monitor_v2_rx_align_xsub_copi,   
+      reg_bsn_monitor_v2_bsn_align_input_cipo  => reg_bsn_monitor_v2_rx_align_xsub_cipo,   
+      reg_bsn_monitor_v2_bsn_align_output_copi => reg_bsn_monitor_v2_aligned_xsub_copi,  
+      reg_bsn_monitor_v2_bsn_align_output_cipo => reg_bsn_monitor_v2_aligned_xsub_cipo,  
       reg_bsn_monitor_v2_xst_offload_copi      => reg_bsn_monitor_v2_xst_offload_copi,
       reg_bsn_monitor_v2_xst_offload_cipo      => reg_bsn_monitor_v2_xst_offload_cipo, 
 
@@ -695,132 +763,6 @@ BEGIN
       stat_udp_src_port                        => xst_udp_src_port
     );
 
-    gen_use_xsub_ring : IF g_use_ring GENERATE
-      u_ring_lane_xst : ENTITY ring_lib.ring_lane
-      GENERIC MAP (
-        g_lane_direction            => 1, -- transport in positive direction.
-        g_lane_data_w               => c_longword_w,
-        g_lane_packet_length        => c_lane_packet_length,
-        g_use_dp_layer              => c_use_dp_layer,
-        g_nof_rx_monitors           => c_sdp_N_pn_max,
-        g_nof_tx_monitors           => c_sdp_N_pn_max,
-        g_err_bi                    => c_err_bi,
-        g_nof_err_counts            => c_nof_err_counts,
-        g_bsn_at_sync_check_channel => c_bsn_at_sync_check_channel,
-        g_validate_channel          => c_validate_channel,
-        g_validate_channel_mode     => c_validate_channel_mode,
-        g_sync_timeout              => c_sync_timeout    
-      )
-      PORT MAP (
-        mm_rst => mm_rst,
-        mm_clk => mm_clk,
-        dp_clk => dp_clk,
-        dp_rst => dp_rst,
-  
-        from_lane_sosi     => xst_from_ri_sosi,
-        to_lane_sosi       => xst_to_ri_sosi,
-        lane_rx_cable_sosi => lane_rx_cable_sosi_arr(0),
-        lane_rx_board_sosi => lane_rx_board_sosi_arr(0),
-        lane_tx_cable_sosi => lane_tx_cable_sosi_arr(0),
-        lane_tx_board_sosi => lane_tx_board_sosi_arr(0),
-        bs_sosi            => bs_sosi, 
-        
-        reg_ring_lane_info_copi                => reg_ring_lane_info_xst_copi,
-        reg_ring_lane_info_cipo                => reg_ring_lane_info_xst_cipo,
-        reg_bsn_monitor_v2_ring_rx_copi        => reg_bsn_monitor_v2_ring_rx_xst_copi,
-        reg_bsn_monitor_v2_ring_rx_cipo        => reg_bsn_monitor_v2_ring_rx_xst_cipo,
-        reg_bsn_monitor_v2_ring_tx_copi        => reg_bsn_monitor_v2_ring_tx_xst_copi,
-        reg_bsn_monitor_v2_ring_tx_cipo        => reg_bsn_monitor_v2_ring_tx_xst_cipo,
-        reg_dp_block_validate_err_copi         => reg_dp_block_validate_err_xst_copi,
-        reg_dp_block_validate_err_cipo         => reg_dp_block_validate_err_xst_cipo,
-        reg_dp_block_validate_bsn_at_sync_copi => reg_dp_block_validate_bsn_at_sync_xst_copi,
-        reg_dp_block_validate_bsn_at_sync_cipo => reg_dp_block_validate_bsn_at_sync_xst_cipo, 
-        
-        this_rn   => this_rn,
-        N_rn      => ring_info.N_rn,
-        rx_select => ring_info.use_cable_to_previous_rn,
-        tx_select => ring_info.use_cable_to_next_rn
-      );
-
-      -----------------------------------------------------------------------------
-      -- Combine seperate signals into array for tr_10GbE
-      -----------------------------------------------------------------------------  
-      -- QSFP_RX
-      lane_rx_cable_sosi_arr(0) <= tr_10gbe_src_out_arr(c_qsfp_if_offset) WHEN ring_info.use_cable_to_previous_rn = '1' ELSE c_dp_sosi_rst; -- use_cable_to_previous_rn=1 -> even lanes receive from cable
-      -- QSFP_TX
-      tr_10gbe_snk_in_arr(c_qsfp_if_offset) <= lane_tx_cable_sosi_arr(0) WHEN ring_info.use_cable_to_next_rn = '1'      ELSE c_dp_sosi_rst; -- use_cable_to_next_rn=1 -> even lanes transmit to cable
-  
-      -- RING_0_RX even lanes receive from RING_0 (from the left)
-      lane_rx_board_sosi_arr(0) <= tr_10gbe_src_out_arr(c_ring_0_if_offset);
-    
-      -- RING_1_TX even lanes transmit to RING_1 (to the right)
-      tr_10gbe_snk_in_arr(c_ring_1_if_offset) <= lane_tx_board_sosi_arr(0); 
-
-      -----------------------------------------------------------------------------
-      -- tr_10GbE
-      -----------------------------------------------------------------------------
-      u_tr_10GbE: ENTITY tr_10GbE_lib.tr_10GbE
-      GENERIC MAP (
-        g_sim           => g_sim,
-        g_sim_level     => 1,
-        g_nof_macs      => c_nof_mac,
-        g_direction     => "TX_RX",
-        g_tx_fifo_fill  => c_xsub_fifo_tx_fill,
-        g_tx_fifo_size  => c_xsub_fifo_tx_size
-      )
-      PORT MAP (
-        -- Transceiver PLL reference clock
-        tr_ref_clk_644        => SA_CLK,
-        tr_ref_clk_312        => tr_ref_clk_312,  
-        tr_ref_clk_156        => tr_ref_clk_156,  
-        tr_ref_rst_156        => tr_ref_rst_156,  
-
-        -- MM interface
-        mm_rst                => mm_rst,
-        mm_clk                => mm_clk,
-
-        reg_mac_mosi          => reg_tr_10GbE_mac_copi,
-        reg_mac_miso          => reg_tr_10GbE_mac_cipo,
-
-        reg_eth10g_mosi       => reg_tr_10GbE_eth10g_copi,
-        reg_eth10g_miso       => reg_tr_10GbE_eth10g_cipo,
-
-        -- DP interface
-        dp_rst                => dp_rst,
-        dp_clk                => dp_clk,
-
-        src_out_arr           => tr_10gbe_src_out_arr,
-        src_in_arr            => tr_10gbe_src_in_arr,
-
-        snk_out_arr           => tr_10gbe_snk_out_arr,
-        snk_in_arr            => tr_10gbe_snk_in_arr,
-
-        -- Serial IO
-        serial_tx_arr         => tr_10gbe_serial_tx_arr, 
-        serial_rx_arr         => tr_10gbe_serial_rx_arr
-      );
-
-
-      -----------------------------------------------------------------------------
-      -- Seperate serial tx/rx array 
-      -----------------------------------------------------------------------------  
-      -- Seperating the one large serial tx/rx array from tr_10GbE to the 3 port arrays:
-      -- QSFP port, RING_0 port and RING_1 port.
-      -- QSFP_TX
-      unb2_board_front_io_serial_tx_arr(0) <= tr_10gbe_serial_tx_arr(c_qsfp_if_offset); 
-      -- QSFP_RX
-      tr_10gbe_serial_rx_arr(c_qsfp_if_offset) <= unb2_board_front_io_serial_rx_arr(0); 
-    
-      -- RING_0_TX 
-      RING_0_TX(0) <= tr_10gbe_serial_tx_arr(c_ring_0_if_offset);
-      -- RING_0_RX
-      tr_10gbe_serial_rx_arr(c_ring_0_if_offset) <= RING_0_RX(0); 
-    
-      -- RING_1_TX
-      RING_1_TX(0) <= tr_10gbe_serial_tx_arr(c_ring_1_if_offset);
-      -- RING_1_RX
-      tr_10gbe_serial_rx_arr(c_ring_1_if_offset) <= RING_1_RX(0); 
-    END GENERATE;
   END GENERATE;
 
   -----------------------------------------------------------------------------
@@ -840,7 +782,9 @@ BEGIN
         dp_clk                   => dp_clk,  
         dp_rst                   => dp_rst,  
       
-        in_sosi_arr              => fsub_sosi_arr, 
+        in_sosi_arr              => fsub_sosi_arr,
+        from_ri_sosi             => bf_from_ri_sosi_arr(beamset_id), 
+        to_ri_sosi               => bf_to_ri_sosi_arr(beamset_id),  
         bf_udp_sosi              => bf_udp_sosi_arr(beamset_id),
         bf_udp_siso              => bf_udp_siso_arr(beamset_id),
         bst_udp_sosi             => udp_tx_sosi_arr(2+ beamset_id),  
@@ -864,11 +808,17 @@ BEGIN
         reg_stat_enable_mosi     => reg_stat_enable_bst_copi_arr(beamset_id),
         reg_stat_enable_miso     => reg_stat_enable_bst_cipo_arr(beamset_id),
         reg_stat_hdr_dat_mosi    => reg_stat_hdr_dat_bst_copi_arr(beamset_id),
-        reg_stat_hdr_dat_miso    => reg_stat_hdr_dat_bst_cipo_arr(beamset_id),     
-        reg_bsn_monitor_v2_bst_offload_copi => reg_bsn_monitor_v2_bst_offload_copi_arr(beamset_id),
-        reg_bsn_monitor_v2_bst_offload_cipo => reg_bsn_monitor_v2_bst_offload_cipo_arr(beamset_id), 
-        reg_bsn_monitor_v2_beamlet_output_copi => reg_bsn_monitor_v2_beamlet_output_copi_arr(beamset_id),
-        reg_bsn_monitor_v2_beamlet_output_cipo => reg_bsn_monitor_v2_beamlet_output_cipo_arr(beamset_id),
+        reg_stat_hdr_dat_miso    => reg_stat_hdr_dat_bst_cipo_arr(beamset_id),    
+        reg_bsn_align_copi       => reg_bsn_align_v2_bf_copi_arr(beamset_id),
+        reg_bsn_align_cipo       => reg_bsn_align_v2_bf_cipo_arr(beamset_id),
+        reg_bsn_monitor_v2_bsn_align_input_copi  => reg_bsn_monitor_v2_rx_align_bf_copi_arr(beamset_id), 
+        reg_bsn_monitor_v2_bsn_align_input_cipo  => reg_bsn_monitor_v2_rx_align_bf_cipo_arr(beamset_id), 
+        reg_bsn_monitor_v2_bsn_align_output_copi => reg_bsn_monitor_v2_aligned_bf_copi_arr(beamset_id), 
+        reg_bsn_monitor_v2_bsn_align_output_cipo => reg_bsn_monitor_v2_aligned_bf_cipo_arr(beamset_id), 
+        reg_bsn_monitor_v2_bst_offload_copi      => reg_bsn_monitor_v2_bst_offload_copi_arr(beamset_id),
+        reg_bsn_monitor_v2_bst_offload_cipo      => reg_bsn_monitor_v2_bst_offload_cipo_arr(beamset_id), 
+        reg_bsn_monitor_v2_beamlet_output_copi   => reg_bsn_monitor_v2_beamlet_output_copi_arr(beamset_id),
+        reg_bsn_monitor_v2_beamlet_output_cipo   => reg_bsn_monitor_v2_beamlet_output_cipo_arr(beamset_id),
  
         sdp_info                 => sdp_info,
         gn_id                    => gn_id,
@@ -909,7 +859,19 @@ BEGIN
       mosi_arr => ram_bf_weights_copi_arr,
       miso_arr => ram_bf_weights_cipo_arr
     );
-  
+
+    u_mem_mux_reg_bsn_align_v2_bf : ENTITY common_lib.common_mem_mux
+    GENERIC MAP (
+      g_nof_mosi    => c_sdp_N_beamsets,
+      g_mult_addr_w => c_addr_w_reg_bsn_align_v2_bf
+    )
+    PORT MAP (
+      mosi     => reg_bsn_align_v2_bf_copi,
+      miso     => reg_bsn_align_v2_bf_cipo,
+      mosi_arr => reg_bsn_align_v2_bf_copi_arr,
+      miso_arr => reg_bsn_align_v2_bf_cipo_arr
+    );
+
     u_mem_mux_reg_bf_scale : ENTITY common_lib.common_mem_mux
     GENERIC MAP (
       g_nof_mosi    => c_sdp_N_beamsets,
@@ -981,6 +943,30 @@ BEGIN
       mosi_arr => reg_stat_hdr_dat_bst_copi_arr,
       miso_arr => reg_stat_hdr_dat_bst_cipo_arr
     );
+
+    u_mem_mux_reg_bsn_monitor_v2_rx_align_bf : ENTITY common_lib.common_mem_mux
+    GENERIC MAP (
+      g_nof_mosi    => c_sdp_N_beamsets,
+      g_mult_addr_w => c_addr_w_reg_bsn_monitor_v2_rx_align_bf
+    )
+    PORT MAP (
+      mosi     => reg_bsn_monitor_v2_rx_align_bf_copi,
+      miso     => reg_bsn_monitor_v2_rx_align_bf_cipo,
+      mosi_arr => reg_bsn_monitor_v2_rx_align_bf_copi_arr,
+      miso_arr => reg_bsn_monitor_v2_rx_align_bf_cipo_arr
+    );
+
+    u_mem_mux_reg_bsn_monitor_v2_aligned_bf : ENTITY common_lib.common_mem_mux
+    GENERIC MAP (
+      g_nof_mosi    => c_sdp_N_beamsets,
+      g_mult_addr_w => c_sdp_reg_bsn_monitor_v2_addr_w
+    )
+    PORT MAP (
+      mosi     => reg_bsn_monitor_v2_aligned_bf_copi,
+      miso     => reg_bsn_monitor_v2_aligned_bf_cipo,
+      mosi_arr => reg_bsn_monitor_v2_aligned_bf_copi_arr,
+      miso_arr => reg_bsn_monitor_v2_aligned_bf_cipo_arr
+    );
  
     u_mem_mux_reg_bsn_monitor_v2_bst_offload : ENTITY common_lib.common_mem_mux
     GENERIC MAP (
@@ -1083,6 +1069,249 @@ BEGIN
     );
   END GENERATE;
   
+  gen_use_ring : IF g_use_ring GENERATE
+    gen_xst_ring : IF g_use_xsub GENERATE
+      u_ring_lane_xst : ENTITY ring_lib.ring_lane
+      GENERIC MAP (
+        g_lane_direction            => 1, -- transport in positive direction.
+        g_lane_data_w               => c_longword_w,
+        g_lane_packet_length        => c_lane_packet_length_xst,
+        g_use_dp_layer              => c_use_dp_layer,
+        g_nof_rx_monitors           => c_sdp_N_pn_max,
+        g_nof_tx_monitors           => c_sdp_N_pn_max,
+        g_err_bi                    => c_err_bi,
+        g_nof_err_counts            => c_nof_err_counts,
+        g_bsn_at_sync_check_channel => c_bsn_at_sync_check_channel,
+        g_validate_channel          => c_validate_channel,
+        g_validate_channel_mode     => c_validate_channel_mode,
+        g_sync_timeout              => c_sync_timeout    
+      )
+      PORT MAP (
+        mm_rst => mm_rst,
+        mm_clk => mm_clk,
+        dp_clk => dp_clk,
+        dp_rst => dp_rst,
+    
+        from_lane_sosi     => xst_from_ri_sosi,
+        to_lane_sosi       => xst_to_ri_sosi,
+        lane_rx_cable_sosi => lane_rx_cable_sosi_arr(0),
+        lane_rx_board_sosi => lane_rx_board_sosi_arr(0),
+        lane_tx_cable_sosi => lane_tx_cable_sosi_arr(0),
+        lane_tx_board_sosi => lane_tx_board_sosi_arr(0),
+        bs_sosi            => bs_sosi, 
+        
+        reg_ring_lane_info_copi                => reg_ring_lane_info_xst_copi,
+        reg_ring_lane_info_cipo                => reg_ring_lane_info_xst_cipo,
+        reg_bsn_monitor_v2_ring_rx_copi        => reg_bsn_monitor_v2_ring_rx_xst_copi,
+        reg_bsn_monitor_v2_ring_rx_cipo        => reg_bsn_monitor_v2_ring_rx_xst_cipo,
+        reg_bsn_monitor_v2_ring_tx_copi        => reg_bsn_monitor_v2_ring_tx_xst_copi,
+        reg_bsn_monitor_v2_ring_tx_cipo        => reg_bsn_monitor_v2_ring_tx_xst_cipo,
+        reg_dp_block_validate_err_copi         => reg_dp_block_validate_err_xst_copi,
+        reg_dp_block_validate_err_cipo         => reg_dp_block_validate_err_xst_cipo,
+        reg_dp_block_validate_bsn_at_sync_copi => reg_dp_block_validate_bsn_at_sync_xst_copi,
+        reg_dp_block_validate_bsn_at_sync_cipo => reg_dp_block_validate_bsn_at_sync_xst_cipo, 
+        
+        this_rn   => this_rn,
+        N_rn      => ring_info.N_rn,
+        rx_select => ring_info.use_cable_to_previous_rn,
+        tx_select => ring_info.use_cable_to_next_rn
+      );
+    END GENERATE;
+
+    gen_bf_ring : IF g_use_bf GENERATE
+      gen_beamset_ring : FOR beamset_id IN 0 TO c_sdp_N_beamsets-1 GENERATE
+        u_ring_lane_bf : ENTITY ring_lib.ring_lane
+        GENERIC MAP (
+          g_lane_direction            => 1, -- transport in positive direction.
+          g_lane_data_w               => c_longword_w,
+          g_lane_packet_length        => c_lane_packet_length_bf,
+          g_use_dp_layer              => c_use_dp_layer,
+          g_nof_rx_monitors           => c_sdp_N_pn_max,
+          g_nof_tx_monitors           => c_sdp_N_pn_max,
+          g_err_bi                    => c_err_bi,
+          g_nof_err_counts            => c_nof_err_counts,
+          g_bsn_at_sync_check_channel => c_bsn_at_sync_check_channel,
+          g_validate_channel          => c_validate_channel,
+          g_validate_channel_mode     => c_validate_channel_mode,
+          g_sync_timeout              => c_sync_timeout    
+        )
+        PORT MAP (
+          mm_rst => mm_rst,
+          mm_clk => mm_clk,
+          dp_clk => dp_clk,
+          dp_rst => dp_rst,
+    
+          from_lane_sosi     => bf_from_ri_sosi_arr(beamset_id),
+          to_lane_sosi       => bf_to_ri_sosi_arr(beamset_id),
+          lane_rx_cable_sosi => lane_rx_cable_sosi_arr(1 + beamset_id),
+          lane_rx_board_sosi => lane_rx_board_sosi_arr(1 + beamset_id),
+          lane_tx_cable_sosi => lane_tx_cable_sosi_arr(1 + beamset_id),
+          lane_tx_board_sosi => lane_tx_board_sosi_arr(1 + beamset_id),
+          bs_sosi            => fsub_sosi_arr(0), -- used for bsn and sync
+          
+          reg_ring_lane_info_copi                => reg_ring_lane_info_bf_copi_arr(beamset_id),
+          reg_ring_lane_info_cipo                => reg_ring_lane_info_bf_cipo_arr(beamset_id),
+          reg_bsn_monitor_v2_ring_rx_copi        => reg_bsn_monitor_v2_ring_rx_bf_copi_arr(beamset_id),
+          reg_bsn_monitor_v2_ring_rx_cipo        => reg_bsn_monitor_v2_ring_rx_bf_cipo_arr(beamset_id),
+          reg_bsn_monitor_v2_ring_tx_copi        => reg_bsn_monitor_v2_ring_tx_bf_copi_arr(beamset_id),
+          reg_bsn_monitor_v2_ring_tx_cipo        => reg_bsn_monitor_v2_ring_tx_bf_cipo_arr(beamset_id),
+          reg_dp_block_validate_err_copi         => reg_dp_block_validate_err_bf_copi_arr(beamset_id),
+          reg_dp_block_validate_err_cipo         => reg_dp_block_validate_err_bf_cipo_arr(beamset_id),
+          reg_dp_block_validate_bsn_at_sync_copi => reg_dp_block_validate_bsn_at_sync_bf_copi_arr(beamset_id),
+          reg_dp_block_validate_bsn_at_sync_cipo => reg_dp_block_validate_bsn_at_sync_bf_cipo_arr(beamset_id), 
+          
+          this_rn   => this_rn,
+          N_rn      => ring_info.N_rn,
+          rx_select => ring_info.use_cable_to_previous_rn,
+          tx_select => ring_info.use_cable_to_next_rn
+        );
+      END GENERATE;
+  
+  
+      u_mem_mux_reg_ring_lane_info_bf : ENTITY common_lib.common_mem_mux
+      GENERIC MAP (
+        g_nof_mosi    => c_sdp_N_beamsets,
+        g_mult_addr_w => c_sdp_reg_ring_lane_info_addr_w
+      )
+      PORT MAP (
+        mosi     => reg_ring_lane_info_bf_copi,
+        miso     => reg_ring_lane_info_bf_cipo,
+        mosi_arr => reg_ring_lane_info_bf_copi_arr,
+        miso_arr => reg_ring_lane_info_bf_cipo_arr
+      );
+  
+      u_mem_mux_reg_bsn_monitor_v2_ring_rx_bf : ENTITY common_lib.common_mem_mux
+      GENERIC MAP (
+        g_nof_mosi    => c_sdp_N_beamsets,
+        g_mult_addr_w => c_addr_w_reg_bsn_monitor_v2_ring_rx_bf
+      )
+      PORT MAP (
+        mosi     => reg_bsn_monitor_v2_ring_rx_bf_copi,
+        miso     => reg_bsn_monitor_v2_ring_rx_bf_cipo,
+        mosi_arr => reg_bsn_monitor_v2_ring_rx_bf_copi_arr,
+        miso_arr => reg_bsn_monitor_v2_ring_rx_bf_cipo_arr
+      );
+  
+      u_mem_mux_reg_bsn_monitor_v2_ring_tx_bf : ENTITY common_lib.common_mem_mux
+      GENERIC MAP (
+        g_nof_mosi    => c_sdp_N_beamsets,
+        g_mult_addr_w => c_addr_w_reg_bsn_monitor_v2_ring_tx_bf
+      )
+      PORT MAP (
+        mosi     => reg_bsn_monitor_v2_ring_tx_bf_copi,
+        miso     => reg_bsn_monitor_v2_ring_tx_bf_cipo,
+        mosi_arr => reg_bsn_monitor_v2_ring_tx_bf_copi_arr,
+        miso_arr => reg_bsn_monitor_v2_ring_tx_bf_cipo_arr
+      );
+  
+      u_mem_mux_reg_dp_block_validate_err_bf : ENTITY common_lib.common_mem_mux
+      GENERIC MAP (
+        g_nof_mosi    => c_sdp_N_beamsets,
+        g_mult_addr_w => c_sdp_reg_dp_block_validate_err_addr_w
+      )
+      PORT MAP (
+        mosi     => reg_dp_block_validate_err_bf_copi,
+        miso     => reg_dp_block_validate_err_bf_cipo,
+        mosi_arr => reg_dp_block_validate_err_bf_copi_arr,
+        miso_arr => reg_dp_block_validate_err_bf_cipo_arr
+      );
+  
+      u_mem_mux_reg_dp_block_validate_bsn_at_sync_bf : ENTITY common_lib.common_mem_mux
+      GENERIC MAP (
+        g_nof_mosi    => c_sdp_N_beamsets,
+        g_mult_addr_w => c_sdp_reg_dp_block_validate_bsn_at_sync_addr_w
+      )
+      PORT MAP (
+        mosi     => reg_dp_block_validate_bsn_at_sync_bf_copi,
+        miso     => reg_dp_block_validate_bsn_at_sync_bf_cipo,
+        mosi_arr => reg_dp_block_validate_bsn_at_sync_bf_copi_arr,
+        miso_arr => reg_dp_block_validate_bsn_at_sync_bf_cipo_arr
+      );
+    END GENERATE;
+    -----------------------------------------------------------------------------
+    -- Combine seperate signals into array for tr_10GbE
+    -----------------------------------------------------------------------------  
+    gen_lane_wires : FOR I IN 0 TO c_nof_lane-1 GENERATE 
+    -- QSFP_RX
+    lane_rx_cable_sosi_arr(I) <= tr_10gbe_src_out_arr(c_nof_if * I + c_qsfp_if_offset) WHEN ring_info.use_cable_to_previous_rn = '1' ELSE c_dp_sosi_rst; -- use_cable_to_previous_rn=1 -> even lanes receive from cable
+
+    -- QSFP_TX
+    tr_10gbe_snk_in_arr(c_nof_if * I + c_qsfp_if_offset) <= lane_tx_cable_sosi_arr(I) WHEN ring_info.use_cable_to_next_rn = '1'      ELSE c_dp_sosi_rst; -- use_cable_to_next_rn=1 -> even lanes transmit to cable
+  
+    -- RING_0_RX even lanes receive from RING_0 (from the left)
+    lane_rx_board_sosi_arr(I) <= tr_10gbe_src_out_arr(c_nof_if * I + c_ring_0_if_offset);
+  
+    -- RING_1_TX even lanes transmit to RING_1 (to the right)
+    tr_10gbe_snk_in_arr(c_nof_if * I + c_ring_1_if_offset) <= lane_tx_board_sosi_arr(I); 
+    END GENERATE;
+
+    -----------------------------------------------------------------------------
+    -- tr_10GbE
+    -----------------------------------------------------------------------------
+    u_tr_10GbE: ENTITY tr_10GbE_lib.tr_10GbE
+    GENERIC MAP (
+      g_sim           => g_sim,
+      g_sim_level     => 1,
+      g_nof_macs      => c_nof_mac,
+      g_direction     => "TX_RX",
+      g_tx_fifo_fill  => c_xsub_fifo_tx_fill,
+      g_tx_fifo_size  => c_xsub_fifo_tx_size
+    )
+    PORT MAP (
+      -- Transceiver PLL reference clock
+      tr_ref_clk_644        => SA_CLK,
+      tr_ref_clk_312        => tr_ref_clk_312,  
+      tr_ref_clk_156        => tr_ref_clk_156,  
+      tr_ref_rst_156        => tr_ref_rst_156,  
+
+      -- MM interface
+      mm_rst                => mm_rst,
+      mm_clk                => mm_clk,
+
+      reg_mac_mosi          => reg_tr_10GbE_mac_copi,
+      reg_mac_miso          => reg_tr_10GbE_mac_cipo,
+
+      reg_eth10g_mosi       => reg_tr_10GbE_eth10g_copi,
+      reg_eth10g_miso       => reg_tr_10GbE_eth10g_cipo,
+
+      -- DP interface
+      dp_rst                => dp_rst,
+      dp_clk                => dp_clk,
+
+      src_out_arr           => tr_10gbe_src_out_arr,
+      src_in_arr            => tr_10gbe_src_in_arr,
+
+      snk_out_arr           => tr_10gbe_snk_out_arr,
+      snk_in_arr            => tr_10gbe_snk_in_arr,
+
+      -- Serial IO
+      serial_tx_arr         => tr_10gbe_serial_tx_arr, 
+      serial_rx_arr         => tr_10gbe_serial_rx_arr
+    );
+
+    -----------------------------------------------------------------------------
+    -- Seperate serial tx/rx array 
+    -----------------------------------------------------------------------------  
+    -- Seperating the one large serial tx/rx array from tr_10GbE to the 3 port arrays:
+    -- QSFP port, RING_0 port and RING_1 port.
+    gen_serial_wires : FOR I IN 0 TO c_nof_lane-1 GENERATE 
+      -- QSFP_TX
+      unb2_board_front_io_serial_tx_arr(I) <= tr_10gbe_serial_tx_arr(c_nof_if * I + c_qsfp_if_offset); 
+      -- QSFP_RX
+      tr_10gbe_serial_rx_arr(c_nof_if * I + c_qsfp_if_offset) <= unb2_board_front_io_serial_rx_arr(I); 
+    
+      -- RING_0_TX 
+      RING_0_TX(I) <= tr_10gbe_serial_tx_arr(c_nof_if * I + c_ring_0_if_offset);
+      -- RING_0_RX
+      tr_10gbe_serial_rx_arr(c_nof_if * I + c_ring_0_if_offset) <= RING_0_RX(I); 
+    
+      -- RING_1_TX
+      RING_1_TX(I) <= tr_10gbe_serial_tx_arr(c_nof_if * I + c_ring_1_if_offset);
+      -- RING_1_RX
+      tr_10gbe_serial_rx_arr(c_nof_if * I + c_ring_1_if_offset) <= RING_1_RX(I); 
+    END GENERATE;
+  END GENERATE;
+
   ---------
   -- PLL
   ---------