diff --git a/applications/lofar2/designs/lofar2_unb2b_adc/lofar2_unb2b_adc.fpga.yaml b/applications/lofar2/designs/lofar2_unb2b_adc/lofar2_unb2b_adc.fpga.yaml
index f2e2c0667939a5a81e493dc9aaef0509a40bba71..dc699c30e1e63ce7f9c17784767630755085d637 100644
--- a/applications/lofar2/designs/lofar2_unb2b_adc/lofar2_unb2b_adc.fpga.yaml
+++ b/applications/lofar2/designs/lofar2_unb2b_adc/lofar2_unb2b_adc.fpga.yaml
@@ -11,10 +11,10 @@ peripherals:
   # Factory / minimal (from ctrl_unb2b_board.vhd)
   #############################################################################
   - peripheral_name: unb2b_board/system_info
+    lock_base_address: 0x10000
     mm_port_names:
       - ROM_SYSTEM_INFO
       - PIO_SYSTEM_INFO
-    lock_base_address: 0x10000
 
   - peripheral_name: unb2b_board/wdi
     mm_port_names:
diff --git a/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.fpga.yaml b/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.fpga.yaml
index 3484a89a9619badd82f33de1438c861369157974..4db069ba2e64d393aa2219ea1d057eaf70d7b30d 100644
--- a/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.fpga.yaml
+++ b/applications/lofar2/designs/lofar2_unb2b_beamformer/lofar2_unb2b_beamformer.fpga.yaml
@@ -38,10 +38,10 @@ 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
-    lock_base_address: 0x10000
 
   - peripheral_name: unb2b_board/wdi
     mm_port_names:
diff --git a/applications/lofar2/designs/lofar2_unb2b_filterbank/lofar2_unb2b_filterbank.fpga.yaml b/applications/lofar2/designs/lofar2_unb2b_filterbank/lofar2_unb2b_filterbank.fpga.yaml
index 0ec8ce1844442c27022f8f314fafaf9126f49cfe..8716458e4529a9552adc28d6858843996c111359 100644
--- a/applications/lofar2/designs/lofar2_unb2b_filterbank/lofar2_unb2b_filterbank.fpga.yaml
+++ b/applications/lofar2/designs/lofar2_unb2b_filterbank/lofar2_unb2b_filterbank.fpga.yaml
@@ -11,10 +11,10 @@ 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
-    lock_base_address: 0x10000
 
   - peripheral_name: unb2b_board/wdi
     mm_port_names:
diff --git a/applications/lofar2/libraries/sdp/sdp.peripheral.yaml b/applications/lofar2/libraries/sdp/sdp.peripheral.yaml
index 497b912e0945496ebe83bfbaaa669c79a078b582..166db254179b429d95f53754422cea9b4f937c21 100644
--- a/applications/lofar2/libraries/sdp/sdp.peripheral.yaml
+++ b/applications/lofar2/libraries/sdp/sdp.peripheral.yaml
@@ -11,11 +11,11 @@ peripherals:
     mm_ports:
       # MM port for sdp_info.vhd
       - mm_port_name: REG_SDP_INFO
+        mm_port_type: REG
         mm_port_description: |
           "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."
-        mm_port_type: REG
         fields:
           - - { field_name: station_id,              mm_width: 16, access_mode: RW, address_offset: 0x0 }
           - - { field_name: antenna_band_index,      mm_width:  1, access_mode: RO, address_offset: 0x4 }
@@ -41,6 +41,7 @@ peripherals:
     mm_ports:
       # MM port for sdp_subband_equalizer.vhd
       - mm_port_name: RAM_EQUALIZER_GAINS
+        mm_port_type: RAM
         mm_port_description: |
           "The subband weigths are stored in g_nof_instances = P_pfb = S_pn / Q_fft = 6 blocks of
            Q_fft * N_sub = 2 * 512 = 1024 complex coefficients as:
@@ -48,17 +49,16 @@ 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 sdp_pkg.vhd."
-        mm_port_type: RAM
         number_of_mm_ports: g_nof_instances
         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: 1024  # = Q_fft * N_sub = 2 signal inputs * 512 subbands
+              address_offset: 0x0
               mm_width: 32  # = N_complex * W_sub_weight
               radix: cint16_ir
-              address_offset: 0x0
-              number_of_fields: 1024  # = Q_fft * N_sub = 2 signal inputs * 512 subbands
 
 
   - peripheral_name: sdp_bf_weights    # pi_sdp_bf_weights.py
@@ -70,6 +70,7 @@ peripherals:
     mm_ports:
       # 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_description: |
           "The beamlet weigths are stored in g_nof_instances = N_pol_bf * P_pfb = 2 * 6 = 12, where
            P_pfb = S_pn / Q_fft = 6. Per instance there is a block of Q_fft * S_sub_bf =
@@ -96,17 +97,16 @@ peripherals:
            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."
-        mm_port_type: RAM
         number_of_mm_ports: g_nof_instances
         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: g_nof_gains
+              address_offset: 0x0
               mm_width: 32  # = N_complex * W_bf_weight
               radix: cint16_ir
-              address_offset: 0x0
-              number_of_fields: g_nof_gains
 
 
   - peripheral_name: sdp_bf_scale    # pi_sdp_bf_scale.py
@@ -118,6 +118,7 @@ peripherals:
     mm_ports:
       # 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_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.
@@ -129,16 +130,15 @@ peripherals:
            . 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."
-        mm_port_type: REG
         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
-              address_offset: 0x0
-              number_of_fields: 1
           - - field_name: unused
               field_description: "Not used."
               address_offset: 0x4
@@ -149,6 +149,7 @@ peripherals:
     mm_ports:
       # 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_description: |
           "The ETH/IP/UDP/application header fields for the beamlet data output offload UDP packets.
 
@@ -172,7 +173,6 @@ peripherals:
                21   0x84 [31:0] = eth_dst_mac[31:0]
                22   0x88 [15:0] = eth_dst_mac[47:32]
           "
-        mm_port_type: REG
         fields:
           # eth field group
           - - { field_name: eth_destination_mac,    mm_width: 32, user_width: 48, radix: uint64, access_mode: RW, address_offset: 0x84 }
@@ -226,6 +226,7 @@ peripherals:
     mm_ports:
       # 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_description: |
           "The ETH/IP/UDP/application header fields for the SST offload UDP packets.
 
