diff --git a/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml b/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml
index 2efc86165268dcfaea09b683b45a957a99fc854d..26742d9c1683435453e26636746d78c83712772a 100644
--- a/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml
+++ b/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml
@@ -101,7 +101,7 @@ peripherals:
   # SDP Info
   #############################################################################
 
-  - peripheral_name: disturb/disturb_info
+  - peripheral_name: sdp/sdp_info
     mm_port_names:
       - REG_SDP_INFO
  
@@ -195,7 +195,7 @@ peripherals:
       - RAM_DIAG_DATA_BUFFER_BSN
   
   #############################################################################
-  # Fsub = Subband Filterbank (from node_disturb_filterbank.vhd)
+  # Fsub = Subband Filterbank (from node_sdp_filterbank.vhd)
   #############################################################################
   
   - peripheral_name: si/si
@@ -213,7 +213,7 @@ peripherals:
     mm_port_names:
       - RAM_FIL_COEFS
       
-  - peripheral_name: disturb/disturb_subband_equalizer
+  - peripheral_name: sdp/sdp_subband_equalizer
     mm_port_names:
       - RAM_EQUALIZER_GAINS
       
@@ -221,7 +221,7 @@ peripherals:
     mm_port_names:
       - REG_DP_SELECTOR   # input_select = 0 for weighted subbands, input_select = 1 for raw subbands
       
-  - peripheral_name: st/st_sst_for_disturb
+  - peripheral_name: st/st_sst_for_sdp
     mm_port_names:
       - RAM_ST_SST
       
@@ -230,7 +230,7 @@ peripherals:
     mm_port_names:
       - REG_STAT_ENABLE_SST
 
-  - peripheral_name: disturb/disturb_statistics_offload_hdr_dat_sst
+  - peripheral_name: sdp/sdp_statistics_offload_hdr_dat_sst
     peripheral_group: sst
     mm_port_names:
       - REG_STAT_HDR_DAT_SST
@@ -243,7 +243,7 @@ peripherals:
       - REG_BSN_MONITOR_V2_SST_OFFLOAD
 
   #############################################################################
-  # Xsub = Subband Correlator (from node_disturb_correlator.vhd)
+  # Xsub = Subband Correlator (from node_sdp_correlator.vhd)
   #############################################################################
 
   - peripheral_name: dp/dp_bsn_sync_scheduler
@@ -251,18 +251,18 @@ peripherals:
     mm_port_names:
       - REG_BSN_SYNC_SCHEDULER_XSUB
       
-  - peripheral_name: st/st_xst_for_disturb
+  - peripheral_name: st/st_xst_for_sdp
     parameter_overrides:
       - { name: g_nof_streams, value: c_P_sq }
       - { name: g_nof_crosslets, value: c_N_crosslets }
     mm_port_names:
       - RAM_ST_XSQ
       
-  - peripheral_name: disturb/disturb_crosslets_subband_select
+  - peripheral_name: sdp/sdp_crosslets_subband_select
     mm_port_names:
       - REG_CROSSLETS_INFO
 
-  - peripheral_name: disturb/disturb_nof_crosslets
+  - peripheral_name: sdp/sdp_nof_crosslets
     mm_port_names:
       - REG_NOF_CROSSLETS
 
@@ -271,7 +271,7 @@ peripherals:
     mm_port_names:
       - REG_STAT_ENABLE_XST
 
-  - peripheral_name: disturb/disturb_statistics_offload_hdr_dat_xst
+  - peripheral_name: sdp/sdp_statistics_offload_hdr_dat_xst
     peripheral_group: xst
     mm_port_names:
       - REG_STAT_HDR_DAT_XST
@@ -346,7 +346,7 @@ peripherals:
       - REG_TR_10GBE_ETH10G
 
   #############################################################################
-  # BF = Beamformer (from node_disturb_beamformer.vhd)
+  # BF = Beamformer (from node_sdp_beamformer.vhd)
   #############################################################################
   
   - peripheral_name: reorder/reorder_col_wide
@@ -359,7 +359,7 @@ peripherals:
     mm_port_names:
       - RAM_SS_SS_WIDE
 
-  - peripheral_name: disturb/disturb_bf_weights
+  - peripheral_name: sdp/sdp_bf_weights
     number_of_peripherals: c_N_beamsets
     peripheral_span: ceil_pow2(c_N_pol_bf * c_P_pfb) * ceil_pow2(c_Q_fft * c_S_sub_bf) * MM_BUS_SIZE  # number_of_ports = c_N_pol_bf * c_P_pfb, mm_port_span = ceil_pow2(c_Q_fft * c_S_sub_bf) words
     mm_port_names:
@@ -399,7 +399,7 @@ peripherals:
     peripheral_group: ring_rx_bf
     number_of_peripherals: c_N_beamsets
     parameter_overrides:
-      - { name: g_nof_streams, value: c_lane_nof_rx_monitors }
+      - { name: g_nof_streams, value: 1 }
     mm_port_names:
       - REG_BSN_MONITOR_V2_RING_RX_BF
 
@@ -407,7 +407,7 @@ peripherals:
     peripheral_group: ring_tx_bf
     number_of_peripherals: c_N_beamsets
     parameter_overrides:
-      - { name: g_nof_streams, value: c_lane_nof_tx_monitors }
+      - { name: g_nof_streams, value: 1 }
     mm_port_names:
       - REG_BSN_MONITOR_V2_RING_TX_BF
 
@@ -425,7 +425,7 @@ peripherals:
     mm_port_names:
       - REG_DP_BLOCK_VALIDATE_BSN_AT_SYNC_BF
 
-  - peripheral_name: disturb/disturb_bf_scale
+  - peripheral_name: sdp/sdp_bf_scale
     number_of_peripherals: c_N_beamsets
     peripheral_span: 2 * MM_BUS_SIZE  # number_of_ports = 1, mm_port_span = 2 words
     parameter_overrides:
@@ -434,7 +434,7 @@ peripherals:
     mm_port_names:
       - REG_BF_SCALE
 
-  - peripheral_name: disturb/disturb_beamformer_output_hdr_dat
+  - peripheral_name: sdp/sdp_beamformer_output_hdr_dat
     number_of_peripherals: c_N_beamsets
     peripheral_span: 64 * MM_BUS_SIZE  # number_of_ports = 1, mm_port_span = 64 words
     mm_port_names:
@@ -449,7 +449,7 @@ peripherals:
     mm_port_names:
       - REG_DP_XONOFF
 
-  - peripheral_name: st/st_bst_for_disturb
+  - peripheral_name: st/st_bst_for_sdp
     number_of_peripherals: c_N_beamsets
     peripheral_span: ceil_pow2(c_stat_data_sz * c_S_sub_bf * c_N_pol_bf) * MM_BUS_SIZE  # number_of_ports = 1, mm_port_span = ceil_pow2(c_stat_data_sz * c_S_sub_bf * c_N_pol_bf) words
     mm_port_names:
@@ -462,7 +462,7 @@ peripherals:
     mm_port_names:
       - REG_STAT_ENABLE_BST
 
-  - peripheral_name: disturb/disturb_statistics_offload_hdr_dat_bst
+  - peripheral_name: sdp/sdp_statistics_offload_hdr_dat_bst
     peripheral_group: bst
     number_of_peripherals: c_N_beamsets
     peripheral_span: 64 * MM_BUS_SIZE  # number_of_ports = 1, mm_port_span = 64 words
