From 720e6b14f2f0f453f70dacbd734032122e7d2d0c Mon Sep 17 00:00:00 2001
From: Reinier van der Walle <walle@astron.nl>
Date: Thu, 12 May 2022 15:42:31 +0200
Subject: [PATCH] removed old yaml backups

---
 .../disturb2_unb2b_station.fpga.yaml.bak      | 500 ------------------
 .../disturb/disturb.peripheral.yaml.bak       | 461 ----------------
 2 files changed, 961 deletions(-)
 delete mode 100644 applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml.bak
 delete mode 100644 applications/disturb2/libraries/disturb/disturb.peripheral.yaml.bak

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
deleted file mode 100644
index 2efc861652..0000000000
--- a/applications/disturb2/designs/disturb2_unb2b_station/disturb2_unb2b_station.fpga.yaml.bak
+++ /dev/null
@@ -1,500 +0,0 @@
-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.bak b/applications/disturb2/libraries/disturb/disturb.peripheral.yaml.bak
deleted file mode 100644
index 93f17e9ce7..0000000000
--- a/applications/disturb2/libraries/disturb/disturb.peripheral.yaml.bak
+++ /dev/null
@@ -1,461 +0,0 @@
-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 }
-- 
GitLab