@@ -236,7 +237,6 @@ peripherals:
 
            [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20SDP%20ICD
           "
-        mm_port_type: REG
         fields:
           # eth field group
           - - { field_name: word_align,                mm_width: 16,                                access_mode: RW, address_offset: 0x8C }
@@ -297,6 +297,7 @@ peripherals:
     mm_ports:
       # 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_description: |
           "The ETH/IP/UDP/application header fields for the BST offload UDP packets.
 
@@ -307,7 +308,6 @@ peripherals:
 
            [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20SDP%20ICD
           "
-        mm_port_type: REG
         fields:
           # eth field group
           - - { field_name: word_align,                mm_width: 16,                                access_mode: RW, address_offset: 0x8C }
@@ -368,6 +368,7 @@ peripherals:
     mm_ports:
       # 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_description: |
           "The ETH/IP/UDP/application header fields for the XST offload UDP packets.
 
@@ -379,7 +380,6 @@ peripherals:
 
            [1] https://plm.astron.nl/polarion/#/project/LOFAR2System/wiki/L2%20Interface%20Control%20Documents/SC%20to%20SDP%20ICD
           "
-        mm_port_type: REG
         fields:
           # eth field group
           - - { field_name: word_align,                mm_width: 16,                                access_mode: RW, address_offset: 0x8C }
diff --git a/boards/uniboard1/libraries/unb1_board/unb1_board.peripheral.yaml b/boards/uniboard1/libraries/unb1_board/unb1_board.peripheral.yaml
index b286945d85c58ed131fb78a2577c4cdf00aeff36..faf0c65fd9c6df00dbf7e479840f80d65697ac8d 100644
--- a/boards/uniboard1/libraries/unb1_board/unb1_board.peripheral.yaml
+++ b/boards/uniboard1/libraries/unb1_board/unb1_board.peripheral.yaml
@@ -44,81 +44,38 @@ peripherals:
 
   # peripheral, unb1_board_wdi_reg
   - peripheral_name: ctrl
-
+    peripheral_description: " "
     mm_ports:
       # actual hdl name: unb1_board_wdi_reg
       - mm_port_name   : pio_wdi
         mm_port_type   : REG
+        mm_port_description:  "Reset register, for nios "
         fields:
           - - field_name      : nios_reset
+              field_description: " Reset done by nios "
+              number_of_fields: 1
+              address_offset  : 0x0
               mm_width        : 32
               access_mode     : WO
-              address_offset  : 0x0
-              number_of_fields: 1
-              field_description: " Reset done by nios "
          
-        mm_port_description:  "Reset register, for nios "
     
-    peripheral_description: " "
-  
   # peripheral, unb1_board_wdi_reg
   - peripheral_name: wdi
-
+    peripheral_description: " "
     mm_ports:
       # actual hdl name: unb1_board_wdi_reg
       - mm_port_name   : wdi
         mm_port_type   : REG
+        mm_port_description:  "Reset register, if the right value is provided the factory image will be reloaded "
         fields:
           - - field_name    : reset_word
+              field_description: " Only the value 0xB007FAC7 'Boot factory' will result in a reset "
               access_mode   : WO
               address_offset: 0x0
-              field_description: " Only the value 0xB007FAC7 'Boot factory' will result in a reset "
-           
-        mm_port_description:  "Reset register, if the right value is provided the factory image will be reloaded "
     
-    peripheral_description: " "
   
   # periheral, unb1_board_sens
   - peripheral_name: sens
-
-    parameters:
-      - { name: g_sim,       value: FALSE }
-      - { name: g_clk_freq,  value: c_unb1_board_mm_clk_freq_125M }
-      - { name: g_temp_high, value: 85 }
-
-    mm_ports:
-      # actual hdl name: reg_unb1_sens
-      - mm_port_name   : sens
-        mm_port_type   : REG
-        fields:
-          - - field_name    : sens_data
-              mm_width      : 8
-              access_mode   : RO
-              address_offset: 0x0
-              number_of_fields: 4
-              field_description: | 
-                  " data array with sens data 
-                  0x0 = fpga temperature in degrees (two's complement) 
-                  0x1 = eth_temp temperature in degrees (two's complement)
-                  0x2 = hot_swap_v_sens
-                  0x3 = hot_swap_v_source"
-          
-          - - field_name    : sens_err
-              mm_width      : 1
-              access_mode   : RO
-              address_offset: 0x10
-              radix         : uint32
-              field_description: ""
-        
-          - - field_name    : temp_high
-              mm_width      : 7
-              address_offset: 0x14
-              reset_value   : g_temp_high
-              software_value: g_temp_high
-              field_description: ""
-
-        mm_port_description:  " "
-    
     peripheral_description: |
         "
         +-----------------------------------------------------------------------------+
@@ -142,13 +99,13 @@ peripherals:
                 LTC4260_V_UNIT_SENSE        = 0.0003  --   0.3 mV over Rs for current sense
                 LTC4260_V_UNIT_SOURCE       = 0.4     -- 400   mV supply voltage (e.g +48 V)
                 LTC4260_V_UNIT_ADIN         = 0.01    --  10   mV ADC
-     
+
             . From UniBoard unb_sensors.h:
                 SENS_HOT_SWAP_R_SENSE       = 0.005   -- R sense on UniBoard is 5 mOhm (~= 10 mOhm // 10 mOhm)
                 SENS_HOT_SWAP_I_UNIT_SENSE  = LTC4260_V_UNIT_SENSE / SENS_HOT_SWAP_R_SENSE
                 SENS_HOT_SWAP_V_UNIT_SOURCE = LTC4260_V_UNIT_SOURCE
-     
-        ==> 
+
+        ==>
             Via all FN and BN:
             0 = FPGA temperature                 = TInt8(fpga_temp)
             Only via BN3:
@@ -156,4 +113,39 @@ peripherals:
             2 = UniBoard hot swap supply current = hot_swap_v_sense * SENS_HOT_SWAP_I_UNIT_SENSE
             3 = UniBoard hot swap supply voltage = hot_swap_v_source * SENS_HOT_SWAP_V_UNIT_SOURCE
             4 = I2C error status for BN3 sensors access only, 0 = ok"
+    parameters:
+      - { name: g_sim,       value: FALSE }
+      - { name: g_clk_freq,  value: c_unb1_board_mm_clk_freq_125M }
+      - { name: g_temp_high, value: 85 }
+    mm_ports:
+      # actual hdl name: reg_unb1_sens
+      - mm_port_name   : sens
+        mm_port_type   : REG
+        mm_port_description:  " "
+        fields:
+          - - field_name    : sens_data
+              field_description: |
+                  " data array with sens data
+                  0x0 = fpga temperature in degrees (two's complement)
+                  0x1 = eth_temp temperature in degrees (two's complement)
+                  0x2 = hot_swap_v_sens
+                  0x3 = hot_swap_v_source"
+              number_of_fields: 4
+              address_offset: 0x0
+              mm_width      : 8
+              access_mode   : RO
+          
+          - - field_name    : sens_err
+              field_description: ""
+              address_offset: 0x10
+              mm_width      : 1
+              access_mode   : RO
+              radix         : uint32
+        
+          - - field_name    : temp_high
+              field_description: ""
+              address_offset: 0x14
+              mm_width      : 7
+              reset_value   : g_temp_high
+
     
diff --git a/boards/uniboard2b/designs/unb2b_minimal/unb2b_minimal.fpga.yaml b/boards/uniboard2b/designs/unb2b_minimal/unb2b_minimal.fpga.yaml
index 678ac4ecf5d194ca2db33c22031bf92dd773ca73..40f9191902718876c4770eddae1437b8cc66f0fe 100644
--- a/boards/uniboard2b/designs/unb2b_minimal/unb2b_minimal.fpga.yaml
+++ b/boards/uniboard2b/designs/unb2b_minimal/unb2b_minimal.fpga.yaml
@@ -11,10 +11,10 @@ peripherals:
   # Factory / minimal (from ctrl_unb2b_board.vhd)
   #############################################################################
   - peripheral_name: unb2b_board/system_info
+    lock_base_address: 0x10000
     mm_port_names:
       - ROM_SYSTEM_INFO
       - PIO_SYSTEM_INFO
-    lock_base_address: 0x10000
 
   - peripheral_name: unb2b_board/wdi
     mm_port_names:
diff --git a/boards/uniboard2b/libraries/unb2b_board/unb2b_board.peripheral.yaml b/boards/uniboard2b/libraries/unb2b_board/unb2b_board.peripheral.yaml
index 3e40802728aacfc87c15cfc4f9008d76120bdadb..fc5f4ccbf3e156fe51d24ed3009ccc25029f53c2 100644
--- a/boards/uniboard2b/libraries/unb2b_board/unb2b_board.peripheral.yaml
+++ b/boards/uniboard2b/libraries/unb2b_board/unb2b_board.peripheral.yaml
@@ -1,4 +1,3 @@
----
 schema_name: args
 schema_version: 1.0
 schema_type: peripheral
@@ -17,9 +16,9 @@ peripherals:
         fields:
           - - field_name: rw_data 
               field_description: "Void data"
-              access_mode: RW
-              address_offset: 0x0
               number_of_fields: 512
+              address_offset: 0x0
+              access_mode: RW
               
   - peripheral_name: system_info  # pi_system_info.py
     peripheral_description: ""
@@ -32,12 +31,12 @@ peripherals:
         fields:
           - - field_name: ro_data
               field_description: "FPGA info memory map data"
+              number_of_fields: 32768   # c_rom_addr_w in mms_unb2b_board_system_info
+              address_offset: 0x0
               mm_width: 32
               user_width: 8
               radix: char8
               access_mode: RO
-              address_offset: 0x0
-              number_of_fields: 32768   # c_rom_addr_w in mms_unb2b_board_system_info
 
       # MM port for mms_unb2b_board_system_info.vhd / unb2b_board_system_info_reg.vhd
       - mm_port_name: PIO_SYSTEM_INFO
@@ -54,66 +53,66 @@ peripherals:
           # Each field specified
           - - field_name: info
               field_description: "Info"
-              mm_width: 32
+              address_offset: 0x0
               bit_offset: 0
+              mm_width: 32
               access_mode: RO
-              address_offset: 0x0
           - "info": # field_group
             - field_name: gn_index
               field_description: "Global node index, unb2 FPGA id = gn_index % 4, unb2 backplane id = gn_index // 4"
-              mm_width: 8
+              address_offset: 0x0
               bit_offset: 0
+              mm_width: 8
               access_mode: RO
-              address_offset: 0x0
             - field_name: hw_version
               field_description: "UniBoard2 hardware (HW) version."
-              mm_width: 2
+              address_offset: 0x0
               bit_offset: 8
+              mm_width: 2
               access_mode: RO
-              address_offset: 0x0
             - field_name: cs_sim
               field_description: "0 when running on HW, 1 when running in simulation."
-              mm_width: 1
+              address_offset: 0x0
               bit_offset: 10
+              mm_width: 1
               access_mode: RO
-              address_offset: 0x0
             - field_name: fw_version_major
               field_description: "FPGA Firmware (FW) version major number, not used use version stamp instead."
-              mm_width: 4
+              address_offset: 0x0
               bit_offset: 16
+              mm_width: 4
               access_mode: RO
-              address_offset: 0x0
             - field_name: fw_version_minor
               field_description: "FPGA Firmware (FW) version minor number, not used use version stamp instead."
-              mm_width: 4
+              address_offset: 0x0
               bit_offset: 20
+              mm_width: 4
               access_mode: RO
-              address_offset: 0x0
             - field_name: rom_version
               field_description: "Version of the mmap schema in ROM_SYSTEM_INFO."
-              mm_width: 3
+              address_offset: 0x0
               bit_offset: 24
+              mm_width: 3
               access_mode: RO
-              address_offset: 0x0
             - field_name: technology
               field_description: "FPGA technology"
-              mm_width: 5
+              address_offset: 0x0
               bit_offset: 27
+              mm_width: 5
               access_mode: RO
-              address_offset: 0x0
           - - field_name: use_phy
               field_description: "PHY interfaces that are active in the FPGA, not used."
+              address_offset: 0x4
               mm_width: 8
               access_mode: RO
-              address_offset: 0x4
           - - field_name: design_name
               field_description: "FPGA FW design name string."
+              number_of_fields: 52
+              address_offset: 0x8
               mm_width: 32
               user_width: 8
               radix: char8
               access_mode: RO
-              address_offset: 0x8
-              number_of_fields: 52
           - - field_name: stamp_date
               field_description: "FPGA FW compile date string."
               access_mode: RO
@@ -121,22 +120,22 @@ peripherals:
               number_of_fields: 1
           - - field_name: stamp_time
               field_description: "FPGA FW compile time string."
-              access_mode: RO
-              address_offset: 0x40
               number_of_fields: 1
+              address_offset: 0x40
+              access_mode: RO
           - - field_name: stamp_commit
               field_description: "FPGA FW commit hash string."
-              access_mode: RO
-              address_offset: 0x44
               number_of_fields: 3
+              address_offset: 0x44
+              access_mode: RO
           - - field_name: design_note
               field_description: "FPGA FW design note string."
+              number_of_fields: 52
+              address_offset: 0x50
               mm_width: 32
               user_width: 8
               radix: char8
               access_mode: RO
-              address_offset: 0x50
-              number_of_fields: 52
               
   - peripheral_name: wdi  # pi_wdi.py
     peripheral_description: ""
@@ -148,8 +147,8 @@ peripherals:
         fields:
           - - field_name: wdi_override
               field_description: "Write value 0xB007FAC7 = 'Boot factory' to disable the watchdog interrupt (WDI), to cause an FPGA image reload."
-              access_mode: WO
               address_offset: 0x0
+              access_mode: WO
 
   - peripheral_name: unb2_fpga_sens
     peripheral_description: ""
@@ -163,9 +162,9 @@ peripherals:
         fields:
           - - field_name: temp
               field_description: "Raw data"
-              access_mode: RO
-              address_offset: 0x0
               number_of_fields: 1
+              address_offset: 0x0
+              access_mode: RO
               
       - mm_port_name: REG_FPGA_VOLTAGE_SENS  # pi_unb_fpga_voltagesens.py
         mm_port_type: REG
@@ -173,7 +172,7 @@ peripherals:
         fields:
           - - field_name: voltages
               field_description: "Not used"
-              access_mode: RO
-              address_offset: 0x0
               number_of_fields: 6
-        
+              address_offset: 0x0
+              access_mode: RO
+
diff --git a/libraries/base/common/common.peripheral.yaml b/libraries/base/common/common.peripheral.yaml
index e59577af29c67ebbd2b74a5090337502014ade1a..5d06bbdbda5d1d9331af904518ebbc63f6a51c9d 100644
--- a/libraries/base/common/common.peripheral.yaml
+++ b/libraries/base/common/common.peripheral.yaml
@@ -21,6 +21,6 @@ peripherals:
         fields:
           - - field_name: enable
               field_description: "When 1 pass on delayed pulse to the output, else disable the output pulse."
+              address_offset: 0x0
               mm_width: 1
               access_mode: RW
-              address_offset: 0x0
diff --git a/libraries/base/diag/diag.peripheral.yaml b/libraries/base/diag/diag.peripheral.yaml
index c5ed1b5fd9c9b168c7c93aad8e1a6fcefacd904e..ac86812ef1440c831599e5e484f71145a97cec63 100644
--- a/libraries/base/diag/diag.peripheral.yaml
+++ b/libraries/base/diag/diag.peripheral.yaml
@@ -14,15 +14,15 @@ peripherals:
     mm_ports:
       # MM port for diag_wg_wideband_reg.vhd
       - mm_port_name: REG_DIAG_WG
-        mm_port_description: "Waveform control."
         mm_port_type: REG
+        mm_port_description: "Waveform control."
         number_of_mm_ports: g_nof_streams
         fields:
           - - field_name: nof_samples
               field_description: "Number of samples in WG period."
-              mm_width: 16
-              bit_offset: 16
               address_offset: 0x0
+              bit_offset: 16
+              mm_width: 16
           - - field_name: mode
               field_description: |
                 "WG mode:
@@ -30,35 +30,35 @@ peripherals:
                  1 = calc, uses WG buffer waveform to output sinus with ampl * sin(freq * t + phase
                  2 = repeat, outputs WG buffer waveform repeatedly
                  3 = single, outputs WG buffer waveform once"
-              mm_width: 8
-              bit_offset: 0
               address_offset: 0x0
+              bit_offset: 0
+              mm_width: 8
           - - field_name: phase
               field_description: "Phase of WG sinus, phase = int('phase in degrees' *  2**width / 360)."
-              mm_width: 16
-              bit_offset: 0
               address_offset: 0x4
+              bit_offset: 0
+              mm_width: 16
           - - field_name: freq
               field_description: "Frequency of WG sinus, freq = int('frequency in range 0 to 1' * f_adc * 2**width), where f_adc is sample frequency in Hz."
-              mm_width: 31
-              bit_offset: 0
               address_offset: 0x8
+              bit_offset: 0
+              mm_width: 31
           - - field_name: ampl
               field_description: "Amplitude of WG sinus, ampl = int('amplitude in range 0 to 2' * 2**(width-1), where amplitude > 1 causes clipping."
-              mm_width: 17
-              bit_offset: 0
               address_offset: 0xC
+              bit_offset: 0
+              mm_width: 17
       # MM port for mms_diag_wg_wideband.vhd
       - mm_port_name: RAM_DIAG_WG
-        mm_port_description: "Waveform buffer."
         mm_port_type: RAM
+        mm_port_description: "Waveform buffer."
         number_of_mm_ports: g_nof_streams
         fields:
           - - field_name: data
               field_description: "Waveform default is one sinus period (diag_sin_1024x18.hex)."
-              mm_width: 18               # = c_wg_buf_dat_w in node_adc_input_and_timing.vhd
-              address_offset: 0x0
               number_of_fields: 1024  # = 2**c_wg_buf_addr_w in node_adc_input_and_timing.vhd
+              address_offset: 0x0
+              mm_width: 18               # = c_wg_buf_dat_w in node_adc_input_and_timing.vhd
 
   - peripheral_name: diag_data_buffer    # pi_diag_data_buffer.py
     peripheral_description: "Data buffer (DB)"
@@ -71,27 +71,27 @@ peripherals:
     mm_ports:
       # MM port for mms_diag_data_buffer.vhd
       - mm_port_name: REG_DIAG_DB
-        mm_port_description: "Data buffer status."
         mm_port_type: REG
+        mm_port_description: "Data buffer status."
         number_of_mm_ports: g_nof_streams
         fields:
           - - field_name: sync_cnt
               field_description: "Number of times the DB has been written."
-              access_mode: RO
               address_offset: 0x0
+              access_mode: RO
           - - field_name: word_cnt
               field_description: "Number data words in the DB."
-              access_mode: RO
               address_offset: 0x4
+              access_mode: RO
       # MM port for mms_diag_data_buffer.vhd
       - mm_port_name: RAM_DIAG_DB
-        mm_port_description: "Data buffer memory, gets filled after the sync when g_use_in_sync = True, else after the last word was read."
         mm_port_type: RAM
+        mm_port_description: "Data buffer memory, gets filled after the sync when g_use_in_sync = True, else after the last word was read."
         number_of_mm_ports: g_nof_streams
         fields:
           - - field_name: data
               field_description: ""
-              mm_width: g_data_w
-              address_offset: 0x0
               number_of_fields: g_nof_data
+              address_offset: 0x0
+              mm_width: g_data_w
               
diff --git a/libraries/base/dp/dp.peripheral.yaml b/libraries/base/dp/dp.peripheral.yaml
index 30e9d265e329a6830bef5d32a8af42a59177d16e..7a8008c0e8addecda2dee9e1579f39f0fd09c9d6 100644
--- a/libraries/base/dp/dp.peripheral.yaml
+++ b/libraries/base/dp/dp.peripheral.yaml
@@ -16,8 +16,8 @@ peripherals:
         fields:
           - - field_name: rd_usedw
               field_description: "Number of words that can be read from the FIFO."
-              access_mode: RO
               address_offset: 0x0
+              access_mode: RO
       # MM port for mms_dp_fifo_to_mm.vhd / dp_fifo_to_mm.vhd
       - mm_port_name: REG_DPMM_DATA   # Use REG_, instead of preferred FIFO_, to match mm_port_name in pi_dpmm.py
         mm_port_type: FIFO
@@ -25,8 +25,8 @@ peripherals:
         fields:
           - - field_name: rd_data
               field_description: "Read data from the FIFO."
-              access_mode: RO
               address_offset: 0x0
+              access_mode: RO
         
 
   - peripheral_name: mmdp    # pi_mmdp.py
@@ -39,13 +39,13 @@ peripherals:
         fields:
           - - field_name: wr_usedw
               field_description: "Number of words that are in the write FIFO."
-              access_mode: RO
               address_offset: 0x0
+              access_mode: RO
               
           - - field_name: wr_availw
               field_description: "Number of words that can be written to the write FIFO."
-              access_mode: RO
               address_offset: 0x4
+              access_mode: RO
       # MM port for mms_dp_fifo_from_mm.vhd / dp_fifo_from_mm.vhd
       - mm_port_name: REG_MMDP_DATA   # Use REG_, instead of preferred FIFO_, to match mm_port_name in pi_mmdp.py
         mm_port_type: FIFO
@@ -53,8 +53,8 @@ peripherals:
         fields:
           - - field_name: data
               field_description: "Write data to the FIFO."
-              access_mode: WO
               address_offset: 0x0
+              access_mode: WO
 
 
   - peripheral_name: dp_xonoff    # pi_dp_xonoff.py
@@ -73,10 +73,10 @@ peripherals:
               field_description: |
                 "When enable_stream = 0 the data stream is stopped, else when 1 then the data stream is passed on.
                  Toggling the data stream on or off happens at block or packet boundaries."
+              number_of_fields: 1 #g_nof_streams #sel_a_b(g_combine_streams, 1, g_nof_streams)
+              address_offset: 0x0
               mm_width: 1
               access_mode: RW
-              address_offset: 0x0
-              number_of_fields: 1 #g_nof_streams #sel_a_b(g_combine_streams, 1, g_nof_streams)
 
 
   - peripheral_name: dp_shiftram    # pi_dp_shiftram.py
@@ -95,9 +95,9 @@ peripherals:
         fields:
           - - field_name: shift
               field_description: "Fill level of the sample delay buffer in number of data samples."
+              address_offset: 0x0
               mm_width: ceil_log2(g_nof_words)
               access_mode: RW
-              address_offset: 0x0
 
 
   - peripheral_name: dp_bsn_source    # pi_dp_bsn_source.py
@@ -116,33 +116,25 @@ peripherals:
                 "When 1 then enable BSN source, else when 0 disable BSN source. If dp_on_pps is 0,
                  then dp_on = 1 enables the BSN source immediately. To enable the BSN source at
                  the next PPS, then first set dp_on_pps = 1. Clearing dp_on stops the BSN source."
+              address_offset: 0x0
               mm_width: 1
               access_mode: RW
-              address_offset: 0x0
           - - field_name: dp_on_pps
               field_description: "When 1 and dp_on = 1 then enable BSN source at next PPS."
-              mm_width: 1
+              address_offset: 0x0
               bit_offset: 1
+              mm_width: 1
               access_mode: RW
-              address_offset: 0x0
           - - field_name: nof_block_per_sync
               field_description: "Number of blocks per sync interval."
-              access_mode: RW
               address_offset: 0x4
-          #- - field_name: bsn_lo
-          #    field_description: "Initial BSN[31:0]"
-          #    access_mode: RW
-          #    address_offset: 0x8
-          #- - field_name: bsn_hi
-          #    field_description: "Initial BSN[63:32]"
-          #    access_mode: RW
-          #    address_offset: 0xC
+              access_mode: RW
           - - field_name: bsn
               field_description: "Initial BSN"
+              address_offset: 0x8
               user_width: 64
               radix: uint64
               access_mode: RW
-              address_offset: 0x8
 
 
   - peripheral_name: dp_bsn_source_v2    # pi_dp_bsn_source_v2.py
@@ -163,38 +155,30 @@ peripherals:
                 "When 1 then enable BSN source, else when 0 disable BSN source. If dp_on_pps is 0,
                  then dp_on = 1 enables the BSN source immediately. To enable the BSN source at
                  the next PPS, then first set dp_on_pps = 1. Clearing dp_on stops the BSN source."
+              address_offset: 0x0
               mm_width: 1
               access_mode: RW
-              address_offset: 0x0
           - - field_name: dp_on_pps
               field_description: "When 1 and dp_on = 1, then enable BSN source at next PPS."
-              mm_width: 1
+              address_offset: 0x0
               bit_offset: 1
+              mm_width: 1
               access_mode: RW
-              address_offset: 0x0
           - - field_name: nof_block_per_sync
               field_description: "Number of clock cycles per sync interval."
-              access_mode: RW
               address_offset: 0x4
-          #- - field_name: bsn_init_lo
-          #    field_description: "Initial BSN[31:0]"
-          #    access_mode: RW
-          #    address_offset: 0x8
-          #- - field_name: bsn_init_hi
-          #    field_description: "Initial BSN[63:32]"
-          #    access_mode: RW
-          #    address_offset: 0xC
+              access_mode: RW
           - - field_name: bsn_init
               field_description: "Initial BSN"
+              address_offset: 0x8
               user_width: 64
               radix: uint64
               access_mode: RW
-              address_offset: 0x8
           - - field_name: bsn_time_offset
               field_description: "The BSN block time offset in number of clock cycles, with respect to the PPS."
+              address_offset: 0x10
               mm_width: g_bsn_time_offset_w
               access_mode: RW
-              address_offset: 0x10
 
               
   - peripheral_name: dp_bsn_scheduler    # pi_dp_bsn_scheduler.py
@@ -205,20 +189,12 @@ peripherals:
         mm_port_type: REG
         mm_port_description: ""
         fields:
-          #- - field_name: scheduled_bsn_lo
-          #    field_description: "Write scheduled BSN lo, read current BSN lo. First access lo, then hi."
-          #    access_mode: RW
-          #    address_offset: 0x0
-          #- - field_name: scheduled_bsn_hi
-          #    field_description: "Write scheduled BSN hi, read current BSN hi. First access lo, then hi."
-          #    access_mode: RW
-          #    address_offset: 0x4
           - - field_name: scheduled_bsn
               field_description: "Write scheduled BSN. First access lo, then hi."
+              address_offset: 0x0
               user_width: 64
               radix: uint64
               access_mode: RW
-              address_offset: 0x0
 
               
   - peripheral_name: dp_bsn_monitor    # pi_dp_bsn_monitor.py
@@ -235,66 +211,50 @@ peripherals:
         fields:
           - - field_name: xon_stable
               field_description: "Data block flow control xon signal was active and stable during last sync interval."
-              mm_width: 1
+              address_offset: 0x0
               bit_offset: 0
+              mm_width: 1
               access_mode: RO
-              address_offset: 0x0
           - - field_name: ready_stable
               field_description: "Clock cycle flow control ready signal was active and stable during last sync interval."
-              mm_width: 1
+              address_offset: 0x0
               bit_offset: 1
+              mm_width: 1
               access_mode: RO
-              address_offset: 0x0
           - - field_name: sync_timeout
               field_description: "Data stream sync did not occur during last sync interval."
-              mm_width: 1
+              address_offset: 0x0
               bit_offset: 2      # EK TODO: 2 is correct, but using 1 cause gen_doc.py to fail without clear error, because fields then overlap
+              mm_width: 1
               access_mode: RO
-              address_offset: 0x0
-          #- - field_name: bsn_at_sync_lo
-          #    field_description: "Data stream BSN lo at sync."
-          #    access_mode: RO
-          #    address_offset: 0x4
-          #- - field_name: bsn_at_sync_hi
-          #    field_description: "Data stream BSN hi at sync."
-          #    access_mode: RO
-          #    address_offset: 0x8
           - - field_name: bsn_at_sync
               field_description: "Data stream BSN at sync."
+              address_offset: 0x4
               user_width: 64
               radix: uint64
               access_mode: RO
-              address_offset: 0x4
           - - field_name: nof_sop
               field_description: "Number data blocks (sop = start of packet) during last sync interval."
-              access_mode: RO
               address_offset: 0xC
+              access_mode: RO
           - - field_name: nof_valid
               field_description: "Number valid samples of the data blocks during last sync interval (= nof_sop * block size)."
-              access_mode: RO
               address_offset: 0x10
+              access_mode: RO
           - - field_name: nof_err
               field_description: "Number data blocks with error indication during last sync interval."
-              access_mode: RO
               address_offset: 0x14
-          #- - field_name: bsn_first_lo
-          #    field_description: "First data stream BSN lo ever."
-          #    access_mode: RO
-          #    address_offset: 0x18
-          #- - field_name: bsn_first_hi
-          #    field_description: "First data stream BSN hi ever."
-          #    access_mode: RO
-          #    address_offset: 0x1C
+              access_mode: RO
           - - field_name: bsn_first
               field_description: "First data stream BSN ever."
+              address_offset: 0x18
               user_width: 64
               radix: uint64
               access_mode: RO
-              address_offset: 0x18
           - - field_name: bsn_first_cycle_cnt
               field_description: "Arrival latency of first data stream BSN ever, relative to local sync."
-              access_mode: RO
               address_offset: 0x20
+              access_mode: RO
 
 
   - peripheral_name: dp_bsn_monitor_v2    # pi_dp_bsn_monitor_v2.py
@@ -311,52 +271,44 @@ peripherals:
         fields:
           - - field_name: xon_stable
               field_description: "Data block flow control xon signal was active and stable during last sync interval."
-              mm_width: 1
+              address_offset: 0x0
               bit_offset: 0
+              mm_width: 1
               access_mode: RO
-              address_offset: 0x0
           - - field_name: ready_stable
               field_description: "Clock cycle flow control ready signal was active and stable during last sync interval."
-              mm_width: 1
+              address_offset: 0x0
               bit_offset: 1
+              mm_width: 1
               access_mode: RO
-              address_offset: 0x0
           - - field_name: sync_timeout
               field_description: "Data stream sync did not occur during last sync interval."
-              mm_width: 1
+              address_offset: 0x0
               bit_offset: 1
+              mm_width: 1
               access_mode: RO
-              address_offset: 0x0
-          #- - field_name: bsn_at_sync_lo
-          #    field_description: "Data stream BSN lo at sync."
-          #    access_mode: RO
-          #    address_offset: 0x4
-          #- - field_name: bsn_at_sync_hi
-          #    field_description: "Data stream BSN hi at sync."
-          #    access_mode: RO
-          #    address_offset: 0x8
           - - field_name: bsn_at_sync
               field_description: "Data stream BSN at sync."
+              address_offset: 0x4
               user_width: 64
               radix: uint64
               access_mode: RO
-              address_offset: 0x4
           - - field_name: nof_sop
               field_description: "Number data blocks (sop = start of packet) during last sync interval."
-              access_mode: RO
               address_offset: 0xC
+              access_mode: RO
           - - field_name: nof_valid
               field_description: "Number valid samples of the data blocks during last sync interval (= nof_sop * block size)."
-              access_mode: RO
               address_offset: 0x10
+              access_mode: RO
           - - field_name: nof_err
               field_description: "Number data blocks with error indication during last sync interval."
-              access_mode: RO
               address_offset: 0x14
+              access_mode: RO
           - - field_name: latency
               field_description: "Arrival latency of data stream BSN at sync, relative to local sync."
-              access_mode: RO
               address_offset: 0x20
+              access_mode: RO
 
 
   - peripheral_name: dp_selector    # pi_dp_selector.py
@@ -371,6 +323,6 @@ peripherals:
               field_description: |
                 "When input_select = 0 select the reference data stream(s), else when 1 select the other data stream(s).
                  The input_select is synchronsized to the start of a sync interval."
+              address_offset: 0x0
               mm_width: 1
               access_mode: RW
-              address_offset: 0x0
diff --git a/libraries/base/reorder/reorder.peripheral.yaml b/libraries/base/reorder/reorder.peripheral.yaml
index 30e5ecff51b449a4b2ccbf02aee3570f23c93c9d..fa238d51081386f0d1330737dc6f921421944d0a 100644
--- a/libraries/base/reorder/reorder.peripheral.yaml
+++ b/libraries/base/reorder/reorder.peripheral.yaml
@@ -22,13 +22,13 @@ peripherals:
     mm_ports:
       # MM port for reorder_col_wide.vhd / reorder_col.vhd
       - mm_port_name: RAM_SS_SS_WIDE
-        mm_port_description: ""
         mm_port_type: RAM
+        mm_port_description: ""
         number_of_mm_ports: g_wb_factor
         fields:
           - - field_name: index
               field_description: ""
-              mm_width: ceil_log2(g_nof_ch_in)
-              address_offset: 0x0
               number_of_fields: g_nof_ch_sel
+              address_offset: 0x0
+              mm_width: ceil_log2(g_nof_ch_in)
 
diff --git a/libraries/dsp/bf/bf.peripheral.yaml b/libraries/dsp/bf/bf.peripheral.yaml
index 547dc9a11ae7cb9fb5c29a64f63a0128d77ca811..0a2824614a9051f0822a1bc9153e0c4827711381 100644
--- a/libraries/dsp/bf/bf.peripheral.yaml
+++ b/libraries/dsp/bf/bf.peripheral.yaml
@@ -7,7 +7,9 @@ hdl_library_description: " This is the description for the bf package "
 
 peripherals:
   - peripheral_name: bf
- 
+    peripheral_description: |
+        "This is the beamformer unit"
+
     parameters:
       - { name: g_bf.in_weights_w            , value: 16 }
       - { name: g_bf.nof_weights             , value: 256 }
@@ -18,62 +20,59 @@ peripherals:
 
     mm_ports:
         # ram_bf_weights
-      - mm_port_name   : WEIGHTS
-        number_of_mm_ports: g_bf.nof_weights
+      - mm_port_name: WEIGHTS
         mm_port_type: RAM
+        mm_port_description: >
+                " "
+        number_of_mm_ports: g_bf.nof_weights
         fields:
-          - - field_name    : bf_weights 
-              mm_width      : g_bf.in_weights_w * c_nof_complex
-
-              number_of_fields: g_bf.nof_signal_paths
+          - - field_name: bf_weights
               field_description: |
-                          "Contains the weights. 
+                          "Contains the weights.
                           The real and the imaginary parts are concatenated: W_real in Lower part. W_imag in Higher part."
-        mm_port_description: >
-                " "
+              number_of_fields: g_bf.nof_signal_paths
+              mm_width: g_bf.in_weights_w * c_nof_complex
+
     
         # ram_ss_ss_wide
-      - mm_port_name   : SS_SS_WIDE
-        number_of_mm_ports: g_bf.nof_weights
+      - mm_port_name: SS_SS_WIDE
         mm_port_type: RAM
+        mm_port_description: >
+            " "
+        number_of_mm_ports: g_bf.nof_weights
         fields:
-          - - field_name      : ss_ss_wide
-              mm_width        : 32
-              number_of_fields: g_bf.nof_subbands * g_bf.nof_input_streams * c_nof_signal_paths_per_stream  # 16*4=64, nof_input_streams*nof_signal_paths_per_stream
+          - - field_name: ss_ss_wide
               field_description: |
                   "Contains the addresses to select from the stored subbands."
-        mm_port_description: >
-            " "
+              number_of_fields: g_bf.nof_subbands * g_bf.nof_input_streams * c_nof_signal_paths_per_stream  # 16*4=64, nof_input_streams*nof_signal_paths_per_stream
+              mm_width: 32
       
         # ram_st_sst_bf
-      - mm_port_name   : ST_SST
-        number_of_mm_ports: g_bf.nof_weights
+      - mm_port_name: ST_SST
         mm_port_type: RAM
+        mm_port_description: >
+          " "
+        number_of_mm_ports: g_bf.nof_weights
         fields:
-          - - field_name      : st_sst_bf
-              mm_width        : 56
-              number_of_fields: 512
-              access_mode : RO   
+          - - field_name: st_sst_bf
               field_description: |
                   "Contains the weights.
                   The real and the imaginary parts are concatenated: W_real in Lower part. W_imag in Higher part."
-        mm_port_description: >
-          " "
+              number_of_fields: 512
+              mm_width: 56
+              access_mode : RO   
       
         # reg_st_sst_bf
       - mm_port_name   : treshold
-        number_of_mm_ports: 1
         mm_port_type: REG
+        mm_port_description: >
+            " "
+        number_of_mm_ports: 1
         fields:
-          - - field_name    : treshold
-              address_offset: 0x0
-              field_description  : |
+          - - field_name: treshold
+              field_description: |
                   "When the treshold register is set to 0 the statistics will be auto-correlations.
                   In case the treshold register is set to a non-zero value, it allows to create a sample & hold function
                   for the a-input of the multiplier. 
                   The a-input of the multiplier is updated every treshold clockcycle. Thereby cross statistics can be created."
-        mm_port_description: >
-            " "
-    
-    peripheral_description: |
-        "This is the beamformer unit"
+              address_offset: 0x0
diff --git a/libraries/dsp/filter/filter.peripheral.yaml b/libraries/dsp/filter/filter.peripheral.yaml
index 22612d7ff683fcdb124225da2ade001dc1f1e0ef..0e13878acb86d6fbb3315e8cc5692b88869b4225 100644
--- a/libraries/dsp/filter/filter.peripheral.yaml
+++ b/libraries/dsp/filter/filter.peripheral.yaml
@@ -33,6 +33,7 @@ peripherals:
     mm_ports:
       # MM port for fil_ppf_wide.vhd / fil_ppf_single.vhd
       - mm_port_name: RAM_FIL_COEFS
+        mm_port_type: RAM
         mm_port_description: |
            "The FIR filter coefficients are stored in blocks of g_fil_ppf.nof_bands/g_fil_ppf.wb_factor
             real coefficients:
@@ -43,11 +44,10 @@ peripherals:
             g_fil_ppf.nof_bands/g_fil_ppf.wb_factor coefficients:
            
             (int16)coefs[g_fil_ppf.nof_taps][g_fil_ppf.nof_bands]"
-        mm_port_type: RAM
         number_of_mm_ports: g_fil_ppf.wb_factor * g_fil_ppf.nof_taps
         fields:
           - - field_name: coef
               field_description: "Real FIR filter coefficient"
-              mm_width: g_fil_ppf.coef_dat_w
-              address_offset: 0x0
               number_of_fields: g_fil_ppf.nof_bands / g_fil_ppf.wb_factor
+              address_offset: 0x0
+              mm_width: g_fil_ppf.coef_dat_w
diff --git a/libraries/dsp/fringe_stop/fringe_stop.peripheral.yaml b/libraries/dsp/fringe_stop/fringe_stop.peripheral.yaml
index 67772e418753ee5bfae3ee7530e80abd9be46167..514869711c507f52a70603d41165b33dfb609efa 100644
--- a/libraries/dsp/fringe_stop/fringe_stop.peripheral.yaml
+++ b/libraries/dsp/fringe_stop/fringe_stop.peripheral.yaml
@@ -7,85 +7,56 @@ hdl_library_description: " This is the description for the finge_stop library "
 
 peripherals:
   - peripheral_name: fringe_stop
-
-    parameters:
-      - { name: g_nof_channels,  value: 256 }
-      - { name: g_fs_offset_w ,  value: 10 }
-      - { name: g_fs_step_w   ,  value: 17 }
-    
-    mm_ports:
-        # actual hdl name: ram_fringe_stop_step
-      - mm_port_name   : STEP
-        mm_port_type   : RAM
-        fields:
-          - - field_name  : fringe_stop_step
-              mm_width: g_fs_step_w
-              number_of_fields: g_nof_channels
-              field_description: |
-                  "Contains the step size for all nof_channels channels."
-        mm_port_description: " "
-
-        # actual hdl name: fringe_stop_offset
-      - mm_port_name   : STOP_OFFSET
-        mm_port_type   : RAM
-        fields:
-          - - field_name:  fringe_stop_offset
-              mm_width: g_fs_offset_w
-              number_of_fields: g_nof_channels
-              field_description: |
-                  "Contains the offset for all nof_channels channels."
-        mm_port_description: " "
-
     peripheral_description: |
         "The fringe stopping peripheral is based on piecewise linear coefficients. The coefficients are indicated as offset and step.
         The offset and step are used to calculate an index that is used to select a certain phase from a look-up table. The look-up
         table contains a series of complex values that are based on a sinewave. The length of the look-up table is determined by the
         width of the offset RAM (offset_w). If offset_w = 10 then the length of the look-up table is 2^offset_w=1024. In that case
         the look-up table contains 1024 complex values that make one sine-wave period.
-        
+
         The index is determined as follows:
-        
+
             index(t) = (offset + step*t) MOD 2^offset_w
-        
+
         Where t ranges from 0 to Tmax-1. Tmax is the number of samples that fit in the control interval (the sync interval).
         The fringe stop peripheral is capable to process 1 or more channels in series (nof_channels).
-        
+
         Accumulation Register
         The accumulation register that maintains the accumulated step value is flushed by the sync pulse in the system.
         The accumulation register in the Apertif case is 31 bit wide. For the additon of the offset and the accumulated step the
         10 (offset_w) highest bit of the accumulated value are used --> offset(9:0) + step_accumulated(30:21).
-        
+
         RAMs
         The fringe stop interface is facilitated by two RAMs:
-        
+
             -RAM_FRINGE_STOP_OFFSET
             -RAM_FRINGE_STOP_STEP
-        
+
         Both RAMs are implemented as dual-page RAMs.The page swap is triggered by the sync-pulse. The VHDL is always accessing
         the page that is NOT accessible for the software and vice-versa. This means that the values that are written to the RAMs
         will only be actually used in the following sync-interval:
-        
-        
-        A|         _             T0              _             T1              _            T2 
+
+
+        A|         _             T0              _             T1              _            T2
         A| sync __| |___________________________| |___________________________| |________________________
-        A|        |    VHDL uses data T0        |    VHDL uses data T1        |    VHDL uses data T2 
+        A|        |    VHDL uses data T0        |    VHDL uses data T1        |    VHDL uses data T2
         A|        |    Software writes data T1  |    Software writes data T2  |    Software writes data T3
-        A|        |                             |                             | 
-        A|    page_swap                     page_swap                     page_swap 
-        
-        
+        A|        |                             |                             |
+        A|    page_swap                     page_swap                     page_swap
+
+
         The software should be sure to write the next set of data before the sync_interval expires. Keeping track of the
         synchronization with the sync-pulse can be done, using one of the BSN Monitors in the system. In the Apertif system
         the BSN Monitor at the input of the beamformer can be used.
-        
+
         The number_of_fields of both RAMs is determined by the number of unique channels that ought to be processed.
-        
+
         RAM_FRINGE_STOP_OFFSET
         This RAM contains the offset values for all channels, ranging from Channel 0 to Channel Max-1. The width of the RAM is
         defined by the offset_w.
-        
+
         +-----------------------------------------+
-        | RAM_address     | RAM_content           | 
+        | RAM_address     | RAM_content           |
         |-----------------------------------------|
         |   0x0           | Offset_Channel_0      |
         |   0x1           | Offset_Channel_1      |
@@ -94,13 +65,13 @@ peripherals:
         |   ..            |       ..              |
         |   ..            | Offset_Channel_Max-1  |
         +-----------------------------------------+
-        
+
         RAM_FRINGE_STOP_STEP
         This RAM contains the step size values for all channels, ranging from Channel 0 to Channel Max-1. The width of the RAM is
         specified by the step_w.
-        
+
         +-----------------------------------------+
-        | RAM_address     | RAM_content           | 
+        | RAM_address     | RAM_content           |
         |-----------------------------------------|
         |   0x0           | Step_Channel_0        |
         |   0x1           | Step_Channel_1        |
@@ -109,4 +80,30 @@ peripherals:
         |   ..            |       ..              |
         |   ..            | Step_Channel_Max-1    |
         +-----------------------------------------+"
-        
+    parameters:
+      - { name: g_nof_channels,  value: 256 }
+      - { name: g_fs_offset_w ,  value: 10 }
+      - { name: g_fs_step_w   ,  value: 17 }
+    mm_ports:
+        # actual hdl name: ram_fringe_stop_step
+      - mm_port_name   : STEP
+        mm_port_type   : RAM
+        mm_port_description: " "
+        fields:
+          - - field_name  : fringe_stop_step
+              field_description: |
+                  "Contains the step size for all nof_channels channels."
+              mm_width: g_fs_step_w
+              number_of_fields: g_nof_channels
+
+        # actual hdl name: fringe_stop_offset
+      - mm_port_name   : STOP_OFFSET
+        mm_port_type   : RAM
+        mm_port_description: " "
+        fields:
+          - - field_name:  fringe_stop_offset
+              field_description: |
+                  "Contains the offset for all nof_channels channels."
+              number_of_fields: g_nof_channels
+              mm_width: g_fs_offset_w
+
diff --git a/libraries/dsp/si/si.peripheral.yaml b/libraries/dsp/si/si.peripheral.yaml
index d738cebd2225f68bbb139bfa6e46ddea50622cb2..206534545d065f54e4b155f8ba1086225391e6c0 100644
--- a/libraries/dsp/si/si.peripheral.yaml
+++ b/libraries/dsp/si/si.peripheral.yaml
@@ -11,10 +11,10 @@ peripherals:
     mm_ports:
       # MM port for si_arr.vhd
       - mm_port_name: REG_SI
-        mm_port_description: "In the even Nyquist zones the sampled spectrum gets flipped in frequency. This flip can be compensated for by enabling spectral inversion (SI)."
         mm_port_type: REG
+        mm_port_description: "In the even Nyquist zones the sampled spectrum gets flipped in frequency. This flip can be compensated for by enabling spectral inversion (SI)."
         fields:
           - - field_name: enable
               field_description: "When 0 then pass on the array of input signals, when 1 then enable spectral inversion for all the input signals."
-              mm_width: 1
               address_offset: 0x0
+              mm_width: 1
diff --git a/libraries/dsp/st/st.peripheral.yaml b/libraries/dsp/st/st.peripheral.yaml
index 4dc16e87c486cf0435606d1e2de5e1acfa7a059c..13bbf592e2000dc1d0336ff519d3f8050e8cdef1 100644
--- a/libraries/dsp/st/st.peripheral.yaml
+++ b/libraries/dsp/st/st.peripheral.yaml
@@ -22,22 +22,22 @@ peripherals:
     mm_ports:
       # MM port for st_sst.vhd
       - mm_port_name: RAM_ST_SST
+        mm_port_type: RAM
         mm_port_description: |
            "The statistics are calculated for blocks of g_nof_stat time multiplexed data streams.
             There are g_nof_instances parallel time multiplexed data streams.
             The statistic power values have g_stat_data_w bits. The memory format is:
             . g_xst_enable = False, for real powers : (uint32 * g_stat_data_sz)st[g_nof_instances]_[g_nof_stat]
             . g_xst_enable = True, for complex powers : (cuint32 * g_stat_data_sz)st[g_nof_instances]_[g_nof_stat]"
-        mm_port_type: RAM
         number_of_mm_ports: g_nof_instances
         fields:
           - - field_name: power
               field_description: ""
+              number_of_fields: g_nof_stat * g_stat_data_sz
+              address_offset: 0x0
               mm_width: 32
               user_width: g_stat_data_w
               radix: uint64
-              address_offset: 0x0
-              number_of_fields: g_nof_stat * g_stat_data_sz
 
               
   - peripheral_name: st_sst_for_sdp  # pi_st_sst.py
@@ -53,6 +53,7 @@ peripherals:
     mm_ports:
       # MM port for st_sst.vhd
       - mm_port_name: RAM_ST_SST
+        mm_port_type: RAM
         mm_port_description: |
           "The subband statistics per PN are stored in g_nof_instances = P_pfb = S_pn / Q_fft = 6 blocks of 
            N_sub * Q_fft = 512 * 2 = 1024 real values as:
@@ -60,16 +61,15 @@ peripherals:
            (uint64)SST[g_nof_instances]_[g_nof_stat] = (uint64)SST[S_pn/Q_fft]_[N_sub][Q_fft]
           
            where S_pn = 12, Q_fft = 2 and N_sub = 512 are defined in sdp_pkg.vhd."
-        mm_port_type: RAM
         number_of_mm_ports: g_nof_instances
         fields:
           - - field_name: power
               field_description: ""
+              number_of_fields: g_nof_stat * g_stat_data_sz
+              address_offset: 0x0
               mm_width: 32
               user_width: g_stat_data_w
               radix: uint64
-              address_offset: 0x0
-              number_of_fields: g_nof_stat * g_stat_data_sz
 
 
   - peripheral_name: st_bst_for_sdp  # pi_st_bst.py
@@ -85,19 +85,19 @@ peripherals:
     mm_ports:
       # MM port for st_sst.vhd
       - mm_port_name: RAM_ST_SST
+        mm_port_type: RAM
         mm_port_description: |
           "The beamlet statistics per PN are stored in 1 block of S_sub_bf * N_pol_bf = 488 * 2 = 976 real values as:
 
            (uint64)BST[g_nof_stat] = (uint64)BST[S_sub_bf][N_pol_bf]
 
            where N_pol_bf = 2 and S_sub_bf = 488 are defined in sdp_pkg.vhd."
-        mm_port_type: RAM
         number_of_mm_ports: 1
         fields:
           - - field_name: power
               field_description: ""
+              number_of_fields: g_nof_stat * g_stat_data_sz
+              address_offset: 0x0
               mm_width: 32
               user_width: g_stat_data_w
               radix: uint64
-              address_offset: 0x0
-              number_of_fields: g_nof_stat * g_stat_data_sz
diff --git a/libraries/io/aduh/aduh.peripheral.yaml b/libraries/io/aduh/aduh.peripheral.yaml
index 83c37cd7e7dbad3dd50b3c5dbf5b50aa29378f6e..5f19809c1d61f2637f413ce97ce5adae7f62935b 100644
--- a/libraries/io/aduh/aduh.peripheral.yaml
+++ b/libraries/io/aduh/aduh.peripheral.yaml
@@ -20,20 +20,20 @@ peripherals:
         fields:
           - - field_name: mean_sum_lo
               field_description: "Mean sum[31:0] of samples during a sync interval."
-              access_mode: RO
               address_offset: 0x0
+              access_mode: RO
           - - field_name: mean_sum_hi
               field_description: "Mean sum[63:32] of samples during a sync interval."
-              access_mode: RO
               address_offset: 0x4
+              access_mode: RO
           - - field_name: power_sum_lo
               field_description: "Power sum[31:0] of sample powers during a sync interval."
-              access_mode: RO
               address_offset: 0x8
+              access_mode: RO
           - - field_name: power_sum_hi
               field_description: "Power sum[63:32] of sample powers during a sync interval."
-              access_mode: RO
               address_offset: 0xC
+              access_mode: RO
       
   - peripheral_name: aduh_mon_data_buffer    # pi_aduh_monitor.py
     peripheral_description: "Data buffer to capture samples (= diag_data_buffer)"
@@ -53,7 +53,7 @@ peripherals:
         fields:
           - - field_name: data
               field_description: ""
-              mm_width: g_symbol_w * g_nof_symbols_per_data
-              address_offset: 0x0
               number_of_fields: g_buffer_nof_symbols / g_nof_symbols_per_data
+              address_offset: 0x0
+              mm_width: g_symbol_w * g_nof_symbols_per_data
         
diff --git a/libraries/io/epcs/epcs.peripheral.yaml b/libraries/io/epcs/epcs.peripheral.yaml
index a0cd36b980cbef177fd8c0b0f8a2176cd50768f4..8a0d28ba86093e3888bb6eb6a4b30921ea844c32 100644
--- a/libraries/io/epcs/epcs.peripheral.yaml
+++ b/libraries/io/epcs/epcs.peripheral.yaml
@@ -27,45 +27,45 @@ peripherals:
         fields:
           - - field_name: addr
               field_description: "Address to write to or read from."
+              address_offset: 0x0
               mm_width: 24
               access_mode: WO
-              address_offset: 0x0
         
           - - field_name: rden
               field_description: "Read enable bit."
+              address_offset: 0x4
               mm_width: 1
               access_mode: WO
-              address_offset: 0x4
         
           - - field_name: read_bit
               field_description: "Read bit."
+              address_offset: 0x8
               mm_width: 1
               access_mode: WO
               side_effect: PW
-              address_offset: 0x8
 
           - - field_name: write_bit
               field_description: "Write bit."
+              address_offset: 0xc
               mm_width: 1
               access_mode: WO
               side_effect: PW
-              address_offset: 0xc
 
           - - field_name: sector_erase
               field_description: "Sector erase bit."
+              address_offset: 0x10
               mm_width: 1
               access_mode: WO
-              address_offset: 0x10
 
           - - field_name: busy
               field_description: "Busy bit."
+              address_offset: 0x14
               mm_width: 1
               access_mode: RO
-              address_offset: 0x14
 
           - - field_name: unprotect
               field_description: "Use 0xBEDA221E (= Bedazzle) as password to unprotect address range."
+              address_offset: 0x18
               mm_width: 32
               access_mode: WO
-              address_offset: 0x18
                     
diff --git a/libraries/io/eth/eth.peripheral.yaml b/libraries/io/eth/eth.peripheral.yaml
index 5593e60c884be463d06bf6bce75c1443c9f71e7c..e98da05be1818690181856cb6e972b9b8c50b64d 100644
--- a/libraries/io/eth/eth.peripheral.yaml
+++ b/libraries/io/eth/eth.peripheral.yaml
@@ -22,9 +22,9 @@ peripherals:
         fields:
           - - field_name: status
               field_description: ""
-              access_mode: RO
-              address_offset: 0x0
               number_of_fields: 1024   # = c_tech_tse_byte_addr_w in tech_tse_pkg.vhd
+              address_offset: 0x0
+              access_mode: RO
         
       # MM port for registers in eth_mm_registers.vhd in the ETH module [2]
       - mm_port_name: AVS_ETH_0_REG
@@ -33,9 +33,9 @@ peripherals:
         fields:
           - - field_name: status
               field_description: ""
-              access_mode: RO
-              address_offset: 0x0
               number_of_fields: 12     # = c_eth_reg_nof_words in eth_pkg.vhd
+              address_offset: 0x0
+              access_mode: RO
         
       # MM port for ETH packet packet buffers in eth.vhd
       - mm_port_name: AVS_ETH_0_RAM
diff --git a/libraries/io/nw_10GbE/nw_10GbE.peripheral.yaml b/libraries/io/nw_10GbE/nw_10GbE.peripheral.yaml
index 010d51c1dc6d263e6e0324c26fa75aa1275fd0e9..05a3c22d5427bee0324743a72f9ea6294afe1dfa 100644
--- a/libraries/io/nw_10GbE/nw_10GbE.peripheral.yaml
+++ b/libraries/io/nw_10GbE/nw_10GbE.peripheral.yaml
@@ -161,19 +161,19 @@ peripherals:
         fields:
           - - field_name: tx_snk_out_xon
               field_description: ""
+              address_offset: 0x0
               mm_width: 1
               bit_offset: 0
               access_mode: RO
-              address_offset: 0x0
           - - field_name: xgmii_tx_ready
               field_description: ""
+              address_offset: 0x0
               mm_width: 1
               bit_offset: 1
               access_mode: RO
-              address_offset: 0x0
           - - field_name: xgmii_link_status
               field_description: ""
+              address_offset: 0x0
               mm_width: 2
               bit_offset: 2
               access_mode: RO
-              address_offset: 0x0
diff --git a/libraries/io/ppsh/ppsh.peripheral.yaml b/libraries/io/ppsh/ppsh.peripheral.yaml
index c04c8fffc46255c29e00d050d890f69558810f5a..4de7dd4254b41f1aa02e2f00609864b434c7277b 100644
--- a/libraries/io/ppsh/ppsh.peripheral.yaml
+++ b/libraries/io/ppsh/ppsh.peripheral.yaml
@@ -27,42 +27,41 @@ peripherals:
         fields:
           - - field_name: capture_cnt
               field_description: "Measured number of clock cycles between captured PPS pulses."
+              address_offset: 0x0
               mm_width: 30
               bit_offset: 0
               access_mode: RO
-              address_offset: 0x0
               
           - - field_name: stable
               field_description: "PPS is stable (1) when capture_cnt = expected_cnt for all PPS periods since last time status was read, else PPS is not stable (0)."
+              address_offset: 0x0
               mm_width: 1
               bit_offset: 30
               access_mode: RO
-              address_offset: 0x0
               
           - - field_name: toggle
               field_description: "Level bit that toggles after every PPS."
+              address_offset: 0x0
               mm_width: 1
               bit_offset: 31
               access_mode: RO
-              address_offset: 0x0
           
           - - field_name: expected_cnt
               field_description: "Expected number of clock cycles between captured PPS pulses."
+              address_offset: 0x4
               mm_width: ceil_log2(g_st_clk_freq)
               bit_offset: 0
               access_mode: RW
-              address_offset: 0x4
               
           - - field_name: edge
               field_description: "When 0 then clock PPS in on rising edge of clock, else when 1 use falling edge of clock."
+              address_offset: 0x4
               mm_width: 1
               bit_offset: 31
               access_mode: RW
-              address_offset: 0x4
               
           - - field_name: offset_cnt
               field_description: "Number of clock cycles at read access, that has passed since last PPS."
               address_offset: 0x8
               mm_width: ceil_log2(g_st_clk_freq)
               access_mode: RO
-                  
diff --git a/libraries/io/remu/remu.peripheral.yaml b/libraries/io/remu/remu.peripheral.yaml
index a2e8775b11d4f7c540ea6fd38a1215051e6c7e81..48608f72751dc1405b74e25861cfdb9b5659b78f 100644
--- a/libraries/io/remu/remu.peripheral.yaml
+++ b/libraries/io/remu/remu.peripheral.yaml
@@ -24,45 +24,44 @@ peripherals:
         fields:
           - - field_name: reconfigure
               field_description: "Use 0xB007FAC7 (= boot factory) as password to reconfigure."
+              address_offset: 0x0
               mm_width: c_word_w
               access_mode: WO
-              address_offset: 0x0
         
           - - field_name: param
               field_description: "param"
+              address_offset: 0x4
               mm_width: 3
               access_mode: WO
-              address_offset: 0x4
         
           - - field_name: read_param
               field_description: "read_param"
+              address_offset: 0x8
               mm_width: 1
               access_mode: WO
               side_effect: PW
-              address_offset: 0x8
 
           - - field_name: write_param
               field_description: "write_param"
+              address_offset: 0xc
               mm_width: 1
               access_mode: WO
               side_effect: PW
-              address_offset: 0xc
 
           - - field_name: data_out
               field_description: "data_out"
+              address_offset: 0x10
               mm_width: g_data_w
               access_mode: RO
-              address_offset: 0x10
 
           - - field_name: data_in
               field_description: "data_in"
+              address_offset: 0x14
               mm_width: g_data_w
               access_mode: WO
-              address_offset: 0x14
 
           - - field_name: busy
               field_description: "busy"
+              address_offset: 0x18
               mm_width: 1
               access_mode: RO
-              address_offset: 0x18
-    
diff --git a/libraries/technology/jesd204b/tech_jesd204b.peripheral.yaml b/libraries/technology/jesd204b/tech_jesd204b.peripheral.yaml
index 2fe119edf4f93399e7732af647922fc73ed66582..7fe5b2d604102e508778a46ad52f5545bb7ffa41 100644
--- a/libraries/technology/jesd204b/tech_jesd204b.peripheral.yaml
+++ b/libraries/technology/jesd204b/tech_jesd204b.peripheral.yaml
@@ -16,16 +16,16 @@ peripherals:
         fields:
           - - field_name: reset
               field_description: "Write 1 to reset the full JESD interface for all JESD signal inputs."
-              mm_width: 1
+              address_offset: 0x0
               bit_offset: 31
+              mm_width: 1
               access_mode: RW
-              address_offset: 0x0
           - - field_name: enable
               field_description: "Enable JESD signal input i by setting bit i = 1, disable by clearing bit i = 0."
-              mm_width: 31
+              address_offset: 0x0
               bit_offset: 0
+              mm_width: 31
               access_mode: RW
-              address_offset: 0x0
               
   - peripheral_name: jesd204b_arria10    # pi_jesd204b_unb2.py
     peripheral_description: |