diff --git a/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml.bak b/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml.bak
new file mode 100644
index 0000000000000000000000000000000000000000..2efc86165268dcfaea09b683b45a957a99fc854d
--- /dev/null
+++ b/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml.bak
@@ -0,0 +1,500 @@
+schema_name: args
+schema_version: 1.0
+schema_type: fpga
+
+hdl_library_name: disturb2_unb2b_station
+fpga_name: disturb2_unb2b_station
+fpga_description: "FPGA design disturb2_unb2b_station"
+parameters:
+  - { name: c_N_pol_bf,             value: 2 }  # NOTE: define c_N_pol_bf before c_N_pol, to avoid that c_N_pol_bf gets substituted by 2_bf
+  - { name: c_N_pol,                value: 2 }
+  - { name: c_N_beamsets,           value: 2 }
+  - { name: c_N_sub,                value: 512 }
+  - { name: c_N_fft,                value: 1024 }
+  - { name: c_N_pn_lb,              value: 16 }
+  - { name: c_S_pn,                 value: 12 }
+  - { name: c_Q_fft,                value: 2 }
+  - { name: c_P_sq,                 value: 1 + c_N_pn_lb // 2 }  # = 1 + 16 // 2 = 9, on revision xsub_one only first X_sq cell is used
+  - { name: c_X_sq,                 value: c_S_pn * c_S_pn }  # = 144
+  - { name: c_N_crosslets,          value: 7 }
+  - { name: c_N_taps,               value: 16 }
+  - { name: c_W_adc_jesd,           value: 16 }
+  - { name: c_W_adc,                value: 14 }
+  - { name: c_V_sample_delay,       value: 4096 }
+  - { name: c_V_si_db_large,        value: 131072 }
+  - { name: c_V_si_db,              value: 1024 }
+  - { name: c_V_si_histogram,       value: 512 }
+  - { name: c_W_fir_coef,           value: 16 }
+  - { name: c_W_subband,            value: 18 }
+  - { name: c_P_pfb,                value: c_S_pn / c_Q_fft }  # = 6
+  - { name: c_A_pn,                 value: c_S_pn / c_N_pol }  # = 6
+  - { name: c_S_sub_bf,             value: 488 }
+  - { name: c_f_adc_MHz,            value: 200 }
+  - { name: c_W_sub_weight,         value: 16 }
+  - { name: c_W_bf_weight,          value: 16 }
+  - { name: c_W_beamlet_scale,      value: 16 }
+  - { name: c_W_beamlet_resolution, value: 0 - 15 }  # EK: FIXME: support passing on negative values, workaround use 0 - positive
+  - { name: c_W_beamlet,            value: 8 }
+  - { name: c_stat_data_sz,         value: 2 }
+  - { name: c_nof_clk_per_pps,      value: c_f_adc_MHz * 10**6 }  # = 200000000
+  - { name: c_lane_nof_rx_monitors,      value: 16 } # per lane
+  - { name: c_lane_nof_tx_monitors,      value: 16 } # per lane
+  - { name: c_lane_nof_err_counts,       value: 8 }  # per lane
+  - { name: c_ring_nof_mac,              value: 3 } # 1 TX/RX for RING0 + 1 TX/RX for RING1 + 1 TX/RX for QSFP0
+
+peripherals:
+  #############################################################################
+  # Factory / minimal (see ctrl_unb2b_board.vhd)
+  #############################################################################
+  - peripheral_name: unb2b_board/system_info
+    lock_base_address: 0x10000
+    mm_port_names:
+      - ROM_SYSTEM_INFO
+      - PIO_SYSTEM_INFO
+
+  - peripheral_name: unb2b_board/wdi
+    mm_port_names:
+      - REG_WDI
+
+  - peripheral_name: unb2b_board/unb2_fpga_sens
+    mm_port_names:
+      - REG_FPGA_TEMP_SENS
+      - REG_FPGA_VOLTAGE_SENS
+    
+  - peripheral_name: unb2b_board/ram_scrap
+    mm_port_names:
+      - RAM_SCRAP
+      
+  - peripheral_name: eth/eth
+    mm_port_names:
+      - AVS_ETH_0_TSE
+      - AVS_ETH_0_REG
+      - AVS_ETH_0_RAM
+      
+  - peripheral_name: ppsh/ppsh
+    mm_port_names:
+      - PIO_PPS
+      
+  - peripheral_name: epcs/epcs
+    parameter_overrides:
+      - { name: "g_epcs_addr_w", value: 32 }
+    mm_port_names:
+      - REG_EPCS
+      
+  - peripheral_name: dp/dpmm
+    mm_port_names:
+      - REG_DPMM_CTRL
+      - REG_DPMM_DATA
+      
+  - peripheral_name: dp/mmdp
+    mm_port_names:
+      - REG_MMDP_CTRL
+      - REG_MMDP_DATA
+      
+  - peripheral_name: remu/remu
+    parameter_overrides:
+      - { name: g_data_w, value: 32 }
+    mm_port_names:
+      - REG_REMU
+ 
+  #############################################################################
+  # SDP Info
+  #############################################################################
+
+  - peripheral_name: disturb/disturb_info
+    mm_port_names:
+      - REG_SDP_INFO
+ 
+  #############################################################################
+  # Ring Info
+  #############################################################################
+
+  - peripheral_name: ring/ring_info
+    mm_port_names:
+      - REG_RING_INFO
+
+  #############################################################################
+  # AIT = ADC Input and Timing (see node_adc_input_and_timing.vhd)
+  #############################################################################
+  
+  - peripheral_name: tech_jesd204b/jesd_ctrl
+    mm_port_names:
+      - PIO_JESD_CTRL
+      
+  - peripheral_name: tech_jesd204b/jesd204b_arria10
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_S_pn }
+    mm_port_names:
+      - JESD204B
+  
+  - peripheral_name: dp/dp_shiftram
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_S_pn }
+      - { name: g_nof_words, value: c_V_sample_delay }
+      - { name: g_data_w, value: c_W_adc_jesd }
+    mm_port_names:
+      - REG_DP_SHIFTRAM
+
+  - peripheral_name: dp/dp_bsn_source_v2
+    parameter_overrides:
+      - { name: g_nof_clk_per_sync, value: c_nof_clk_per_pps }
+      - { name: g_block_size, value: c_N_fft }
+      - { name: g_bsn_time_offset_w, value: ceil_log2(c_N_fft) }
+    mm_port_names:
+      - REG_BSN_SOURCE_V2
+      
+  - peripheral_name: dp/dp_bsn_scheduler
+    mm_port_names:
+      - REG_BSN_SCHEDULER
+  
+  - peripheral_name: dp/dp_bsn_monitor
+    peripheral_group: input
+    mm_port_names:
+      - REG_BSN_MONITOR_INPUT
+  
+  - peripheral_name: diag/diag_wg_wideband
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_S_pn }
+    mm_port_names:
+      - REG_WG
+      - RAM_WG
+
+  - peripheral_name: st/st_histogram
+    parameter_overrides:
+      - { name: g_nof_instances, value: c_S_pn }
+      - { name: g_nof_bins, value: c_V_si_histogram }
+      - { name: g_nof_data_per_sync, value: c_nof_clk_per_pps}
+    mm_port_names:
+      - RAM_ST_HISTOGRAM   
+
+  - peripheral_name: aduh/aduh_mon_dc_power
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_S_pn }
+    mm_port_names:
+      - REG_ADUH_MONITOR
+
+  # Commented RAM_ADUH_MON, because use RAM_DIAG_DATA_BUF_BSN instead
+  #- peripheral_name: aduh/aduh_mon_data_buffer
+  #  parameter_overrides:
+  #    - { name: g_nof_streams, value: c_S_pn }
+  #    - { name: g_symbol_w, value: c_W_adc_jesd }
+  #    - { name: g_nof_symbols_per_data, value: 1 }
+  #    - { name: g_buffer_nof_symbols, value: 512 }
+  #    - { name: g_buffer_use_sync, value: True }
+  #  mm_port_names:
+  #    - RAM_ADUH_MON
+
+  - peripheral_name: diag/diag_data_buffer
+    peripheral_group: bsn
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_S_pn }
+      - { name: g_data_w, value: c_W_adc_jesd }
+      - { name: g_nof_data, value: c_V_si_db }
+    mm_port_names:
+      - REG_DIAG_DATA_BUFFER_BSN
+      - RAM_DIAG_DATA_BUFFER_BSN
+  
+  #############################################################################
+  # Fsub = Subband Filterbank (from node_disturb_filterbank.vhd)
+  #############################################################################
+  
+  - peripheral_name: si/si
+    mm_port_names:
+      - REG_SI
+      
+  - peripheral_name: filter/fil_ppf_w
+    parameter_overrides:
+      - { name: g_fil_ppf.wb_factor, value: 1 } # process at sample rate (so no parallel wideband factor)
+      - { name: g_fil_ppf.nof_chan, value: 0 } # process at sample rate (so no serial time multiplexing)
+      - { name: g_fil_ppf.nof_bands, value: c_N_fft }
+      - { name: g_fil_ppf.nof_taps, value: c_N_taps }
+      - { name: g_fil_ppf.nof_streams, value: 1 }
+      - { name: g_fil_ppf.coef_dat_w, value: c_W_fir_coef }
+    mm_port_names:
+      - RAM_FIL_COEFS
+      
+  - peripheral_name: disturb/disturb_subband_equalizer
+    mm_port_names:
+      - RAM_EQUALIZER_GAINS
+      
+  - peripheral_name: dp/dp_selector
+    mm_port_names:
+      - REG_DP_SELECTOR   # input_select = 0 for weighted subbands, input_select = 1 for raw subbands
+      
+  - peripheral_name: st/st_sst_for_disturb
+    mm_port_names:
+      - RAM_ST_SST
+      
+  - peripheral_name: common/common_variable_delay
+    peripheral_group: sst
+    mm_port_names:
+      - REG_STAT_ENABLE_SST
+
+  - peripheral_name: disturb/disturb_statistics_offload_hdr_dat_sst
+    peripheral_group: sst
+    mm_port_names:
+      - REG_STAT_HDR_DAT_SST
+    
+  - peripheral_name: dp/dp_bsn_monitor_v2
+    peripheral_group: sst_udp
+    parameter_overrides:
+      - { name: g_nof_streams, value: 1 }
+    mm_port_names:
+      - REG_BSN_MONITOR_V2_SST_OFFLOAD
+
+  #############################################################################
+  # Xsub = Subband Correlator (from node_disturb_correlator.vhd)
+  #############################################################################
+
+  - peripheral_name: dp/dp_bsn_sync_scheduler
+    peripheral_group: xsub
+    mm_port_names:
+      - REG_BSN_SYNC_SCHEDULER_XSUB
+      
+  - peripheral_name: st/st_xst_for_disturb
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_P_sq }
+      - { name: g_nof_crosslets, value: c_N_crosslets }
+    mm_port_names:
+      - RAM_ST_XSQ
+      
+  - peripheral_name: disturb/disturb_crosslets_subband_select
+    mm_port_names:
+      - REG_CROSSLETS_INFO
+
+  - peripheral_name: disturb/disturb_nof_crosslets
+    mm_port_names:
+      - REG_NOF_CROSSLETS
+
+  - peripheral_name: common/common_variable_delay
+    peripheral_group: xst
+    mm_port_names:
+      - REG_STAT_ENABLE_XST
+
+  - peripheral_name: disturb/disturb_statistics_offload_hdr_dat_xst
+    peripheral_group: xst
+    mm_port_names:
+      - REG_STAT_HDR_DAT_XST
+
+  - peripheral_name: dp/dp_bsn_align_v2
+    peripheral_group: xsub
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_P_sq }
+    mm_port_names:
+      - REG_BSN_ALIGN_V2_XSUB
+  
+  - peripheral_name: dp/dp_bsn_monitor_v2
+    peripheral_group: rx_align_xsub
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_P_sq }
+    mm_port_names:
+      - REG_BSN_MONITOR_V2_RX_ALIGN_XSUB
+  
+  - peripheral_name: dp/dp_bsn_monitor_v2
+    peripheral_group: aligned_xsub
+    parameter_overrides:
+      - { name: g_nof_streams, value: 1 }
+    mm_port_names:
+      - REG_BSN_MONITOR_V2_ALIGNED_XSUB
+  
+  - peripheral_name: dp/dp_bsn_monitor_v2
+    peripheral_group: xst_udp
+    parameter_overrides:
+      - { name: g_nof_streams, value: 1 }
+    mm_port_names:
+      - REG_BSN_MONITOR_V2_XST_OFFLOAD
+  
+  - peripheral_name: ring/ring_lane_info
+    peripheral_group: xsub
+    mm_port_names:
+      - REG_RING_LANE_INFO_XST
+   
+  - peripheral_name: dp/dp_bsn_monitor_v2
+    peripheral_group: ring_rx
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_lane_nof_rx_monitors }
+    mm_port_names:
+      - REG_BSN_MONITOR_V2_RING_RX_XST
+
+  - peripheral_name: dp/dp_bsn_monitor_v2
+    peripheral_group: ring_tx
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_lane_nof_tx_monitors }
+    mm_port_names:
+      - REG_BSN_MONITOR_V2_RING_TX_XST
+
+  - peripheral_name: dp/dp_block_validate_err
+    parameter_overrides:
+      - { name: g_nof_err_counts, value: c_lane_nof_err_counts }
+    mm_port_names:
+      - REG_DP_BLOCK_VALIDATE_ERR_XST
+
+  - peripheral_name: dp/dp_block_validate_bsn_at_sync
+    mm_port_names:
+      - REG_DP_BLOCK_VALIDATE_BSN_AT_SYNC_XST
+  
+  - peripheral_name: tr_10GbE/tr_10GbE_unb2legacy # For ring interface
+    parameter_overrides:
+      - { name: g_nof_macs, value: c_ring_nof_mac }
+    mm_port_names:
+      - REG_TR_10GBE_MAC
+
+  - peripheral_name: tr_10GbE/tr_10GbE_eth10g # For ring interface
+    parameter_overrides:
+      - { name: g_nof_macs, value: c_ring_nof_mac }
+    mm_port_names:
+      - REG_TR_10GBE_ETH10G
+
+  #############################################################################
+  # BF = Beamformer (from node_disturb_beamformer.vhd)
+  #############################################################################
+  
+  - peripheral_name: reorder/reorder_col_wide
+    number_of_peripherals: c_N_beamsets
+    peripheral_span: ceil_pow2(c_P_pfb) * ceil_pow2(c_S_sub_bf * c_Q_fft) * MM_BUS_SIZE  # number_of_ports = c_P_pfb, mm_port_span = ceil_pow2(c_S_sub_bf * c_Q_fft) words
+    parameter_overrides:
+      - { name: g_wb_factor, value: c_P_pfb }
+      - { name: g_nof_ch_in, value: c_N_sub * c_Q_fft }
+      - { name: g_nof_ch_sel, value: c_S_sub_bf * c_Q_fft }
+    mm_port_names:
+      - RAM_SS_SS_WIDE
+
+  - peripheral_name: disturb/disturb_bf_weights
+    number_of_peripherals: c_N_beamsets
+    peripheral_span: ceil_pow2(c_N_pol_bf * c_P_pfb) * ceil_pow2(c_Q_fft * c_S_sub_bf) * MM_BUS_SIZE  # number_of_ports = c_N_pol_bf * c_P_pfb, mm_port_span = ceil_pow2(c_Q_fft * c_S_sub_bf) words
+    mm_port_names:
+      - RAM_BF_WEIGHTS
+
+  - peripheral_name: dp/dp_bsn_align_v2
+    peripheral_group: bf
+    number_of_peripherals: c_N_beamsets
+    parameter_overrides:
+      - { name: g_nof_streams, value: 2 }
+    mm_port_names:
+      - REG_BSN_ALIGN_V2_BF
+  
+  - peripheral_name: dp/dp_bsn_monitor_v2
+    peripheral_group: rx_align_bf
+    number_of_peripherals: c_N_beamsets
+    parameter_overrides:
+      - { name: g_nof_streams, value: 2 }
+    mm_port_names:
+      - REG_BSN_MONITOR_V2_RX_ALIGN_BF
+  
+  - peripheral_name: dp/dp_bsn_monitor_v2
+    peripheral_group: aligned_bf
+    number_of_peripherals: c_N_beamsets
+    parameter_overrides:
+      - { name: g_nof_streams, value: 1 }
+    mm_port_names:
+      - REG_BSN_MONITOR_V2_ALIGNED_BF
+  
+  - peripheral_name: ring/ring_lane_info
+    peripheral_group: bf
+    number_of_peripherals: c_N_beamsets
+    mm_port_names:
+      - REG_RING_LANE_INFO_BF
+   
+  - peripheral_name: dp/dp_bsn_monitor_v2
+    peripheral_group: ring_rx_bf
+    number_of_peripherals: c_N_beamsets
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_lane_nof_rx_monitors }
+    mm_port_names:
+      - REG_BSN_MONITOR_V2_RING_RX_BF
+
+  - peripheral_name: dp/dp_bsn_monitor_v2
+    peripheral_group: ring_tx_bf
+    number_of_peripherals: c_N_beamsets
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_lane_nof_tx_monitors }
+    mm_port_names:
+      - REG_BSN_MONITOR_V2_RING_TX_BF
+
+  - peripheral_name: dp/dp_block_validate_err
+    peripheral_group: bf
+    number_of_peripherals: c_N_beamsets
+    parameter_overrides:
+      - { name: g_nof_err_counts, value: c_lane_nof_err_counts }
+    mm_port_names:
+      - REG_DP_BLOCK_VALIDATE_ERR_BF
+
+  - peripheral_name: dp/dp_block_validate_bsn_at_sync
+    peripheral_group: bf
+    number_of_peripherals: c_N_beamsets
+    mm_port_names:
+      - REG_DP_BLOCK_VALIDATE_BSN_AT_SYNC_BF
+
+  - peripheral_name: disturb/disturb_bf_scale
+    number_of_peripherals: c_N_beamsets
+    peripheral_span: 2 * MM_BUS_SIZE  # number_of_ports = 1, mm_port_span = 2 words
+    parameter_overrides:
+      - { name: g_gain_w, value: c_W_beamlet_scale }
+      - { name: g_lsb_w, value: 0 - c_W_beamlet_resolution}
+    mm_port_names:
+      - REG_BF_SCALE
+
+  - peripheral_name: disturb/disturb_beamformer_output_hdr_dat
+    number_of_peripherals: c_N_beamsets
+    peripheral_span: 64 * MM_BUS_SIZE  # number_of_ports = 1, mm_port_span = 64 words
+    mm_port_names:
+      - REG_HDR_DAT
+
+  - peripheral_name: dp/dp_xonoff
+    number_of_peripherals: c_N_beamsets
+    peripheral_span: 2 * MM_BUS_SIZE  # number_of_ports = 1, mm_port_span = 2 words
+    parameter_overrides:
+      - { name: g_nof_streams, value: 1 }
+      - { name: g_combine_streams, value: False }
+    mm_port_names:
+      - REG_DP_XONOFF
+
+  - peripheral_name: st/st_bst_for_disturb
+    number_of_peripherals: c_N_beamsets
+    peripheral_span: ceil_pow2(c_stat_data_sz * c_S_sub_bf * c_N_pol_bf) * MM_BUS_SIZE  # number_of_ports = 1, mm_port_span = ceil_pow2(c_stat_data_sz * c_S_sub_bf * c_N_pol_bf) words
+    mm_port_names:
+      - RAM_ST_BST
+
+  - peripheral_name: common/common_variable_delay
+    peripheral_group: bst
+    number_of_peripherals: c_N_beamsets
+    peripheral_span: 2 * MM_BUS_SIZE  # number_of_ports = 1, mm_port_span = 2 words
+    mm_port_names:
+      - REG_STAT_ENABLE_BST
+
+  - peripheral_name: disturb/disturb_statistics_offload_hdr_dat_bst
+    peripheral_group: bst
+    number_of_peripherals: c_N_beamsets
+    peripheral_span: 64 * MM_BUS_SIZE  # number_of_ports = 1, mm_port_span = 64 words
+    mm_port_names:
+      - REG_STAT_HDR_DAT_BST
+
+  - peripheral_name: dp/dp_bsn_monitor_v2
+    peripheral_group: bst_udp
+    number_of_peripherals: c_N_beamsets
+    parameter_overrides:
+      - { name: g_nof_streams, value: 1 }
+    mm_port_names:
+      - REG_BSN_MONITOR_V2_BST_OFFLOAD
+
+  - peripheral_name: dp/dp_bsn_monitor_v2
+    peripheral_group: beamlet_output
+    number_of_peripherals: c_N_beamsets
+    parameter_overrides:
+      - { name: g_nof_streams, value: 1 }
+    mm_port_names:
+      - REG_BSN_MONITOR_V2_BEAMLET_OUTPUT
+
+  - peripheral_name: nw_10GbE/nw_10GbE_unb2legacy # For beamlet output
+    peripheral_group: beamlet_output
+    parameter_overrides:
+      - { name: g_nof_macs, value: 1 }
+    mm_port_names:
+      - REG_NW_10GBE_MAC
+
+  - peripheral_name: nw_10GbE/nw_10GbE_eth10g # For beamlet output
+    peripheral_group: beamlet_output
+    parameter_overrides:
+      - { name: g_nof_macs, value: 1 }
+    mm_port_names:
+      - REG_NW_10GBE_ETH10G
diff --git a/applications/disturb2/libraries/disturb/disturb.peripheral.yaml b/applications/disturb2/libraries/disturb/disturb.peripheral.yaml
index 93f17e9ce773b27f6e47fa75e9a80014a1af9853..4d4b20603cd7c23e2d9cc79060b69e2ad32dd351 100644
--- a/applications/disturb2/libraries/disturb/disturb.peripheral.yaml
+++ b/applications/disturb2/libraries/disturb/disturb.peripheral.yaml
@@ -3,18 +3,18 @@ schema_version: 1.0
 schema_type: peripheral
 
 hdl_library_name: disturb
-hdl_library_description: "Station Digital Processor (DISTURB) for LOFAR2.0"
+hdl_library_description: "Station Digital Processor (SDP) for DISTURB2 (Based on SDP for LOFAR2.0)"
 
 peripherals:
-  - peripheral_name: disturb_info    # pi_disturb_info.py
-    peripheral_description: "DISTURB info."
+  - peripheral_name: sdp_info    # pi_sdp_info.py
+    peripheral_description: "SDP info."
     mm_ports:
-      # MM port for disturb_info.vhd
-      - mm_port_name: REG_DISTURB_INFO
+      # MM port for sdp_info.vhd
+      - mm_port_name: REG_SDP_INFO
         mm_port_type: REG
         mm_port_span: 16 * MM_BUS_SIZE
         mm_port_description: |
-          "The DISTURB info contains central DISTURB information. The station_id applies to the entire station.
+          "The SDP info contains central SDP information. The station_id applies to the entire station.
            The other info fields apply per antenna band (low band or high band). An FPGA node only
            participates in one band."
         fields:
@@ -28,15 +28,15 @@ peripherals:
           - - { field_name: block_period,            mm_width: 16, access_mode: RO, address_offset: 0x0  }
 
 
-  - peripheral_name: disturb_crosslets_subband_select    # pi_disturb_crosslets_info.py 
-    peripheral_description: "DISTURB crosslets info."
+  - peripheral_name: sdp_crosslets_subband_select    # pi_sdp_crosslets_info.py 
+    peripheral_description: "SDP crosslets info."
     mm_ports:
-      # MM port for disturb_info.vhd
+      # MM port for sdp_info.vhd
       - mm_port_name: REG_CROSSLETS_INFO
         mm_port_type: REG
         mm_port_span: 16 * MM_BUS_SIZE
         mm_port_description: |
-          "The DISTURB crosslets info contains the step size and 15 offsets, that are used to select a new 
+          "The SDP crosslets info contains the step size and 15 offsets, that are used to select a new 
            crosslet subband for every integration interval"
         fields:
           - - { field_name: step, access_mode: RW, address_offset: 0x3C }
@@ -44,28 +44,28 @@ peripherals:
               number_of_fields: 15  
               address_offset: 0x0
 
-  - peripheral_name: disturb_nof_crosslets    # pi_disturb_nof_crosslets.py 
-    peripheral_description: "DISTURB nof crosslets."
+  - peripheral_name: sdp_nof_crosslets    # pi_sdp_nof_crosslets.py 
+    peripheral_description: "SDP nof crosslets."
     mm_ports:
       - mm_port_name: REG_NOF_CROSSLETS
         mm_port_type: REG
         mm_port_span: 2 * MM_BUS_SIZE
         mm_port_description: |
-          "The DISTURB nof crosslets contains the number of crosslets that are being sent out the UDP offload
+          "The SDP nof crosslets contains the number of crosslets that are being sent out the UDP offload
            where 1 <= nof_crosslets <= N_crosslets_max"
         fields:
           - - { field_name: nof_crosslets, access_mode: RW, address_offset: 0x0 }
           - - { field_name: unused,        access_mode: RW, address_offset: 0x4 }
 
-  - peripheral_name: disturb_subband_equalizer    # pi_disturb_subband_equalizer.py
-    peripheral_description: "DISTURB Subband equalizer coefficients."
+  - peripheral_name: sdp_subband_equalizer    # pi_sdp_subband_equalizer.py
+    peripheral_description: "SDP Subband equalizer coefficients."
     parameters:
-      # Parameters of pi_disturb_subband_equalizer.py, fixed in disturb_subband_equalizer.vhd / disturb_pkg.vhd
+      # Parameters of pi_sdp_subband_equalizer.py, fixed in sdp_subband_equalizer.vhd / sdp_pkg.vhd
       - { name: P_pfb, value: 6 }  # P_pfb = S_pn / Q_fft = 12 / 2 = 6
       - { name: Q_fft, value: 2 }
       - { name: N_sub, value: 512 }
     mm_ports:
-      # MM port for disturb_subband_equalizer.vhd
+      # MM port for sdp_subband_equalizer.vhd
       - mm_port_name: RAM_EQUALIZER_GAINS
         mm_port_type: RAM
         mm_port_span: ceil_pow2(Q_fft * N_sub) * MM_BUS_SIZE
@@ -75,7 +75,7 @@ peripherals:
 
            (cint16)subband_weights[S_pn/Q_fft]_[Q_fft][N_sub]
 
-           where S_pn = 12, Q_fft = 2 and N_sub = 512 are defined in disturb_pkg.vhd."
+           where S_pn = 12, Q_fft = 2 and N_sub = 512 are defined in sdp_pkg.vhd."
         number_of_mm_ports: P_pfb
         fields:
           - - field_name: coef
@@ -88,16 +88,16 @@ peripherals:
               radix: cint16_ir
 
 
-  - peripheral_name: disturb_bf_weights    # pi_disturb_bf_weights.py
-    peripheral_description: "DISTURB Beamformer weights (= beamlet weights)."
+  - peripheral_name: sdp_bf_weights    # pi_sdp_bf_weights.py
+    peripheral_description: "SDP Beamformer weights (= beamlet weights)."
     parameters:
-      # Parameters of pi_disturb_bf_weights.py, fixed in disturb_bf_weights.vhd / disturb_pkg.vhd
+      # Parameters of pi_sdp_bf_weights.py, fixed in sdp_bf_weights.vhd / sdp_pkg.vhd
       - { name: N_pol_bf, value: 2 }
       - { name: P_pfb, value: 6 }  # P_pfb = S_pn / Q_fft = 12 / 2 = 6
       - { name: Q_fft, value: 2 }
       - { name: S_sub_bf, value: 488 }
     mm_ports:
-      # MM port for disturb_beamformer_local.vhd / disturb_bf_weights.vhd / mms_dp_gain_serial_arr.vhd
+      # MM port for sdp_beamformer_local.vhd / sdp_bf_weights.vhd / mms_dp_gain_serial_arr.vhd
       - mm_port_name: RAM_BF_WEIGHTS
         mm_port_type: RAM
         mm_port_span: ceil_pow2(Q_fft * S_sub_bf) * MM_BUS_SIZE
@@ -110,7 +110,7 @@ peripherals:
 
            (cint16)bf_weights[N_pol_bf][P_pfb]_[Q_fft][S_sub_bf]
 
-           where N_pol_bf = 2, P_pfb = 6 and Q_fft = 2 and S_sub_bf = 488, defined in disturb_pkg.vhd.
+           where N_pol_bf = 2, P_pfb = 6 and Q_fft = 2 and S_sub_bf = 488, defined in sdp_pkg.vhd.
 
            The pairs of Q_fft signal inputs that are multiplexed per block are mapped to the N_pol = 2
            polarizations of an antenna. Therefore A_pn = P_pfb = 6 is the number dual polarization
@@ -119,7 +119,7 @@ peripherals:
 
            (cint16)bf_weights[N_pol_bf][A_pn]_[N_pol][S_sub_bf]
 
-           where N_pol_bf = 2, A_pn = 6 and N_pol = 2 and S_sub_bf = 488, defined in disturb_pkg.vhd.
+           where N_pol_bf = 2, A_pn = 6 and N_pol = 2 and S_sub_bf = 488, defined in sdp_pkg.vhd.
 
            The BF weights can implement the full 2x2 Jones matrix for weighting and adding the
            signal input polarizations [x, y] per dual polarization antenna. The polarization index
@@ -139,14 +139,14 @@ peripherals:
               radix: cint16_ir
 
 
-  - peripheral_name: disturb_bf_scale    # pi_disturb_bf_scale.py
-    peripheral_description: "DISTURB BF beamlet data output scaling and requantization."
+  - peripheral_name: sdp_bf_scale    # pi_sdp_bf_scale.py
+    peripheral_description: "SDP BF beamlet data output scaling and requantization."
     parameters:
-      # Parameters fixed in node_disturb_beamformer.vhd / mms_dp_scale.vhd / disturb_pkg.vhd
+      # Parameters fixed in node_sdp_beamformer.vhd / mms_dp_scale.vhd / sdp_pkg.vhd
       - { name: g_gain_w, value: 16 }
       - { name: g_lsb_w, value: 15 }
     mm_ports:
-      # MM port for node_disturb_beamformer.vhd / mms_dp_scale.vhd / mms_dp_gain.vhd / mms_dp_gain_arr.vhd
+      # MM port for node_sdp_beamformer.vhd / mms_dp_scale.vhd / mms_dp_gain.vhd / mms_dp_gain_arr.vhd
       - mm_port_name: REG_BF_SCALE
         mm_port_type: REG
         mm_port_span: 2 * MM_BUS_SIZE
@@ -175,10 +175,10 @@ peripherals:
               address_offset: 0x4
 
 
-  - peripheral_name: disturb_beamformer_output_hdr_dat  #  pi_dp_offload_tx_hdr_dat_lofar2_beamformer_output.py
-    peripheral_description: "DISTURB BF beamlet data output header."
+  - peripheral_name: sdp_beamformer_output_hdr_dat  #  pi_dp_offload_tx_hdr_dat_lofar2_beamformer_output.py
+    peripheral_description: "SDP BF beamlet data output header."
     mm_ports:
-      # MM port for disturb_beamformer_output.vhd / dp_offload_tx_v3.vhd
+      # MM port for sdp_beamformer_output.vhd / dp_offload_tx_v3.vhd
       - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT
         mm_port_type: REG
         mm_port_span: 64 * MM_BUS_SIZE
@@ -229,32 +229,32 @@ peripherals:
           - - { field_name: udp_length,                         mm_width: 16,                                access_mode: RW, address_offset: 0x58 }
           - - { field_name: udp_checksum,                       mm_width: 16,                                access_mode: RW, address_offset: 0x54 }
           # application field group
-          - - { field_name: disturb_marker,                         mm_width:  8,                                access_mode: RO, address_offset: 0x50 }
-          - - { field_name: disturb_version_id,                     mm_width:  8,                                access_mode: RO, address_offset: 0x4C }
-          - - { field_name: disturb_observation_id,                 mm_width: 32,                                access_mode: RW, address_offset: 0x48 }
-          - - { field_name: disturb_station_id,                     mm_width: 16,                                access_mode: RW, address_offset: 0x44 }
-          - - { field_name: disturb_source_info_antenna_band_index, mm_width:  1, bit_offset: 15,                access_mode: RW, address_offset: 0x40 }
-          - - { field_name: disturb_source_info_nyquist_zone_index, mm_width:  2, bit_offset: 13,                access_mode: RW, address_offset: 0x3C }
-          - - { field_name: disturb_source_info_f_adc,              mm_width:  1, bit_offset: 12,                access_mode: RW, address_offset: 0x38 }
-          - - { field_name: disturb_source_info_fsub_type,          mm_width:  1, bit_offset: 11,                access_mode: RW, address_offset: 0x34 }
-          - - { field_name: disturb_source_info_payload_error,      mm_width:  1, bit_offset: 10,                access_mode: RW, address_offset: 0x30 }
-          - - { field_name: disturb_source_info_repositioning_flag, mm_width:  1, bit_offset:  9,                access_mode: RW, address_offset: 0x2C }
-          - - { field_name: disturb_source_info_beamlet_width,      mm_width:  3, bit_offset:  5,                access_mode: RW, address_offset: 0x28 }
-          - - { field_name: disturb_source_info_gn_index,           mm_width:  5, bit_offset:  0,                access_mode: RW, address_offset: 0x24 }
-
-          - - { field_name: disturb_reserved,                       mm_width: 32, user_width: 40, radix: uint64, access_mode: RW, address_offset: 0x1C }
-          - - { field_name: disturb_beamlet_scale,                  mm_width: 16,                                access_mode: RW, address_offset: 0x18 }
-          - - { field_name: disturb_beamlet_index,                  mm_width: 16,                                access_mode: RW, address_offset: 0x14 }
-          - - { field_name: disturb_nof_blocks_per_packet,          mm_width:  8,                                access_mode: RW, address_offset: 0x10 }
-          - - { field_name: disturb_nof_beamlets_per_block,         mm_width: 16,                                access_mode: RW, address_offset: 0xC }
-          - - { field_name: disturb_block_period,                   mm_width: 16,                                access_mode: RW, address_offset: 0x8 }
+          - - { field_name: sdp_marker,                         mm_width:  8,                                access_mode: RO, address_offset: 0x50 }
+          - - { field_name: sdp_version_id,                     mm_width:  8,                                access_mode: RO, address_offset: 0x4C }
+          - - { field_name: sdp_observation_id,                 mm_width: 32,                                access_mode: RW, address_offset: 0x48 }
+          - - { field_name: sdp_station_id,                     mm_width: 16,                                access_mode: RW, address_offset: 0x44 }
+          - - { field_name: sdp_source_info_antenna_band_index, mm_width:  1, bit_offset: 15,                access_mode: RW, address_offset: 0x40 }
+          - - { field_name: sdp_source_info_nyquist_zone_index, mm_width:  2, bit_offset: 13,                access_mode: RW, address_offset: 0x3C }
+          - - { field_name: sdp_source_info_f_adc,              mm_width:  1, bit_offset: 12,                access_mode: RW, address_offset: 0x38 }
+          - - { field_name: sdp_source_info_fsub_type,          mm_width:  1, bit_offset: 11,                access_mode: RW, address_offset: 0x34 }
+          - - { field_name: sdp_source_info_payload_error,      mm_width:  1, bit_offset: 10,                access_mode: RW, address_offset: 0x30 }
+          - - { field_name: sdp_source_info_repositioning_flag, mm_width:  1, bit_offset:  9,                access_mode: RW, address_offset: 0x2C }
+          - - { field_name: sdp_source_info_beamlet_width,      mm_width:  3, bit_offset:  5,                access_mode: RW, address_offset: 0x28 }
+          - - { field_name: sdp_source_info_gn_index,           mm_width:  5, bit_offset:  0,                access_mode: RW, address_offset: 0x24 }
+
+          - - { field_name: sdp_reserved,                       mm_width: 32, user_width: 40, radix: uint64, access_mode: RW, address_offset: 0x1C }
+          - - { field_name: sdp_beamlet_scale,                  mm_width: 16,                                access_mode: RW, address_offset: 0x18 }
+          - - { field_name: sdp_beamlet_index,                  mm_width: 16,                                access_mode: RW, address_offset: 0x14 }
+          - - { field_name: sdp_nof_blocks_per_packet,          mm_width:  8,                                access_mode: RW, address_offset: 0x10 }
+          - - { field_name: sdp_nof_beamlets_per_block,         mm_width: 16,                                access_mode: RW, address_offset: 0xC }
+          - - { field_name: sdp_block_period,                   mm_width: 16,                                access_mode: RW, address_offset: 0x8 }
           - - { field_name: BSN,                                mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 }
 
 
-  - peripheral_name: disturb_statistics_offload_hdr_dat_sst  #  pi_dp_offload_tx_hdr_dat_lofar2_disturb_statistics_offload.py
-    peripheral_description: "DISTURB statistics offload header for the subband statistics (SST)."
+  - peripheral_name: sdp_statistics_offload_hdr_dat_sst  #  pi_dp_offload_tx_hdr_dat_lofar2_sdp_statistics_offload.py
+    peripheral_description: "SDP statistics offload header for the subband statistics (SST)."
     mm_ports:
-      # MM port for disturb_statistics_offload.vhd / dp_offload_tx_v3.vhd
+      # MM port for sdp_statistics_offload.vhd / dp_offload_tx_v3.vhd
       - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT
         mm_port_type: REG
         mm_port_span: 64 * MM_BUS_SIZE
@@ -264,9 +264,9 @@ peripherals:
            The Subband statistics (SST) are integrated auto power values of the subbands per signal input.
            The SST specific settings are defined by data_id_sst.
 
-           The statistics offload header fields are described in ICD SC-DISTURB [1].
+           The statistics offload header fields are described in ICD SC-SDP [1].
 
-           [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20DISTURB%20ICD
+           [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20SDP%20ICD
           "
         fields:
           # eth field group
@@ -293,37 +293,37 @@ peripherals:
           - - { field_name: udp_length,                              mm_width: 16,                                access_mode: RW, address_offset: 0x5C }
           - - { field_name: udp_checksum,                            mm_width: 16,                                access_mode: RW, address_offset: 0x58 }
           # application field group
-          - - { field_name: disturb_marker,                              mm_width:  8,                                access_mode: RO, address_offset: 0x54 }
-          - - { field_name: disturb_version_id,                          mm_width:  8,                                access_mode: RO, address_offset: 0x50 }
-          - - { field_name: disturb_observation_id,                      mm_width: 32,                                access_mode: RW, address_offset: 0x4C }
-          - - { field_name: disturb_station_id,                          mm_width: 16,                                access_mode: RW, address_offset: 0x48 }
-          - - { field_name: disturb_source_info_antenna_band_index,      mm_width:  1, bit_offset: 15,                access_mode: RW, address_offset: 0x44 }
-          - - { field_name: disturb_source_info_nyquist_zone_index,      mm_width:  2, bit_offset: 13,                access_mode: RW, address_offset: 0x40 }
-          - - { field_name: disturb_source_info_f_adc,                   mm_width:  1, bit_offset: 12,                access_mode: RW, address_offset: 0x3C }
-          - - { field_name: disturb_source_info_fsub_type,               mm_width:  1, bit_offset: 11,                access_mode: RW, address_offset: 0x38 }
-          - - { field_name: disturb_source_info_payload_error,           mm_width:  1, bit_offset: 10,                access_mode: RW, address_offset: 0x34 }
-          - - { field_name: disturb_source_info_beam_repositioning_flag, mm_width:  1, bit_offset:  9,                access_mode: RW, address_offset: 0x30 }
-          - - { field_name: disturb_source_info_weighted_subbands_flag,  mm_width:  1, bit_offset:  8,                access_mode: RW, address_offset: 0x2C }
-          - - { field_name: disturb_source_info_reserved,                mm_width:  3, bit_offset:  5,                access_mode: RW, address_offset: 0x28 }
-          - - { field_name: disturb_source_info_gn_index,                mm_width:  5, bit_offset:  0,                access_mode: RW, address_offset: 0x24 }
-          - - { field_name: disturb_reserved,                            mm_width:  8,                                access_mode: RW, address_offset: 0x20 }
-          - - { field_name: disturb_integration_interval,                mm_width: 24,                                access_mode: RW, address_offset: 0x1C }
-          - - { field_name: disturb_data_id,                             mm_width: 32,                                access_mode: RW, address_offset: 0x18 }
-          - "disturb_data_id_sst":
+          - - { field_name: sdp_marker,                              mm_width:  8,                                access_mode: RO, address_offset: 0x54 }
+          - - { field_name: sdp_version_id,                          mm_width:  8,                                access_mode: RO, address_offset: 0x50 }
+          - - { field_name: sdp_observation_id,                      mm_width: 32,                                access_mode: RW, address_offset: 0x4C }
+          - - { field_name: sdp_station_id,                          mm_width: 16,                                access_mode: RW, address_offset: 0x48 }
+          - - { field_name: sdp_source_info_antenna_band_index,      mm_width:  1, bit_offset: 15,                access_mode: RW, address_offset: 0x44 }
+          - - { field_name: sdp_source_info_nyquist_zone_index,      mm_width:  2, bit_offset: 13,                access_mode: RW, address_offset: 0x40 }
+          - - { field_name: sdp_source_info_f_adc,                   mm_width:  1, bit_offset: 12,                access_mode: RW, address_offset: 0x3C }
+          - - { field_name: sdp_source_info_fsub_type,               mm_width:  1, bit_offset: 11,                access_mode: RW, address_offset: 0x38 }
+          - - { field_name: sdp_source_info_payload_error,           mm_width:  1, bit_offset: 10,                access_mode: RW, address_offset: 0x34 }
+          - - { field_name: sdp_source_info_beam_repositioning_flag, mm_width:  1, bit_offset:  9,                access_mode: RW, address_offset: 0x30 }
+          - - { field_name: sdp_source_info_weighted_subbands_flag,  mm_width:  1, bit_offset:  8,                access_mode: RW, address_offset: 0x2C }
+          - - { field_name: sdp_source_info_reserved,                mm_width:  3, bit_offset:  5,                access_mode: RW, address_offset: 0x28 }
+          - - { field_name: sdp_source_info_gn_index,                mm_width:  5, bit_offset:  0,                access_mode: RW, address_offset: 0x24 }
+          - - { field_name: sdp_reserved,                            mm_width:  8,                                access_mode: RW, address_offset: 0x20 }
+          - - { field_name: sdp_integration_interval,                mm_width: 24,                                access_mode: RW, address_offset: 0x1C }
+          - - { field_name: sdp_data_id,                             mm_width: 32,                                access_mode: RW, address_offset: 0x18 }
+          - "sdp_data_id_sst":
             - { field_name: reserved,                                mm_width: 24, bit_offset:  8,                access_mode: RW, address_offset: 0x18 }
             - { field_name: signal_input_index,                      mm_width:  8, bit_offset:  0,                access_mode: RW, address_offset: 0x18 }
 
-          - - { field_name: disturb_nof_signal_inputs,                   mm_width:  8,                                access_mode: RW, address_offset: 0x14 }
-          - - { field_name: disturb_nof_bytes_per_statistic,             mm_width:  8,                                access_mode: RW, address_offset: 0x10 }
-          - - { field_name: disturb_nof_statistics_per_packet,           mm_width: 16,                                access_mode: RW, address_offset: 0xC }
-          - - { field_name: disturb_block_period,                        mm_width: 16,                                access_mode: RW, address_offset: 0x8 }
+          - - { field_name: sdp_nof_signal_inputs,                   mm_width:  8,                                access_mode: RW, address_offset: 0x14 }
+          - - { field_name: sdp_nof_bytes_per_statistic,             mm_width:  8,                                access_mode: RW, address_offset: 0x10 }
+          - - { field_name: sdp_nof_statistics_per_packet,           mm_width: 16,                                access_mode: RW, address_offset: 0xC }
+          - - { field_name: sdp_block_period,                        mm_width: 16,                                access_mode: RW, address_offset: 0x8 }
           - - { field_name: BSN,                                     mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 }
 
 
-  - peripheral_name: disturb_statistics_offload_hdr_dat_bst  #  pi_dp_offload_tx_hdr_dat_lofar2_disturb_statistics_offload.py
-    peripheral_description: "DISTURB statistics offload header for the beamlet statistics (BST)."
+  - peripheral_name: sdp_statistics_offload_hdr_dat_bst  #  pi_dp_offload_tx_hdr_dat_lofar2_sdp_statistics_offload.py
+    peripheral_description: "SDP statistics offload header for the beamlet statistics (BST)."
     mm_ports:
-      # MM port for disturb_statistics_offload.vhd / dp_offload_tx_v3.vhd
+      # MM port for sdp_statistics_offload.vhd / dp_offload_tx_v3.vhd
       - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT
         mm_port_type: REG
         mm_port_span: 64 * MM_BUS_SIZE
@@ -333,9 +333,9 @@ peripherals:
            The beamlet statistics (BST) are integrated auto power values of the beamlets per beamset
            The BST specific settings are defined by data_id_bst.
 
-           The statistics offload header fields are described in ICD SC-DISTURB [1].
+           The statistics offload header fields are described in ICD SC-SDP [1].
 
-           [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20DISTURB%20ICD
+           [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20SDP%20ICD
           "
         fields:
           # eth field group
@@ -362,23 +362,23 @@ peripherals:
           - - { field_name: udp_length,                              mm_width: 16,                                access_mode: RW, address_offset: 0x5C }
           - - { field_name: udp_checksum,                            mm_width: 16,                                access_mode: RW, address_offset: 0x58 }
           # application field group
-          - - { field_name: disturb_marker,                              mm_width:  8,                                access_mode: RO, address_offset: 0x54 }
-          - - { field_name: disturb_version_id,                          mm_width:  8,                                access_mode: RO, address_offset: 0x50 }
-          - - { field_name: disturb_observation_id,                      mm_width: 32,                                access_mode: RW, address_offset: 0x4C }
-          - - { field_name: disturb_station_id,                          mm_width: 16,                                access_mode: RW, address_offset: 0x48 }
-          - - { field_name: disturb_source_info_antenna_band_index,      mm_width:  1, bit_offset: 15,                access_mode: RW, address_offset: 0x44 }
-          - - { field_name: disturb_source_info_nyquist_zone_index,      mm_width:  2, bit_offset: 13,                access_mode: RW, address_offset: 0x40 }
-          - - { field_name: disturb_source_info_f_adc,                   mm_width:  1, bit_offset: 12,                access_mode: RW, address_offset: 0x3C }
-          - - { field_name: disturb_source_info_fsub_type,               mm_width:  1, bit_offset: 11,                access_mode: RW, address_offset: 0x38 }
-          - - { field_name: disturb_source_info_payload_error,           mm_width:  1, bit_offset: 10,                access_mode: RW, address_offset: 0x34 }
-          - - { field_name: disturb_source_info_beam_repositioning_flag, mm_width:  1, bit_offset:  9,                access_mode: RW, address_offset: 0x30 }
-          - - { field_name: disturb_source_info_weighted_subbands_flag,  mm_width:  1, bit_offset:  8,                access_mode: RW, address_offset: 0x2C }
-          - - { field_name: disturb_source_info_reserved,                mm_width:  3, bit_offset:  5,                access_mode: RW, address_offset: 0x28 }
-          - - { field_name: disturb_source_info_gn_index,                mm_width:  5, bit_offset:  0,                access_mode: RW, address_offset: 0x24 }
-          - - { field_name: disturb_reserved,                            mm_width:  8,                                access_mode: RW, address_offset: 0x20 }
-          - - { field_name: disturb_integration_interval,                mm_width: 24,                                access_mode: RW, address_offset: 0x1C }
-          - - { field_name: disturb_data_id,                             mm_width: 32,                                access_mode: RW, address_offset: 0x18 }
-          - "disturb_data_id_bst":
+          - - { field_name: sdp_marker,                              mm_width:  8,                                access_mode: RO, address_offset: 0x54 }
+          - - { field_name: sdp_version_id,                          mm_width:  8,                                access_mode: RO, address_offset: 0x50 }
+          - - { field_name: sdp_observation_id,                      mm_width: 32,                                access_mode: RW, address_offset: 0x4C }
+          - - { field_name: sdp_station_id,                          mm_width: 16,                                access_mode: RW, address_offset: 0x48 }
+          - - { field_name: sdp_source_info_antenna_band_index,      mm_width:  1, bit_offset: 15,                access_mode: RW, address_offset: 0x44 }
+          - - { field_name: sdp_source_info_nyquist_zone_index,      mm_width:  2, bit_offset: 13,                access_mode: RW, address_offset: 0x40 }
+          - - { field_name: sdp_source_info_f_adc,                   mm_width:  1, bit_offset: 12,                access_mode: RW, address_offset: 0x3C }
+          - - { field_name: sdp_source_info_fsub_type,               mm_width:  1, bit_offset: 11,                access_mode: RW, address_offset: 0x38 }
+          - - { field_name: sdp_source_info_payload_error,           mm_width:  1, bit_offset: 10,                access_mode: RW, address_offset: 0x34 }
+          - - { field_name: sdp_source_info_beam_repositioning_flag, mm_width:  1, bit_offset:  9,                access_mode: RW, address_offset: 0x30 }
+          - - { field_name: sdp_source_info_weighted_subbands_flag,  mm_width:  1, bit_offset:  8,                access_mode: RW, address_offset: 0x2C }
+          - - { field_name: sdp_source_info_reserved,                mm_width:  3, bit_offset:  5,                access_mode: RW, address_offset: 0x28 }
+          - - { field_name: sdp_source_info_gn_index,                mm_width:  5, bit_offset:  0,                access_mode: RW, address_offset: 0x24 }
+          - - { field_name: sdp_reserved,                            mm_width:  8,                                access_mode: RW, address_offset: 0x20 }
+          - - { field_name: sdp_integration_interval,                mm_width: 24,                                access_mode: RW, address_offset: 0x1C }
+          - - { field_name: sdp_data_id,                             mm_width: 32,                                access_mode: RW, address_offset: 0x18 }
+          - "sdp_data_id_bst":
             - { field_name: reserved,                                mm_width: 16, bit_offset: 16,                access_mode: RW, address_offset: 0x18 }
             - { field_name: beamlet_index,                           mm_width: 16, bit_offset:  0,                access_mode: RW, address_offset: 0x18 }
 
@@ -389,10 +389,10 @@ peripherals:
           - - { field_name: BSN,                                     mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 }
 
 
-  - peripheral_name: disturb_statistics_offload_hdr_dat_xst  #  pi_dp_offload_tx_hdr_dat_lofar2_disturb_statistics_offload.py
-    peripheral_description: "DISTURB statistics offload header for the cross-subband statistics (XST)."
+  - peripheral_name: sdp_statistics_offload_hdr_dat_xst  #  pi_dp_offload_tx_hdr_dat_lofar2_sdp_statistics_offload.py
+    peripheral_description: "SDP statistics offload header for the cross-subband statistics (XST)."
     mm_ports:
-      # MM port for disturb_statistics_offload.vhd / dp_offload_tx_v3.vhd
+      # MM port for sdp_statistics_offload.vhd / dp_offload_tx_v3.vhd
       - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT
         mm_port_type: REG
         mm_port_span: 64 * MM_BUS_SIZE
@@ -403,9 +403,9 @@ peripherals:
            pairs of signal inputs per suband.
            The XST specific settings are defined by data_id_xst.
 
-           The statistics offload header fields are described in ICD SC-DISTURB [1].
+           The statistics offload header fields are described in ICD SC-SDP [1].
 
-           [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20DISTURB%20ICD
+           [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20SDP%20ICD
           "
         fields:
           # eth field group
@@ -432,23 +432,23 @@ peripherals:
           - - { field_name: udp_length,                              mm_width: 16,                                access_mode: RW, address_offset: 0x5C }
           - - { field_name: udp_checksum,                            mm_width: 16,                                access_mode: RW, address_offset: 0x58 }
           # application field group
-          - - { field_name: disturb_marker,                              mm_width:  8,                                access_mode: RO, address_offset: 0x54 }
-          - - { field_name: disturb_version_id,                          mm_width:  8,                                access_mode: RO, address_offset: 0x50 }
-          - - { field_name: disturb_observation_id,                      mm_width: 32,                                access_mode: RW, address_offset: 0x4C }
-          - - { field_name: disturb_station_id,                          mm_width: 16,                                access_mode: RW, address_offset: 0x48 }
-          - - { field_name: disturb_source_info_antenna_band_index,      mm_width:  1, bit_offset: 15,                access_mode: RW, address_offset: 0x44 }
-          - - { field_name: disturb_source_info_nyquist_zone_index,      mm_width:  2, bit_offset: 13,                access_mode: RW, address_offset: 0x40 }
-          - - { field_name: disturb_source_info_f_adc,                   mm_width:  1, bit_offset: 12,                access_mode: RW, address_offset: 0x3C }
-          - - { field_name: disturb_source_info_fsub_type,               mm_width:  1, bit_offset: 11,                access_mode: RW, address_offset: 0x38 }
-          - - { field_name: disturb_source_info_payload_error,           mm_width:  1, bit_offset: 10,                access_mode: RW, address_offset: 0x34 }
-          - - { field_name: disturb_source_info_beam_repositioning_flag, mm_width:  1, bit_offset:  9,                access_mode: RW, address_offset: 0x30 }
-          - - { field_name: disturb_source_info_weighted_subbands_flag,  mm_width:  1, bit_offset:  8,                access_mode: RW, address_offset: 0x2C }
-          - - { field_name: disturb_source_info_reserved,                mm_width:  3, bit_offset:  5,                access_mode: RW, address_offset: 0x28 }
-          - - { field_name: disturb_source_info_gn_index,                mm_width:  5, bit_offset:  0,                access_mode: RW, address_offset: 0x24 }
-          - - { field_name: disturb_reserved,                            mm_width:  8,                                access_mode: RW, address_offset: 0x20 }
-          - - { field_name: disturb_integration_interval,                mm_width: 24,                                access_mode: RW, address_offset: 0x1C }
-          - - { field_name: disturb_data_id,                             mm_width: 32,                                access_mode: RW, address_offset: 0x18 }
-          - "disturb_data_id_xst":
+          - - { field_name: sdp_marker,                              mm_width:  8,                                access_mode: RO, address_offset: 0x54 }
+          - - { field_name: sdp_version_id,                          mm_width:  8,                                access_mode: RO, address_offset: 0x50 }
+          - - { field_name: sdp_observation_id,                      mm_width: 32,                                access_mode: RW, address_offset: 0x4C }
+          - - { field_name: sdp_station_id,                          mm_width: 16,                                access_mode: RW, address_offset: 0x48 }
+          - - { field_name: sdp_source_info_antenna_band_index,      mm_width:  1, bit_offset: 15,                access_mode: RW, address_offset: 0x44 }
+          - - { field_name: sdp_source_info_nyquist_zone_index,      mm_width:  2, bit_offset: 13,                access_mode: RW, address_offset: 0x40 }
+          - - { field_name: sdp_source_info_f_adc,                   mm_width:  1, bit_offset: 12,                access_mode: RW, address_offset: 0x3C }
+          - - { field_name: sdp_source_info_fsub_type,               mm_width:  1, bit_offset: 11,                access_mode: RW, address_offset: 0x38 }
+          - - { field_name: sdp_source_info_payload_error,           mm_width:  1, bit_offset: 10,                access_mode: RW, address_offset: 0x34 }
+          - - { field_name: sdp_source_info_beam_repositioning_flag, mm_width:  1, bit_offset:  9,                access_mode: RW, address_offset: 0x30 }
+          - - { field_name: sdp_source_info_weighted_subbands_flag,  mm_width:  1, bit_offset:  8,                access_mode: RW, address_offset: 0x2C }
+          - - { field_name: sdp_source_info_reserved,                mm_width:  3, bit_offset:  5,                access_mode: RW, address_offset: 0x28 }
+          - - { field_name: sdp_source_info_gn_index,                mm_width:  5, bit_offset:  0,                access_mode: RW, address_offset: 0x24 }
+          - - { field_name: sdp_reserved,                            mm_width:  8,                                access_mode: RW, address_offset: 0x20 }
+          - - { field_name: sdp_integration_interval,                mm_width: 24,                                access_mode: RW, address_offset: 0x1C }
+          - - { field_name: sdp_data_id,                             mm_width: 32,                                access_mode: RW, address_offset: 0x18 }
+          - "sdp_data_id_xst":
             - { field_name: reserved,                                mm_width:  7, bit_offset: 25,                access_mode: RW, address_offset: 0x18 }
             - { field_name: subband_index,                           mm_width:  9, bit_offset: 16,                access_mode: RW, address_offset: 0x18 }
             - { field_name: signal_input_A_index,                    mm_width:  8, bit_offset:  8,                access_mode: RW, address_offset: 0x18 }
diff --git a/applications/disturb2/libraries/disturb/disturb.peripheral.yaml.bak b/applications/disturb2/libraries/disturb/disturb.peripheral.yaml.bak
new file mode 100644
index 0000000000000000000000000000000000000000..93f17e9ce773b27f6e47fa75e9a80014a1af9853
--- /dev/null
+++ b/applications/disturb2/libraries/disturb/disturb.peripheral.yaml.bak
@@ -0,0 +1,461 @@
+schema_name: args
+schema_version: 1.0
+schema_type: peripheral
+
+hdl_library_name: disturb
+hdl_library_description: "Station Digital Processor (DISTURB) for LOFAR2.0"
+
+peripherals:
+  - peripheral_name: disturb_info    # pi_disturb_info.py
+    peripheral_description: "DISTURB info."
+    mm_ports:
+      # MM port for disturb_info.vhd
+      - mm_port_name: REG_DISTURB_INFO
+        mm_port_type: REG
+        mm_port_span: 16 * MM_BUS_SIZE
+        mm_port_description: |
+          "The DISTURB info contains central DISTURB information. The station_id applies to the entire station.
+           The other info fields apply per antenna band (low band or high band). An FPGA node only
+           participates in one band."
+        fields:
+          - - { field_name: station_id,              mm_width: 16, access_mode: RW, address_offset: 0x1C }
+          - - { field_name: antenna_band_index,      mm_width:  1, access_mode: RW, address_offset: 0x18 }
+          - - { field_name: observation_id,          mm_width: 32, access_mode: RW, address_offset: 0x14 }
+          - - { field_name: nyquist_zone_index,      mm_width:  2, access_mode: RW, address_offset: 0x10 }
+          - - { field_name: f_adc,                   mm_width:  1, access_mode: RO, address_offset: 0xC  }
+          - - { field_name: fsub_type,               mm_width:  1, access_mode: RO, address_offset: 0x8  }
+          - - { field_name: beam_repositioning_flag, mm_width:  1, access_mode: RW, address_offset: 0x4  }
+          - - { field_name: block_period,            mm_width: 16, access_mode: RO, address_offset: 0x0  }
+
+
+  - peripheral_name: disturb_crosslets_subband_select    # pi_disturb_crosslets_info.py 
+    peripheral_description: "DISTURB crosslets info."
+    mm_ports:
+      # MM port for disturb_info.vhd
+      - mm_port_name: REG_CROSSLETS_INFO
+        mm_port_type: REG
+        mm_port_span: 16 * MM_BUS_SIZE
+        mm_port_description: |
+          "The DISTURB crosslets info contains the step size and 15 offsets, that are used to select a new 
+           crosslet subband for every integration interval"
+        fields:
+          - - { field_name: step, access_mode: RW, address_offset: 0x3C }
+          - - field_name: offset
+              number_of_fields: 15  
+              address_offset: 0x0
+
+  - peripheral_name: disturb_nof_crosslets    # pi_disturb_nof_crosslets.py 
+    peripheral_description: "DISTURB nof crosslets."
+    mm_ports:
+      - mm_port_name: REG_NOF_CROSSLETS
+        mm_port_type: REG
+        mm_port_span: 2 * MM_BUS_SIZE
+        mm_port_description: |
+          "The DISTURB nof crosslets contains the number of crosslets that are being sent out the UDP offload
+           where 1 <= nof_crosslets <= N_crosslets_max"
+        fields:
+          - - { field_name: nof_crosslets, access_mode: RW, address_offset: 0x0 }
+          - - { field_name: unused,        access_mode: RW, address_offset: 0x4 }
+
+  - peripheral_name: disturb_subband_equalizer    # pi_disturb_subband_equalizer.py
+    peripheral_description: "DISTURB Subband equalizer coefficients."
+    parameters:
+      # Parameters of pi_disturb_subband_equalizer.py, fixed in disturb_subband_equalizer.vhd / disturb_pkg.vhd
+      - { name: P_pfb, value: 6 }  # P_pfb = S_pn / Q_fft = 12 / 2 = 6
+      - { name: Q_fft, value: 2 }
+      - { name: N_sub, value: 512 }
+    mm_ports:
+      # MM port for disturb_subband_equalizer.vhd
+      - mm_port_name: RAM_EQUALIZER_GAINS
+        mm_port_type: RAM
+        mm_port_span: ceil_pow2(Q_fft * N_sub) * MM_BUS_SIZE
+        mm_port_description: |
+          "The subband weigths are stored in P_pfb = S_pn / Q_fft = 6 blocks of
+           Q_fft * N_sub = 2 * 512 = 1024 complex coefficients as:
+
+           (cint16)subband_weights[S_pn/Q_fft]_[Q_fft][N_sub]
+
+           where S_pn = 12, Q_fft = 2 and N_sub = 512 are defined in disturb_pkg.vhd."
+        number_of_mm_ports: P_pfb
+        fields:
+          - - field_name: coef
+              field_description: |
+                "Complex coefficient to calibrate the gain and phase per subband. Packed as imaginary in high part,
+                 real in low part of mm_width = N_complex * W_sub_weight = 2 * 16 = 32 bit."
+              number_of_fields: Q_fft * N_sub  # = 1024 = 2 signal inputs * 512 subbands
+              address_offset: 0x0
+              mm_width: 32  # = N_complex * W_sub_weight
+              radix: cint16_ir
+
+
+  - peripheral_name: disturb_bf_weights    # pi_disturb_bf_weights.py
+    peripheral_description: "DISTURB Beamformer weights (= beamlet weights)."
+    parameters:
+      # Parameters of pi_disturb_bf_weights.py, fixed in disturb_bf_weights.vhd / disturb_pkg.vhd
+      - { name: N_pol_bf, value: 2 }
+      - { name: P_pfb, value: 6 }  # P_pfb = S_pn / Q_fft = 12 / 2 = 6
+      - { name: Q_fft, value: 2 }
+      - { name: S_sub_bf, value: 488 }
+    mm_ports:
+      # MM port for disturb_beamformer_local.vhd / disturb_bf_weights.vhd / mms_dp_gain_serial_arr.vhd
+      - mm_port_name: RAM_BF_WEIGHTS
+        mm_port_type: RAM
+        mm_port_span: ceil_pow2(Q_fft * S_sub_bf) * MM_BUS_SIZE
+        mm_port_description: |
+          "The beamlet weigths are stored in N_pol_bf * P_pfb = 2 * 6 = 12 instances, where
+           P_pfb = S_pn / Q_fft = 6. Per instance there is a block of Q_fft * S_sub_bf =
+           2 * 488 = 976 complex BF weights. The N_pol_bf = 2 represents the two beamformer
+           polarizations, to distinguish these from the N_pol = 2 antenna polarizations. The
+           beamlet weigths for S_pn = P_pfb * Q_fft = 12 signal inputs are therefore defined by:
+
+           (cint16)bf_weights[N_pol_bf][P_pfb]_[Q_fft][S_sub_bf]
+
+           where N_pol_bf = 2, P_pfb = 6 and Q_fft = 2 and S_sub_bf = 488, defined in disturb_pkg.vhd.
+
+           The pairs of Q_fft signal inputs that are multiplexed per block are mapped to the N_pol = 2
+           polarizations of an antenna. Therefore A_pn = P_pfb = 6 is the number dual polarization
+           antennas per peripheral. The  beamlet weigths for S_pn = A_pn * N_pol = 12 signal inputs
+           are therefore defined by:
+
+           (cint16)bf_weights[N_pol_bf][A_pn]_[N_pol][S_sub_bf]
+
+           where N_pol_bf = 2, A_pn = 6 and N_pol = 2 and S_sub_bf = 488, defined in disturb_pkg.vhd.
+
+           The BF weights can implement the full 2x2 Jones matrix for weighting and adding the
+           signal input polarizations [x, y] per dual polarization antenna. The polarization index
+           mapping is index 0 = X and index 1 = Y. The co-polarization BF weights (XX, YY) are set
+           when index of N_pol_bf and index of N_pol are the same. The cross-polarization BF
+           weights (XY, YX) are set when index of N_pol_bf and index of N_pol are different. If
+           no cross-polarization weighting is needed, then these weights can be kept 0."
+        number_of_mm_ports: N_pol_bf * P_pfb  # = 12 = 2 beam polarizations * 6 complex PFB units
+        fields:
+          - - field_name: coef
+              field_description: |
+                "Complex weight per subband. Packed as imaginary in high part, real in low part
+                 of mm_width = N_complex * W_bf_weight = 2 * 16 = 32 bit."
+              number_of_fields: Q_fft * S_sub_bf  # = 976 = 2 signal inputs * 488 beamlets
+              address_offset: 0x0
+              mm_width: 32  # = N_complex * W_bf_weight
+              radix: cint16_ir
+
+
+  - peripheral_name: disturb_bf_scale    # pi_disturb_bf_scale.py
+    peripheral_description: "DISTURB BF beamlet data output scaling and requantization."
+    parameters:
+      # Parameters fixed in node_disturb_beamformer.vhd / mms_dp_scale.vhd / disturb_pkg.vhd
+      - { name: g_gain_w, value: 16 }
+      - { name: g_lsb_w, value: 15 }
+    mm_ports:
+      # MM port for node_disturb_beamformer.vhd / mms_dp_scale.vhd / mms_dp_gain.vhd / mms_dp_gain_arr.vhd
+      - mm_port_name: REG_BF_SCALE
+        mm_port_type: REG
+        mm_port_span: 2 * MM_BUS_SIZE
+        mm_port_description: |
+          "The beamlet scale function scales the beamlet sum with a real scale factor and then
+           requantizes the result to beamlet data output with less bits.
+           The beamlet scale factor has g_gain_w bits and the value 2**g_lsb_w represents a gain of 1.
+           For example for g_gain_w = 16, g_lsb_w = 15, a beamlet sum of 18 bits and beamlet data
+           output of 8 bits, a scale value of:
+           . 2**g_lsb_w = 2**15 selects the lowest 8 bits of the beamlet sum and clips the highest
+             10 bits,
+           . 2**11 rounds the lowest 4 bits, selects the next 8 bits of the beamlet sum and clips
+             the highest 6 bits,
+           . 2**5 rounds the lowest 10 bits and selects the highest 8 bits of the beamlet sum."
+        fields:
+          - - field_name: scale
+              field_description: ""
+              number_of_fields: 1
+              address_offset: 0x0
+              mm_width: g_gain_w
+              #user_width: g_gain_w           # EK TODO: check parameter passing to user_width
+              radix: uint32          # scale factor is unsigned value
+              resolution_w: 0 - g_lsb_w
+          - - field_name: unused
+              field_description: "Not used."
+              address_offset: 0x4
+
+
+  - peripheral_name: disturb_beamformer_output_hdr_dat  #  pi_dp_offload_tx_hdr_dat_lofar2_beamformer_output.py
+    peripheral_description: "DISTURB BF beamlet data output header."
+    mm_ports:
+      # MM port for disturb_beamformer_output.vhd / dp_offload_tx_v3.vhd
+      - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT
+        mm_port_type: REG
+        mm_port_span: 64 * MM_BUS_SIZE
+        mm_port_description: |
+          "The ETH/IP/UDP/application header fields for the beamlet data output offload UDP packets.
+
+           The header fields are described in ICD STAT-CEP [1].
+
+           https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L1%20Interface%20Control%20Documents/STAT%20to%20CEP%20ICD
+
+           From tb_dp_offload_tx_v3.vhd simulation it follows that:
+           . the header fields are stored in reversed address order due to that the array in VHDL has
+             range (h downto 0) where the first header field (eth_destination_mac) is at index h.
+           . the RO fields are filled in by the logic, when the packet header is transmitted, however
+             the read value does not still represents the MM write value, not the transmitted value.
+           . dp_bsn with user_width = 64 is stored as:
+              word  byte
+              addr  addr  bits
+                0   0x0 [31:0] = dp_bsn[31:0]
+                1   0x4 [31:0] = dp_bsn[63:32]
+           . eth_dst_mac with user_width = 48 is stored as:
+              word  byte
+              addr  addr  bits
+               21   0x84 [31:0] = eth_dst_mac[31:0]
+               22   0x88 [15:0] = eth_dst_mac[47:32]
+          "
+        fields:
+          # eth field group
+          - - { field_name: eth_destination_mac,                mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA0 }
+          - - { field_name: eth_source_mac,                     mm_width: 32, user_width: 48, radix: uint64, access_mode: RO, address_offset: 0x98 }
+          - - { field_name: eth_type,                           mm_width: 16,                                access_mode: RO, address_offset: 0x94 }
+          # ip field group
+          - - { field_name: ip_version,                         mm_width:  4,                                access_mode: RW, address_offset: 0x90 }
+          - - { field_name: ip_header_length,                   mm_width:  4,                                access_mode: RW, address_offset: 0x8C }
+          - - { field_name: ip_services,                        mm_width:  8,                                access_mode: RW, address_offset: 0x88 }
+          - - { field_name: ip_total_length,                    mm_width: 16,                                access_mode: RW, address_offset: 0x84 }
+          - - { field_name: ip_identification,                  mm_width: 16,                                access_mode: RW, address_offset: 0x80 }
+          - - { field_name: ip_flags,                           mm_width:  3,                                access_mode: RW, address_offset: 0x7C }
+          - - { field_name: ip_fragment_offset,                 mm_width: 13,                                access_mode: RW, address_offset: 0x78 }
+          - - { field_name: ip_time_to_live,                    mm_width:  8,                                access_mode: RW, address_offset: 0x74 }
+          - - { field_name: ip_protocol,                        mm_width:  8,                                access_mode: RW, address_offset: 0x70 }
+          - - { field_name: ip_header_checksum,                 mm_width: 16,                                access_mode: RW, address_offset: 0x6C }
+          - - { field_name: ip_source_address,                  mm_width: 32,                                access_mode: RW, address_offset: 0x68 }
+          - - { field_name: ip_destination_address,             mm_width: 32,                                access_mode: RW, address_offset: 0x64 }
+          # udp field group
+          - - { field_name: udp_source_port,                    mm_width: 16,                                access_mode: RW, address_offset: 0x60 }
+          - - { field_name: udp_destination_port,               mm_width: 16,                                access_mode: RW, address_offset: 0x5C }
+          - - { field_name: udp_length,                         mm_width: 16,                                access_mode: RW, address_offset: 0x58 }
+          - - { field_name: udp_checksum,                       mm_width: 16,                                access_mode: RW, address_offset: 0x54 }
+          # application field group
+          - - { field_name: disturb_marker,                         mm_width:  8,                                access_mode: RO, address_offset: 0x50 }
+          - - { field_name: disturb_version_id,                     mm_width:  8,                                access_mode: RO, address_offset: 0x4C }
+          - - { field_name: disturb_observation_id,                 mm_width: 32,                                access_mode: RW, address_offset: 0x48 }
+          - - { field_name: disturb_station_id,                     mm_width: 16,                                access_mode: RW, address_offset: 0x44 }
+          - - { field_name: disturb_source_info_antenna_band_index, mm_width:  1, bit_offset: 15,                access_mode: RW, address_offset: 0x40 }
+          - - { field_name: disturb_source_info_nyquist_zone_index, mm_width:  2, bit_offset: 13,                access_mode: RW, address_offset: 0x3C }
+          - - { field_name: disturb_source_info_f_adc,              mm_width:  1, bit_offset: 12,                access_mode: RW, address_offset: 0x38 }
+          - - { field_name: disturb_source_info_fsub_type,          mm_width:  1, bit_offset: 11,                access_mode: RW, address_offset: 0x34 }
+          - - { field_name: disturb_source_info_payload_error,      mm_width:  1, bit_offset: 10,                access_mode: RW, address_offset: 0x30 }
+          - - { field_name: disturb_source_info_repositioning_flag, mm_width:  1, bit_offset:  9,                access_mode: RW, address_offset: 0x2C }
+          - - { field_name: disturb_source_info_beamlet_width,      mm_width:  3, bit_offset:  5,                access_mode: RW, address_offset: 0x28 }
+          - - { field_name: disturb_source_info_gn_index,           mm_width:  5, bit_offset:  0,                access_mode: RW, address_offset: 0x24 }
+
+          - - { field_name: disturb_reserved,                       mm_width: 32, user_width: 40, radix: uint64, access_mode: RW, address_offset: 0x1C }
+          - - { field_name: disturb_beamlet_scale,                  mm_width: 16,                                access_mode: RW, address_offset: 0x18 }
+          - - { field_name: disturb_beamlet_index,                  mm_width: 16,                                access_mode: RW, address_offset: 0x14 }
+          - - { field_name: disturb_nof_blocks_per_packet,          mm_width:  8,                                access_mode: RW, address_offset: 0x10 }
+          - - { field_name: disturb_nof_beamlets_per_block,         mm_width: 16,                                access_mode: RW, address_offset: 0xC }
+          - - { field_name: disturb_block_period,                   mm_width: 16,                                access_mode: RW, address_offset: 0x8 }
+          - - { field_name: BSN,                                mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 }
+
+
+  - peripheral_name: disturb_statistics_offload_hdr_dat_sst  #  pi_dp_offload_tx_hdr_dat_lofar2_disturb_statistics_offload.py
+    peripheral_description: "DISTURB statistics offload header for the subband statistics (SST)."
+    mm_ports:
+      # MM port for disturb_statistics_offload.vhd / dp_offload_tx_v3.vhd
+      - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT
+        mm_port_type: REG
+        mm_port_span: 64 * MM_BUS_SIZE
+        mm_port_description: |
+          "The ETH/IP/UDP/application header fields for the SST offload UDP packets.
+
+           The Subband statistics (SST) are integrated auto power values of the subbands per signal input.
+           The SST specific settings are defined by data_id_sst.
+
+           The statistics offload header fields are described in ICD SC-DISTURB [1].
+
+           [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20DISTURB%20ICD
+          "
+        fields:
+          # eth field group
+          - - { field_name: word_align,                              mm_width: 16,                                access_mode: RW, address_offset: 0xAC }
+          - - { field_name: eth_destination_mac,                     mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA4 }
+          - - { field_name: eth_source_mac,                          mm_width: 32, user_width: 48, radix: uint64, access_mode: RO, address_offset: 0x9C }
+          - - { field_name: eth_type,                                mm_width: 16,                                access_mode: RO, address_offset: 0x98 }
+          # ip field group
+          - - { field_name: ip_version,                              mm_width:  4,                                access_mode: RW, address_offset: 0x94 }
+          - - { field_name: ip_header_length,                        mm_width:  4,                                access_mode: RW, address_offset: 0x90 }
+          - - { field_name: ip_services,                             mm_width:  8,                                access_mode: RW, address_offset: 0x8C }
+          - - { field_name: ip_total_length,                         mm_width: 16,                                access_mode: RW, address_offset: 0x88 }
+          - - { field_name: ip_identification,                       mm_width: 16,                                access_mode: RW, address_offset: 0x84 }
+          - - { field_name: ip_flags,                                mm_width:  3,                                access_mode: RW, address_offset: 0x80 }
+          - - { field_name: ip_fragment_offset,                      mm_width: 13,                                access_mode: RW, address_offset: 0x7C }
+          - - { field_name: ip_time_to_live,                         mm_width:  8,                                access_mode: RW, address_offset: 0x78 }
+          - - { field_name: ip_protocol,                             mm_width:  8,                                access_mode: RW, address_offset: 0x74 }
+          - - { field_name: ip_header_checksum,                      mm_width: 16,                                access_mode: RW, address_offset: 0x70 }
+          - - { field_name: ip_source_address,                       mm_width: 32,                                access_mode: RW, address_offset: 0x6C }
+          - - { field_name: ip_destination_address,                  mm_width: 32,                                access_mode: RW, address_offset: 0x68 }
+          # udp field group
+          - - { field_name: udp_source_port,                         mm_width: 16,                                access_mode: RW, address_offset: 0x64 }
+          - - { field_name: udp_destination_port,                    mm_width: 16,                                access_mode: RW, address_offset: 0x60 }
+          - - { field_name: udp_length,                              mm_width: 16,                                access_mode: RW, address_offset: 0x5C }
+          - - { field_name: udp_checksum,                            mm_width: 16,                                access_mode: RW, address_offset: 0x58 }
+          # application field group
+          - - { field_name: disturb_marker,                              mm_width:  8,                                access_mode: RO, address_offset: 0x54 }
+          - - { field_name: disturb_version_id,                          mm_width:  8,                                access_mode: RO, address_offset: 0x50 }
+          - - { field_name: disturb_observation_id,                      mm_width: 32,                                access_mode: RW, address_offset: 0x4C }
+          - - { field_name: disturb_station_id,                          mm_width: 16,                                access_mode: RW, address_offset: 0x48 }
+          - - { field_name: disturb_source_info_antenna_band_index,      mm_width:  1, bit_offset: 15,                access_mode: RW, address_offset: 0x44 }
+          - - { field_name: disturb_source_info_nyquist_zone_index,      mm_width:  2, bit_offset: 13,                access_mode: RW, address_offset: 0x40 }
+          - - { field_name: disturb_source_info_f_adc,                   mm_width:  1, bit_offset: 12,                access_mode: RW, address_offset: 0x3C }
+          - - { field_name: disturb_source_info_fsub_type,               mm_width:  1, bit_offset: 11,                access_mode: RW, address_offset: 0x38 }
+          - - { field_name: disturb_source_info_payload_error,           mm_width:  1, bit_offset: 10,                access_mode: RW, address_offset: 0x34 }
+          - - { field_name: disturb_source_info_beam_repositioning_flag, mm_width:  1, bit_offset:  9,                access_mode: RW, address_offset: 0x30 }
+          - - { field_name: disturb_source_info_weighted_subbands_flag,  mm_width:  1, bit_offset:  8,                access_mode: RW, address_offset: 0x2C }
+          - - { field_name: disturb_source_info_reserved,                mm_width:  3, bit_offset:  5,                access_mode: RW, address_offset: 0x28 }
+          - - { field_name: disturb_source_info_gn_index,                mm_width:  5, bit_offset:  0,                access_mode: RW, address_offset: 0x24 }
+          - - { field_name: disturb_reserved,                            mm_width:  8,                                access_mode: RW, address_offset: 0x20 }
+          - - { field_name: disturb_integration_interval,                mm_width: 24,                                access_mode: RW, address_offset: 0x1C }
+          - - { field_name: disturb_data_id,                             mm_width: 32,                                access_mode: RW, address_offset: 0x18 }
+          - "disturb_data_id_sst":
+            - { field_name: reserved,                                mm_width: 24, bit_offset:  8,                access_mode: RW, address_offset: 0x18 }
+            - { field_name: signal_input_index,                      mm_width:  8, bit_offset:  0,                access_mode: RW, address_offset: 0x18 }
+
+          - - { field_name: disturb_nof_signal_inputs,                   mm_width:  8,                                access_mode: RW, address_offset: 0x14 }
+          - - { field_name: disturb_nof_bytes_per_statistic,             mm_width:  8,                                access_mode: RW, address_offset: 0x10 }
+          - - { field_name: disturb_nof_statistics_per_packet,           mm_width: 16,                                access_mode: RW, address_offset: 0xC }
+          - - { field_name: disturb_block_period,                        mm_width: 16,                                access_mode: RW, address_offset: 0x8 }
+          - - { field_name: BSN,                                     mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 }
+
+
+  - peripheral_name: disturb_statistics_offload_hdr_dat_bst  #  pi_dp_offload_tx_hdr_dat_lofar2_disturb_statistics_offload.py
+    peripheral_description: "DISTURB statistics offload header for the beamlet statistics (BST)."
+    mm_ports:
+      # MM port for disturb_statistics_offload.vhd / dp_offload_tx_v3.vhd
+      - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT
+        mm_port_type: REG
+        mm_port_span: 64 * MM_BUS_SIZE
+        mm_port_description: |
+          "The ETH/IP/UDP/application header fields for the BST offload UDP packets.
+
+           The beamlet statistics (BST) are integrated auto power values of the beamlets per beamset
+           The BST specific settings are defined by data_id_bst.
+
+           The statistics offload header fields are described in ICD SC-DISTURB [1].
+
+           [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20DISTURB%20ICD
+          "
+        fields:
+          # eth field group
+          - - { field_name: word_align,                              mm_width: 16,                                access_mode: RW, address_offset: 0xAC }
+          - - { field_name: eth_destination_mac,                     mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA4 }
+          - - { field_name: eth_source_mac,                          mm_width: 32, user_width: 48, radix: uint64, access_mode: RO, address_offset: 0x9C }
+          - - { field_name: eth_type,                                mm_width: 16,                                access_mode: RO, address_offset: 0x98 }
+          # ip field group
+          - - { field_name: ip_version,                              mm_width:  4,                                access_mode: RW, address_offset: 0x94 }
+          - - { field_name: ip_header_length,                        mm_width:  4,                                access_mode: RW, address_offset: 0x90 }
+          - - { field_name: ip_services,                             mm_width:  8,                                access_mode: RW, address_offset: 0x8C }
+          - - { field_name: ip_total_length,                         mm_width: 16,                                access_mode: RW, address_offset: 0x88 }
+          - - { field_name: ip_identification,                       mm_width: 16,                                access_mode: RW, address_offset: 0x84 }
+          - - { field_name: ip_flags,                                mm_width:  3,                                access_mode: RW, address_offset: 0x80 }
+          - - { field_name: ip_fragment_offset,                      mm_width: 13,                                access_mode: RW, address_offset: 0x7C }
+          - - { field_name: ip_time_to_live,                         mm_width:  8,                                access_mode: RW, address_offset: 0x78 }
+          - - { field_name: ip_protocol,                             mm_width:  8,                                access_mode: RW, address_offset: 0x74 }
+          - - { field_name: ip_header_checksum,                      mm_width: 16,                                access_mode: RW, address_offset: 0x70 }
+          - - { field_name: ip_source_address,                       mm_width: 32,                                access_mode: RW, address_offset: 0x6C }
+          - - { field_name: ip_destination_address,                  mm_width: 32,                                access_mode: RW, address_offset: 0x68 }
+          # udp field group
+          - - { field_name: udp_source_port,                         mm_width: 16,                                access_mode: RW, address_offset: 0x64 }
+          - - { field_name: udp_destination_port,                    mm_width: 16,                                access_mode: RW, address_offset: 0x60 }
+          - - { field_name: udp_length,                              mm_width: 16,                                access_mode: RW, address_offset: 0x5C }
+          - - { field_name: udp_checksum,                            mm_width: 16,                                access_mode: RW, address_offset: 0x58 }
+          # application field group
+          - - { field_name: disturb_marker,                              mm_width:  8,                                access_mode: RO, address_offset: 0x54 }
+          - - { field_name: disturb_version_id,                          mm_width:  8,                                access_mode: RO, address_offset: 0x50 }
+          - - { field_name: disturb_observation_id,                      mm_width: 32,                                access_mode: RW, address_offset: 0x4C }
+          - - { field_name: disturb_station_id,                          mm_width: 16,                                access_mode: RW, address_offset: 0x48 }
+          - - { field_name: disturb_source_info_antenna_band_index,      mm_width:  1, bit_offset: 15,                access_mode: RW, address_offset: 0x44 }
+          - - { field_name: disturb_source_info_nyquist_zone_index,      mm_width:  2, bit_offset: 13,                access_mode: RW, address_offset: 0x40 }
+          - - { field_name: disturb_source_info_f_adc,                   mm_width:  1, bit_offset: 12,                access_mode: RW, address_offset: 0x3C }
+          - - { field_name: disturb_source_info_fsub_type,               mm_width:  1, bit_offset: 11,                access_mode: RW, address_offset: 0x38 }
+          - - { field_name: disturb_source_info_payload_error,           mm_width:  1, bit_offset: 10,                access_mode: RW, address_offset: 0x34 }
+          - - { field_name: disturb_source_info_beam_repositioning_flag, mm_width:  1, bit_offset:  9,                access_mode: RW, address_offset: 0x30 }
+          - - { field_name: disturb_source_info_weighted_subbands_flag,  mm_width:  1, bit_offset:  8,                access_mode: RW, address_offset: 0x2C }
+          - - { field_name: disturb_source_info_reserved,                mm_width:  3, bit_offset:  5,                access_mode: RW, address_offset: 0x28 }
+          - - { field_name: disturb_source_info_gn_index,                mm_width:  5, bit_offset:  0,                access_mode: RW, address_offset: 0x24 }
+          - - { field_name: disturb_reserved,                            mm_width:  8,                                access_mode: RW, address_offset: 0x20 }
+          - - { field_name: disturb_integration_interval,                mm_width: 24,                                access_mode: RW, address_offset: 0x1C }
+          - - { field_name: disturb_data_id,                             mm_width: 32,                                access_mode: RW, address_offset: 0x18 }
+          - "disturb_data_id_bst":
+            - { field_name: reserved,                                mm_width: 16, bit_offset: 16,                access_mode: RW, address_offset: 0x18 }
+            - { field_name: beamlet_index,                           mm_width: 16, bit_offset:  0,                access_mode: RW, address_offset: 0x18 }
+
+          - - { field_name: nof_signal_inputs,                       mm_width:  8,                                access_mode: RW, address_offset: 0x14 }
+          - - { field_name: nof_bytes_per_statistic,                 mm_width:  8,                                access_mode: RW, address_offset: 0x10 }
+          - - { field_name: nof_statistics_per_packet,               mm_width: 16,                                access_mode: RW, address_offset: 0xC }
+          - - { field_name: block_period,                            mm_width: 16,                                access_mode: RW, address_offset: 0x8 }
+          - - { field_name: BSN,                                     mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 }
+
+
+  - peripheral_name: disturb_statistics_offload_hdr_dat_xst  #  pi_dp_offload_tx_hdr_dat_lofar2_disturb_statistics_offload.py
+    peripheral_description: "DISTURB statistics offload header for the cross-subband statistics (XST)."
+    mm_ports:
+      # MM port for disturb_statistics_offload.vhd / dp_offload_tx_v3.vhd
+      - mm_port_name: REG_DP_OFFLOAD_TX_HDR_DAT
+        mm_port_type: REG
+        mm_port_span: 64 * MM_BUS_SIZE
+        mm_port_description: |
+          "The ETH/IP/UDP/application header fields for the XST offload UDP packets.
+
+           The crosslet statistics (XST) are integrated cross power values of the subbands from all
+           pairs of signal inputs per suband.
+           The XST specific settings are defined by data_id_xst.
+
+           The statistics offload header fields are described in ICD SC-DISTURB [1].
+
+           [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20DISTURB%20ICD
+          "
+        fields:
+          # eth field group
+          - - { field_name: word_align,                              mm_width: 16,                                access_mode: RW, address_offset: 0xAC }
+          - - { field_name: eth_destination_mac,                     mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0xA4 }
+          - - { field_name: eth_source_mac,                          mm_width: 32, user_width: 48, radix: uint64, access_mode: RO, address_offset: 0x9C }
+          - - { field_name: eth_type,                                mm_width: 16,                                access_mode: RO, address_offset: 0x98 }
+          # ip field group
+          - - { field_name: ip_version,                              mm_width:  4,                                access_mode: RW, address_offset: 0x94 }
+          - - { field_name: ip_header_length,                        mm_width:  4,                                access_mode: RW, address_offset: 0x90 }
+          - - { field_name: ip_services,                             mm_width:  8,                                access_mode: RW, address_offset: 0x8C }
+          - - { field_name: ip_total_length,                         mm_width: 16,                                access_mode: RW, address_offset: 0x88 }
+          - - { field_name: ip_identification,                       mm_width: 16,                                access_mode: RW, address_offset: 0x84 }
+          - - { field_name: ip_flags,                                mm_width:  3,                                access_mode: RW, address_offset: 0x80 }
+          - - { field_name: ip_fragment_offset,                      mm_width: 13,                                access_mode: RW, address_offset: 0x7C }
+          - - { field_name: ip_time_to_live,                         mm_width:  8,                                access_mode: RW, address_offset: 0x78 }
+          - - { field_name: ip_protocol,                             mm_width:  8,                                access_mode: RW, address_offset: 0x74 }
+          - - { field_name: ip_header_checksum,                      mm_width: 16,                                access_mode: RW, address_offset: 0x70 }
+          - - { field_name: ip_source_address,                       mm_width: 32,                                access_mode: RW, address_offset: 0x6C }
+          - - { field_name: ip_destination_address,                  mm_width: 32,                                access_mode: RW, address_offset: 0x68 }
+          # udp field group
+          - - { field_name: udp_source_port,                         mm_width: 16,                                access_mode: RW, address_offset: 0x64 }
+          - - { field_name: udp_destination_port,                    mm_width: 16,                                access_mode: RW, address_offset: 0x60 }
+          - - { field_name: udp_length,                              mm_width: 16,                                access_mode: RW, address_offset: 0x5C }
+          - - { field_name: udp_checksum,                            mm_width: 16,                                access_mode: RW, address_offset: 0x58 }
+          # application field group
+          - - { field_name: disturb_marker,                              mm_width:  8,                                access_mode: RO, address_offset: 0x54 }
+          - - { field_name: disturb_version_id,                          mm_width:  8,                                access_mode: RO, address_offset: 0x50 }
+          - - { field_name: disturb_observation_id,                      mm_width: 32,                                access_mode: RW, address_offset: 0x4C }
+          - - { field_name: disturb_station_id,                          mm_width: 16,                                access_mode: RW, address_offset: 0x48 }
+          - - { field_name: disturb_source_info_antenna_band_index,      mm_width:  1, bit_offset: 15,                access_mode: RW, address_offset: 0x44 }
+          - - { field_name: disturb_source_info_nyquist_zone_index,      mm_width:  2, bit_offset: 13,                access_mode: RW, address_offset: 0x40 }
+          - - { field_name: disturb_source_info_f_adc,                   mm_width:  1, bit_offset: 12,                access_mode: RW, address_offset: 0x3C }
+          - - { field_name: disturb_source_info_fsub_type,               mm_width:  1, bit_offset: 11,                access_mode: RW, address_offset: 0x38 }
+          - - { field_name: disturb_source_info_payload_error,           mm_width:  1, bit_offset: 10,                access_mode: RW, address_offset: 0x34 }
+          - - { field_name: disturb_source_info_beam_repositioning_flag, mm_width:  1, bit_offset:  9,                access_mode: RW, address_offset: 0x30 }
+          - - { field_name: disturb_source_info_weighted_subbands_flag,  mm_width:  1, bit_offset:  8,                access_mode: RW, address_offset: 0x2C }
+          - - { field_name: disturb_source_info_reserved,                mm_width:  3, bit_offset:  5,                access_mode: RW, address_offset: 0x28 }
+          - - { field_name: disturb_source_info_gn_index,                mm_width:  5, bit_offset:  0,                access_mode: RW, address_offset: 0x24 }
+          - - { field_name: disturb_reserved,                            mm_width:  8,                                access_mode: RW, address_offset: 0x20 }
+          - - { field_name: disturb_integration_interval,                mm_width: 24,                                access_mode: RW, address_offset: 0x1C }
+          - - { field_name: disturb_data_id,                             mm_width: 32,                                access_mode: RW, address_offset: 0x18 }
+          - "disturb_data_id_xst":
+            - { field_name: reserved,                                mm_width:  7, bit_offset: 25,                access_mode: RW, address_offset: 0x18 }
+            - { field_name: subband_index,                           mm_width:  9, bit_offset: 16,                access_mode: RW, address_offset: 0x18 }
+            - { field_name: signal_input_A_index,                    mm_width:  8, bit_offset:  8,                access_mode: RW, address_offset: 0x18 }
+            - { field_name: signal_input_B_index,                    mm_width:  8, bit_offset:  0,                access_mode: RW, address_offset: 0x18 }
+
+          - - { field_name: nof_signal_inputs,                       mm_width:  8,                                access_mode: RW, address_offset: 0x14 }
+          - - { field_name: nof_bytes_per_statistic,                 mm_width:  8,                                access_mode: RW, address_offset: 0x10 }
+          - - { field_name: nof_statistics_per_packet,               mm_width: 16,                                access_mode: RW, address_offset: 0xC }
+          - - { field_name: block_period,                            mm_width: 16,                                access_mode: RW, address_offset: 0x8 }
+          - - { field_name: BSN,                                     mm_width: 32, user_width: 64, radix: uint64, access_mode: RW, address_offset: 0x0 }