diff --git a/tools/oneclick/prestudy/YAML/apertif_unb1_bn_filterbank.system.yaml b/tools/oneclick/prestudy/YAML/apertif_unb1_bn_filterbank.system.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..6150eed8903caf1c0d4071b42f3340332832802c
--- /dev/null
+++ b/tools/oneclick/prestudy/YAML/apertif_unb1_bn_filterbank.system.yaml
@@ -0,0 +1,187 @@
+protocol_name   : args
+protocol_version: 1.0
+protocol_type   : system
+
+hdl_library_name: apertif_unb1_bn_filterbank
+
+system_name       : apertif_unb1_bn_filterbank
+system_description: |
+        "apertif_unb1_bn_filterbank for sopc"
+
+parameters:
+  - { name : nof_fringe_stop_units, value: 4 }
+  - { name : nof_streams,           value: 12 }
+
+peripherals:
+  - peripheral_name: rom_system_info
+    subsystem_name : ''
+    slave_port_names:
+        - rom_unb_system_info
+    
+  - peripheral_name: reg_system_info
+  
+    subsystem_name : ''
+    slave_port_names:
+        - reg_unb_system_info
+
+  - peripheral_name: ctrl_unb1_board
+    subsystem_name : ''
+    slave_port_names:
+        - pio_wdi
+  
+  - peripheral_name: unb1_board_wdi_reg
+    subsystem_name : ''
+    slave_port_names:
+        - reg_wdi
+
+  - peripheral_name: eth1g
+    subsystem_name : ''
+    slave_port_names:
+        - avs_eth_0_mms_tse
+        - avs_eth_0_mms_reg
+        - avs_eth_0_mms_ram
+    
+  - peripheral_name: ppsh
+    subsystem_name : ''
+    slave_port_names:
+        - pio_pps
+
+  - peripheral_name: epcs_reg
+    subsystem_name : ''
+    slave_port_names:
+        - reg_epcs
+        - reg_mmdp_ctrl
+        - reg_mmdp_data
+        - reg_dpmm_ctrl
+        - reg_dpmm_data
+    parameters:
+      - { name : g_sim_flash_model, value: FALSE }
+
+  - peripheral_name: remu_reg
+    subsystem_name : ''
+    slave_port_names:
+        - reg_remu
+
+  - peripheral_name: unb1_board_sens_reg
+    subsystem_name : ''
+    slave_port_names:
+        - reg_unb_sens
+    parameters:
+      - { name : g_sim,       value: FALSE }
+      - { name : g_clk_freq,  value: 125E6 }
+      - { name : g_temp_high, value: 85 }
+
+  # extra peripherals for apertif_unb1_bn_filterbank 
+  - peripheral_name: common_pulse_delay
+    subsystem_name : ''
+    slave_port_names:
+        - reg_common_pulse_delay
+    parameters:
+      - { name : ,       value:  }
+
+  - peripheral_name: bsn_source
+    subsystem_name : ''
+    slave_port_names:
+        - reg_bsn_source
+    parameters:
+      - { name : ,       value:  }    
+
+ - peripheral_name: bsn_scheduler_wg
+    subsystem_name : ''
+    slave_port_names:
+        - reg_bsn_scheduler_wg
+    parameters:
+      - { name : ,       value:  }
+
+  - peripheral_name: adc_quad 
+    subsystem_name : ''
+    slave_port_names:
+        - reg_adc_quad
+    parameters:
+      - { name : ,       value:  }
+
+  - peripheral_name: wg
+    subsystem_name : ''
+    slave_port_names:
+        - reg_wg  # arr: size = 4
+        - ram_wg  # arr: size = 4
+
+    parameters:
+      - { name : ,       value:  }
+
+  - peripheral_name: mon
+    subsystem_name : ''
+    slave_port_names:
+        - reg_mon  # arr: size = 4
+        - ram_mon  # arr: size = 4
+
+    parameters:
+      - { name : ,       value:  }    
+
+  - peripheral_name: commander
+    subsystem_name : ''
+    slave_port_names:
+        - reg_commander  # arr: size = 2
+
+    parameters:
+      - { name : ,       value:  } 
+  
+  - peripheral_name: protocol
+    subsystem_name : ''
+    slave_port_names:
+        - ram_protocol  # arr: size = 2
+
+    parameters:
+      - { name : ,       value:  }
+
+  - peripheral_name: result
+    subsystem_name : ''
+    slave_port_names:
+        - ram_result  # arr: size = 2
+
+    parameters:
+      - { name : ,       value:  }
+
+  - peripheral_name: bsn_scheduler_sp_on
+    subsystem_name : ''
+    slave_port_names:
+        - reg_bsn_scheduler_sp_on
+
+    parameters:
+      - { name : ,       value:  }    
+
+  - peripheral_name: bsn_scheduler_sp_off
+    subsystem_name : ''
+    slave_port_names:
+        - reg_bsn_scheduler_sp_off
+
+    parameters:
+      - { name : ,       value:  }
+
+  - peripheral_name: bf_unit
+    subsystem_name : ''
+    slave_port_names:
+        - ''
+        - ram_st_sst
+        - ram_ss_ss_wide
+        - ''
+
+    parameters:
+      - { name : ,       value:  }
+
+  - peripheral_name: ss_reorder
+    subsystem_name : ''
+    slave_port_names:
+        - ram_ss_reorder_in
+        - ram_ss_reorder_out
+
+    parameters:
+      - { name : ,       value:  }
+
+  - peripheral_name: mesh_diag
+    subsystem_name : ''
+    slave_port_names:
+        - reg_bsn_scheduler_sp_on
+
+    parameters:
+      - { name : ,       value:  }
\ No newline at end of file
diff --git a/tools/oneclick/prestudy/YAML/dp/dp.peripheral.yaml b/tools/oneclick/prestudy/YAML/dp/dp.peripheral.yaml
index 1391b45129769ac82406e3d66ac2e092d77c3e87..8aa3e3b5a94d88dd0c841648de7b28dca1e762af 100644
--- a/tools/oneclick/prestudy/YAML/dp/dp.peripheral.yaml
+++ b/tools/oneclick/prestudy/YAML/dp/dp.peripheral.yaml
@@ -31,6 +31,7 @@ peripherals:
         slave_discription: " "
             
     peripheral_description: "This is the BSN aligner"
+  
   - 
     peripheral_name: dp_fifo_fill
     parameters:
diff --git a/tools/oneclick/prestudy/YAML/epcs/epcs.peripheral.yaml b/tools/oneclick/prestudy/YAML/epcs/epcs.peripheral.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f951107da69529135cc48d8d7abead415867e758
--- /dev/null
+++ b/tools/oneclick/prestudy/YAML/epcs/epcs.peripheral.yaml
@@ -0,0 +1,135 @@
+protocol_name   : args
+protocol_version: 1.0
+protocol_type   : peripheral
+
+hdl_library_name       : epcs
+hdl_library_description: " This is the description for the epcs package "
+
+peripherals:
+ 
+  # epcs_reg
+  - 
+    peripheral_name: epcs_reg
+
+    parameters:
+      - {name: "g_sim_flash_model", value: TRUE} 
+
+    slave_ports:
+      - 
+        # actual hdl name: epcs_reg
+        slave_prefix : EPCS
+        slave_name   : EPCS
+        slave_postfix: REG
+        slave_type   : REG
+        fields:
+          -
+            field_name    : addr
+            width         : 24
+            access_mode   : WO
+            address_offset: 0x0
+            field_description: " address to write to or read from "
+        
+          -
+            field_name    : rden
+            width         : 1
+            access_mode   : WO
+            address_offset: 0x1
+            field_description: " Read enable bit "
+        
+          -
+            field_name    : read_bit
+            width         : 1
+            access_mode   : WO
+            side_effect   : PW
+            address_offset: 0x2
+            field_description: " Read bit "
+
+          -
+            field_name    : write_bit
+            width         : 1
+            access_mode   : WO
+            side_effect   : PW
+            address_offset: 0x3
+            field_description: " Write bit "
+
+          -
+            field_name    : sector_erase
+            width         : 1
+            access_mode   : WO
+            address_offset: 0x4
+            field_description: " Sector erase bit "
+
+          -
+            field_name    : busy
+            width         : 1
+            access_mode   : RO
+            address_offset: 0x5
+            field_description: " busy "
+
+        slave_description:  " Read and write access to flash "
+
+      # actual hdl name: mms_dp_fifo_to_mm
+      - 
+        slave_prefix : EPCS
+        slave_name   : DPMM_CTRL
+        slave_postfix: REG
+        slave_type   : REG
+        fields:
+          -
+            field_name    : ctrl
+            width         : 32
+            access_mode   : RW
+            address_offset: 0x0
+            field_description: "  "
+      
+      -   
+        slave_prefix : EPCS
+        slave_name   : DPMM_DATA
+        slave_postfix: REG
+        slave_type   : REG
+        fields:
+          -
+            field_name    : data
+            width         : 32
+            access_mode   : RW
+            address_offset: 0x0
+            field_description: "  "
+
+      # actual hdl name: mms_dp_fifo_from_mm
+      - 
+        slave_prefix : EPCS
+        slave_name   : MMDP_CTRL
+        slave_postfix: REG
+        slave_type   : REG
+        fields:
+          -
+            field_name    : ctrl
+            width         : 32
+            access_mode   : RW
+            address_offset: 0x0
+            field_description: "  "
+      
+      -  
+        slave_prefix : EPCS
+        slave_name   : MMDP_DATA
+        slave_postfix: REG
+        slave_type   : REG
+        fields:
+          -
+            field_name    : data
+            width         : 32
+            access_mode   : RW
+            address_offset: 0x0
+            field_description: "  "
+    
+    peripheral_description: |
+        "wi  Bits     SE  R/W Name              Default  Description         |REG_EPCS|                      
+        =============================================================================
+        0   [23..0]      WO  addr              0x0      Address to write to/read from
+        1   [0]          WO  rden              0x0      Read enable
+        2   [0]      PW  WE  read              0x0      Read 
+        3   [0]      PW  WE  write             0x0      Write 
+        4   [0]          WO  sector_erase      0x0      Sector erase
+        5   [0]          RO  busy              0x0      Busy
+        ============================================================================="
+        
\ No newline at end of file
diff --git a/tools/oneclick/prestudy/YAML/eth/eth.peripheral.yaml b/tools/oneclick/prestudy/YAML/eth/eth.peripheral.yaml
index 64ed1c7da70b9dc03ec3d22173703821405e93ac..464bf433960280ecbb4f3d7ba5c32d0d1bc7ccac 100644
--- a/tools/oneclick/prestudy/YAML/eth/eth.peripheral.yaml
+++ b/tools/oneclick/prestudy/YAML/eth/eth.peripheral.yaml
@@ -23,9 +23,10 @@ peripherals:
         slave_type   : REG
         fields:
           - 
-            field_name       : status
-            access_mode      : RO
-            address_offset   : 0x0
+            field_name      : status
+            access_mode     : RO
+            address_offset  : 0x0
+            number_of_fields: 1024
             field_description: | 
                 " reg tse "
         slave_description: ""
@@ -37,10 +38,11 @@ peripherals:
         slave_type   : REG    
         fields:
           - 
-            field_name    : status
-            access_mode   : RO
-            address_offset: 0x0
-            field_description : " reg registers "
+            field_name      : status
+            access_mode     : RO
+            address_offset  : 0x0
+            number_of_fields: 11
+            field_description: " reg registers "
         slave_description: " "
       - 
         # actual hdl name: ram
@@ -50,7 +52,7 @@ peripherals:
         slave_type   : RAM
         fields:
           - 
-            field_name: ram
+            field_name      : ram
             number_of_fields: c_eth_ram_nof_words
             field_description: |
                 "Contains the Waveform data for the data-streams to be send"
diff --git a/tools/oneclick/prestudy/YAML/mm_menu.py b/tools/oneclick/prestudy/YAML/mm_menu.py
index fb5c59a3bd351bc245ddf4a2a4c778db20f048a2..36229406ae9019fcc58beadaf2d963eae47c06d9 100755
--- a/tools/oneclick/prestudy/YAML/mm_menu.py
+++ b/tools/oneclick/prestudy/YAML/mm_menu.py
@@ -37,7 +37,8 @@ from py_mm_lib import *
 def main():
     """ main """
     filename = None
-    filename = './demo.system.yaml'
+    filename = './unb1_minimal_sopc.system.yaml'
+    #filename = './demo.system.yaml'
     while True:
         menu_choice = show_menu().lower()
         if menu_choice == 'q':
@@ -86,16 +87,17 @@ def generate_report(filename):
     """ generate report (pdf) for loaded file. """
     try:
         config = yaml.load(open(filename, "r"))
-        name = list(config.keys())[0]
-        settings = config[name]
-        documentation = Documentation(name)
         if '.system.yaml' in filename:
+            name = config['system_name']
+            documentation = Documentation(name)
             system = System(filename)
-            documentation.add(name, system)
+            documentation.add(config['system_name'], system)
         elif '.peripheral.yaml' in filename:
+            name = config['hdl_library_name']
+            documentation = Documentation(name)
             peripheral = Peripheral(filename)
             peripheral.eval_peripheral()
-            documentation.add(name, peripheral)
+            documentation.add(config['hdl_library_name'], peripheral)
         documentation.generate_pdf()
     except IOError:
         logger.error("config file '{}' does not exist".format(filename))
@@ -125,7 +127,7 @@ def generate_rom_system_info(filename):
     """ generate rom_system reg and txt file """
     rom_system = RomSystem()
     rom_system.read_system(filename)
-    rom_system.read_qsys_reg(filename="qsys.reg")
+    rom_system.read_qsys_reg(filename="unb1_minimal_sopc.build.reg")
     rom_system.map_memory(use_qsys_base_address=True)
     rom_system.generate_reg_file(write_file=True)  # make ROM_SYSTEM_INFO old style
     rom_system.generate_mif_file(write_file=True)  # make ROM_SYSTEM_INFO old style
diff --git a/tools/oneclick/prestudy/YAML/py_mm_lib/documentation.py b/tools/oneclick/prestudy/YAML/py_mm_lib/documentation.py
index 00ad8b3b283264fbd7def25be1db4c7f1632d1d2..274a32769d06f91003a38af2b806f68c24b1600f 100755
--- a/tools/oneclick/prestudy/YAML/py_mm_lib/documentation.py
+++ b/tools/oneclick/prestudy/YAML/py_mm_lib/documentation.py
@@ -162,10 +162,21 @@ class Documentation(object):
         n_spaces = 0
         _line = []
         text = []
-        if line[0] == '"':
-            line = line[1:]
-        if line[-1] == '"':
-            line = line[:-1]
+        line = line.strip()
+        #print('1 ', line)
+        
+        #if line.startswith(('"', "'")):
+        #    if len(line) == 1:
+        #        return None
+        #    line = line[1:]
+        ##print('2 ', line)
+        #
+        #if line.endswith(('"', "'")):
+        #    if len(line) == 1:
+        #        return None
+        #    line = line[:-1]
+        print('3 ', line)
+        
         for ch_nr, ch in enumerate(line):
             if ch == ' ':
                 n_spaces += 1
diff --git a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/constants.py b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/constants.py
index dc279e6d6cda20ee1d48a81776400842f0d96691..3f49715f075d3d984b8cb08bb1b3c6f526f02bfc 100644
--- a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/constants.py
+++ b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/constants.py
@@ -8,7 +8,7 @@ from common import c_word_w
 
 
 VALID_ACCESS_MODES = ['RO', 'WO', 'RW', 'FR', 'FW']
-VALID_SIDE_EFFECTS = ['CLR', 'PR', 'WR']
+VALID_SIDE_EFFECTS = ['CLR', 'PR', 'PW']
 VALID_SLAVE_TYPES  = ['REG', 'RAM', 'FIFO']
 VALID_RADIXS       = ['UNSIGNED', 'SIGNED', 'HEXADECIMAL']
 
diff --git a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/register.py b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/register.py
index 3dc0dbffdf50295db9918fff2b60f92489c92e69..36812b7411c23b87c99d76b8c650827913663769 100644
--- a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/register.py
+++ b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/register.py
@@ -76,8 +76,8 @@ class Register(BaseObject):
             return
         n_words = 0
         for field in self.fields.values():
-            n_words += ceil_pow2(int(ceil(float(field.width()) / c_word_w)) * field.number_of_fields())
-            #logger.debug("n_words=%d", n_words)
+            n_words += int(ceil_pow2(int(ceil(float(field.width()) / c_word_w)) * field.number_of_fields()))
+            logger.debug("n_words=%d", n_words)
         n_words = ceil_pow2(n_words)  # round up to power of 2
         self.set_kv('address_length', n_words)
 
diff --git a/tools/oneclick/prestudy/YAML/py_mm_lib/rom_system.py b/tools/oneclick/prestudy/YAML/py_mm_lib/rom_system.py
index 580dea5338fd71816a2bc252ab2eb1bbcab85957..36546c9af8ffaad8e73f26d7b8daba026064428e 100644
--- a/tools/oneclick/prestudy/YAML/py_mm_lib/rom_system.py
+++ b/tools/oneclick/prestudy/YAML/py_mm_lib/rom_system.py
@@ -46,10 +46,10 @@ class MemoryMapper(object):
     2) add biggest sizes first.
     """
     def __init__(self):
-        self.map = []  # [start_address, stop_address, size, name, nof_instances]
+        self.map = []  # [start_address, stop_address, size, name, nof_instances, hide_in_reg_file]
         self.names = []  # already used names
 
-    def add(self, name, size, nof_instances, base_address=None):
+    def add(self, name, size, nof_instances, base_address=None, hide_in_reg_file=False):
         """ add memory segment to the memory-map.
         name: name of register entry
         size: size in words of 1 isinstance
@@ -65,15 +65,26 @@ class MemoryMapper(object):
 
         if base_address is not None:
             end_address = base_address + (size * nof_instances)
-            self.map.append([base_address, end_address, size * cm.c_word_sz, name, nof_instances])
-            logger.debug("add(): %08x, %08x, %d, %s, %d",
-                         base_address, end_address, (size * cm.c_word_sz), name, nof_instances)
+            self.map.append({'name': name, 
+                             'base_address': base_address, 
+                             'end_address': end_address, 
+                             'size': size * cm.c_word_sz, 
+                             'nof_instances': nof_instances, 
+                             'hide_in_reg_file': hide_in_reg_file})
+            
+            logger.debug("add(): %08x, %08x, %d, %s, %d, %s", 
+                         base_address, end_address, (size * cm.c_word_sz), name, nof_instances, str(hide_in_reg_file))
         else:
             _base_address = self._find_start_addr(size*nof_instances)
 
-            self.map.append([_base_address, _base_address+(size*nof_instances), size * cm.c_word_sz, name, nof_instances])
-            logger.debug("add(): %08x, %08x, %d, %s, %d",
-                         _base_address, _base_address+(size*nof_instances), size * cm.c_word_sz, name, nof_instances)
+            self.map.append({'name': name,
+                             'base_address': _base_address, 
+                             'end_address': _base_address+(size*nof_instances), 
+                             'size': size * cm.c_word_sz, 
+                             'nof_instances': nof_instances, 
+                             'hide_in_reg_file': hide_in_reg_file})
+            logger.debug("add(): %08x, %08x, %d, %s, %d, %s",
+                         _base_address, _base_address+(size*nof_instances), size * cm.c_word_sz, name, nof_instances, str(hide_in_reg_file))
 
     def _find_start_addr(self, size):
         """ look for the next address where the size (in bytes) will fit """
@@ -100,11 +111,29 @@ class MemoryMapper(object):
         #logger.debug("end of map, returm {:x}".format(start_addr))
         return start_addr
 
-    def get_memory_map(self):
-        """ return sorted memory map """
-        self.map.sort()
-        return self.map
+    def make_sorted_list(self, key):
+        sorted_list = []
+        for reg in self.map:
+            sorted_list.append(reg[key])
+        sorted_list.sort()
+        return sorted_list 
 
+    def get_memory_map(self, sort_on='name'):
+        """ return sorted memory map on key
+        key can be: name, base_address, size
+        """
+        map = []
+        for key in self.make_sorted_list(sort_on):
+            for reg in self.map:
+                if reg[sort_on] == key:
+                    map.append([reg['name'],
+                                reg['base_address'], 
+                                reg['end_address'], 
+                                reg['size'], 
+                                reg['nof_instances'], 
+                                reg['hide_in_reg_file']])
+                    break
+        return map
 
 class RomSystem(object):
     """ RomSystem class """
@@ -112,9 +141,10 @@ class RomSystem(object):
         self.filename        = None
         self.system          = None
         self.qsys_reg        = {}  # read in rom_system_info from old system key=name, val=[base, span]
-        self.address_list    = []
+        #self.address_list    = []
         self.rom_system_info = []
         self.word_size       = 32  # number of bits
+        self.memory_mapper = MemoryMapper()
 
     def read_system(self, filename):
         """ read system configuration file """
@@ -126,7 +156,7 @@ class RomSystem(object):
         return False
 
     def read_qsys_reg(self, filename=None):
-        """ read '[system]_qsys.reg' file and get register order.
+        """ read *.reg file and get register order.
         file format:
         string (1 row) ending with null character, sorted on reg name.
         repeated 'name address span' information, address is word-addressing, span in bytes.
@@ -154,8 +184,6 @@ class RomSystem(object):
     def map_memory(self, use_qsys_base_address=False):
         """ calculate register offsets """
 
-        memory_mapper = MemoryMapper()
-
         peripherals = self.system.peripherals
 
         #print("================")
@@ -163,17 +191,28 @@ class RomSystem(object):
 
         peripheral = peripherals['reg_system_info']
         #print(peripheral.registers)
-        base_address    = int(peripheral.parameter('lock_base_address'))
-        size            = int(peripheral.get_slave('reg_system_info').fields['field_reg_info'].number_of_fields())  # TODO: if not available calculate real size
-        memory_mapper.add(name="REG_SYSTEM_INFO", size=size, nof_instances=1, base_address=base_address)
+        base_address = int(peripheral.parameter('lock_base_address'))
+        size         = cm.ceil_pow2(int(peripheral.get_slave('reg_system_info').fields['field_reg_info'].number_of_fields()))  # TODO: if not available calculate real size
+        name = peripheral.get_slave('reg_system_info').user_defined_name()
+        if name  is None:
+            name = "reg_system_info"     
+        self.memory_mapper.add(name=name, size=size, nof_instances=1, base_address=base_address, hide_in_reg_file=True)
 
         peripheral = peripherals['rom_system_info']
         base_address    = int(peripheral.parameter('lock_base_address'))
-        size            = int(peripheral.get_slave('rom_system_info').fields['field_rom_info'].number_of_fields())  # TODO: if not available calculate real size
-        memory_mapper.add(name="ROM_SYSTEM_INFO", size=size, nof_instances=1, base_address=base_address)
+        size            = cm.ceil_pow2(int(peripheral.get_slave('rom_system_info').fields['field_rom_info'].number_of_fields()))  # TODO: if not available calculate real size
+        name = peripheral.get_slave('rom_system_info').user_defined_name()
+        if name  is None:
+            name = "rom_system_info"     
+        self.memory_mapper.add(name=name, size=size, nof_instances=1, base_address=base_address, hide_in_reg_file=True)
 
         size_info = []
         for peripheral in peripherals.values():
+            print(peripheral.component_name())
+            if peripheral.component_name() in ('reg_system_info', 'rom_system_info'):
+                print('skip')
+                continue
+            
             nof_peri_inst = peripheral.number_of_peripherals()
             for rkey, rval in peripheral.rams.items():
                 n_addresses = rval.get_kv('address_length')
@@ -184,7 +223,9 @@ class RomSystem(object):
                 else:
                     _name = rval.name()
                 #print("%s %s" % (str(rkey), str(n_addresses)))
-                size_info.append([n_addresses, nof_inst, _name])
+                n_addresses = max(n_addresses, 2)
+                print("add")
+                size_info.append([n_addresses, nof_inst, _name, False])
 
             for rkey, rval in peripheral.registers.items():
                 n_addresses = rval.get_kv('address_length')
@@ -194,14 +235,14 @@ class RomSystem(object):
                     _name = rval.user_defined_name()
                 else:
                     _name = rval.name()
-                if _name.upper() in ('.REG_SYSTEM_INFO.', '.ROM_SYSTEM_INFO.', 'REG_SYSTEM_INFO', 'ROM_SYSTEM_INFO'):
-                    continue
                 #print("%s %s" % (str(rkey), str(n_addresses * n_words)))
                 #size_info.append([(n_addresses * n_words), nof_inst, _name])
-                size_info.append([n_addresses, nof_inst, _name])
+                n_addresses = max(n_addresses, 2)
+                print("add")
+                size_info.append([n_addresses, nof_inst, _name, False])
 
         size_info.sort(reverse=True)
-        for size, nof_inst, name in size_info:
+        for size, nof_inst, name, hide_in_reg_file in size_info:
             if use_qsys_base_address:
                 _name = name.split('.')
 
@@ -236,9 +277,13 @@ class RomSystem(object):
             else:
                 base_address = None
             #print(name, base_address, qsys_size, size)
-            memory_mapper.add(name=name, size=size, nof_instances=nof_inst, base_address=base_address)
+            self.memory_mapper.add(name=name, 
+                              size=size, 
+                              nof_instances=nof_inst, 
+                              base_address=base_address, 
+                              hide_in_reg_file=hide_in_reg_file)
 
-        self.address_list = memory_mapper.get_memory_map()
+        #self.address_list = memory_mapper.get_memory_map()
 
     def generate_reg_file(self, write_file=False, version=None):
         """ generate qsys '*.reg' file
@@ -252,7 +297,10 @@ class RomSystem(object):
             logger.debug("generate reg string the old way without version number")
 
         # [start_address, stop_address, size, name, nof_instances]
-        for start_address, stop_address, size, name, nof_instances in self.address_list:
+        for reg in self.memory_mapper.get_memory_map('name'):
+            name, start_address, stop_address, size, nof_instances, hide_in_reg_file = reg
+            if hide_in_reg_file:
+                continue
             # logger.debug("i=%s", str(i))
             if version is None:
                 self.rom_system_info.append("{0} {1:x} {2}".format(name.upper(),
@@ -263,12 +311,13 @@ class RomSystem(object):
                                                                        start_address,
                                                                        size,  # size in bytes
                                                                        nof_instances))
-        rom_system_info_str = ' '.join(self.rom_system_info) + '\0'
+        rom_system_info_str = ' '.join(self.rom_system_info) + '\0\0'
+
         if write_file:
             if version is None:
-                filename = "{}_qsys.reg".format(self.system.system_name)
+                filename = "{}.reg".format(self.system.system_name)
             else:
-                filename = "{}_qsys_V{}.reg".format(self.system.system_name, version)
+                filename = "{}_V{}.reg".format(self.system.system_name, version)
             logger.debug("Write 'reg' file '%s'", filename)
             logger.debug("ROM_SYSTEM_INFO= %s", rom_system_info_str)
             with open(filename, 'w') as regfile:
@@ -300,9 +349,9 @@ class RomSystem(object):
 
         if write_file:
             if version is None:
-                filename = "{}_qsys.mif".format(self.system.system_name)
+                filename = "{}.mif".format(self.system.system_name)
             else:
-                filename = "{}_qsys_V{}.mif".format(self.system.system_name, version)
+                filename = "{}_V{}.mif".format(self.system.system_name, version)
             logger.debug("Write 'mif' file '%s'", filename)
 
             with open(filename, 'w') as miffile:
@@ -316,13 +365,14 @@ class RomSystem(object):
         txt.append("address        bytes    n_instances    peripheral_name")
         txt.append("-------        -------  -----------    ---------------")
         # [start_address, stop_address, size, name, nof_instances]
-        for start_address, stop_address, size, name, nof_instances in sorted(self.address_list):
+        for reg in self.memory_mapper.get_memory_map('base_address'):
+            name, start_address, stop_address, size, nof_instances, hide_in_reg_file = reg
             txt.append("0x{:08x}  {:10d}  {:11d}    {:35s}".format(start_address, size, nof_instances, name.upper()))
 
         for line in txt:
             logger.debug(line)
 
-        filename = "{}_qsys.txt".format(self.system.system_name)
+        filename = "{}.txt".format(self.system.system_name)
         with open(filename, 'w') as f:
             f.write('\n'.join(txt))
 
diff --git a/tools/oneclick/prestudy/YAML/remu/remu.peripheral.yaml b/tools/oneclick/prestudy/YAML/remu/remu.peripheral.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..fff5d12963d7522571c257ffc2bb7cbd7520b4c2
--- /dev/null
+++ b/tools/oneclick/prestudy/YAML/remu/remu.peripheral.yaml
@@ -0,0 +1,90 @@
+protocol_name   : args
+protocol_version: 1.0
+protocol_type   : peripheral
+
+hdl_library_name       : remu
+hdl_library_description: " This is the description for the remu package "
+
+peripherals:
+ 
+  # peripheral, remu_reg
+  - 
+    peripheral_name: remu_reg
+
+    parameters:
+      - { name: g_data_w, value: 24 }
+
+    slave_ports:
+      - 
+        # actual hdl name: reg_remu
+        slave_prefix : WORK
+        slave_name   : REMU
+        slave_postfix: REG
+        slave_type   : REG
+        fields:
+          -
+            field_name    : reconfigure_key
+            width         : c_word_w
+            access_mode   : WO
+            address_offset: 0x0
+            field_description: " reconfigure key for safety "
+        
+          -
+            field_name    : param
+            width         : 3
+            access_mode   : WO
+            address_offset: 0x1
+            radix         : unsigned 
+            field_description: " "
+        
+          -
+            field_name    : read_param
+            width         : 1
+            access_mode   : WO
+            side_effect   : PW
+            address_offset: 0x2
+            field_description: " read_param "
+
+          -
+            field_name    : write_param
+            width         : 1
+            access_mode   : WO
+            side_effect   : PW
+            address_offset: 0x3
+            field_description: " write_param "
+
+          -
+            field_name    : data_out
+            width         : g_data_w
+            access_mode   : RO
+            address_offset: 0x4
+            field_description: " data_out "
+
+          -
+            field_name    : data_in
+            width         : g_data_w
+            access_mode   : WO
+            address_offset: 0x5
+            field_description: " data_in "
+
+          -
+            field_name    : busy
+            width         : 1
+            access_mode   : RO
+            address_offset: 0x6
+            field_description: " busy "
+
+        slave_description:  " Remote Upgrade "
+    
+    peripheral_description: |
+        "wi  Bits    R/W  SE  Name              Default  Description             |REG_EPCS|                      
+         =============================================================================
+         0   [31..0] WO       reconfigure_key   0x0
+         1   [2..0]  WO       param
+         2   [0]     WO   PW  read_param
+         3   [0]     WO   PW  write_param 
+         4   [23..0] RO       data_out
+         5   [23..0] WO       data_in
+         6   [0]     RO       busy
+         =============================================================================
+        "
diff --git a/tools/oneclick/prestudy/YAML/unb1_board/unb1_board.peripheral.yaml b/tools/oneclick/prestudy/YAML/unb1_board/unb1_board.peripheral.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4139c672126c2e12e69a6938594d3edb90a5e4e0
--- /dev/null
+++ b/tools/oneclick/prestudy/YAML/unb1_board/unb1_board.peripheral.yaml
@@ -0,0 +1,139 @@
+protocol_name   : args
+protocol_version: 1.0
+protocol_type   : peripheral
+
+hdl_library_name       : unb1_board
+hdl_library_description: " This is the description for the unb1_board package "
+
+peripherals:
+  # peripheral, unb1_board_wdi_reg
+  - 
+    peripheral_name: ctrl_unb1_board
+
+    slave_ports:
+      - 
+        # actual hdl name: unb1_board_wdi_reg
+        slave_prefix : UNB1_BOARD
+        slave_name   : PIO_WDI
+        slave_postfix: REG
+        slave_type   : REG
+        fields:
+          -
+            field_name      : nios_reset
+            access_mode     : WO
+            address_offset  : 0x0
+            number_of_fields: 4
+            field_description: " Reset done by nios "
+         
+        slave_description:  "Reset register, for nios "
+    
+    peripheral_description: " "
+  
+  # peripheral, unb1_board_wdi_reg
+  - 
+    peripheral_name: unb1_board_wdi_reg
+
+    slave_ports:
+      - 
+        # actual hdl name: unb1_board_wdi_reg
+        slave_prefix : UNB1_BOARD
+        slave_name   : WDI
+        slave_postfix: REG
+        slave_type   : REG
+        fields:
+          -
+            field_name    : reset_word
+            access_mode   : WO
+            address_offset: 0x0
+            field_description: " Only the value 0xB007FAC7 'Boot factory' will result in a reset "
+         
+        slave_description:  "Reset register, if the right value is provided the factory image will be reloaded "
+    
+    peripheral_description: " "
+  
+  # periheral, unb1_board_sens
+  - 
+    peripheral_name: unb1_board_sens_reg
+
+    parameters:
+      - { name: g_sim,       value: FALSE }
+      - { name: g_clk_freq,  value: c_unb1_board_mm_clk_freq_125M }
+      - { name: g_temp_high, value: 85 }
+
+    slave_ports:
+      - 
+        # actual hdl name: reg_unb1_sens
+        slave_prefix : UNB1_BOARD
+        slave_name   : SENS
+        slave_postfix: REG
+        slave_type   : REG
+        fields:
+          -
+            field_name    : sens_data
+            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
+            width         : 1
+            access_mode   : RO
+            address_offset: 0x4
+            radix         : unsigned 
+            field_description: ""
+        
+          -
+            field_name    : temp_high
+            width         : 7
+            address_offset: 0x5
+            reset_value   : g_temp_high
+            software_value: g_temp_high
+            field_description: ""
+
+        slave_description:  " "
+    
+    peripheral_description: |
+        "
+        +-----------------------------------------------------------------------------+
+        |31   (byte3)   24|23   (byte2)   16|15   (byte1)    8|7    (byte0)    0|  wi |
+        |-----------------------------------------------------------------------|-----|
+        |                xxx                     fpga_temp   = sens_data[0][7:0]|  0  |
+        |-----------------------------------------------------------------------|-----|
+        |                xxx                     eth_temp    = sens_data[1][7:0]|  1  |
+        |-----------------------------------------------------------------------|-----|
+        |                xxx               hot_swap_v_sense  = sens_data[2][7:0]|  2  |
+        |-----------------------------------------------------------------------|-----|
+        |                xxx               hot_swap_v_source = sens_data[3][7:0]|  3  |
+        |-----------------------------------------------------------------------|-----|
+        |                xxx                                         sens_err[0]|  4  |
+        |-----------------------------------------------------------------------|-----|
+        |                xxx                                      temp_high[6:0]|  5  |
+        +-----------------------------------------------------------------------------+
+        * The fpga_temp and eth_temp are in degrees (two's complement)
+        * The hot swap voltages depend on:
+            . From i2c_dev_ltc4260_pkg:
+                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:
+            1 = UniBoard ETH PHY temperature     = TInt8(eth_temp)
+            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"
+    
diff --git a/tools/oneclick/prestudy/YAML/unb1_minimal_sopc.system.yaml b/tools/oneclick/prestudy/YAML/unb1_minimal_sopc.system.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..cc18de5fe2dff569bc1312d77414149f673e85b1
--- /dev/null
+++ b/tools/oneclick/prestudy/YAML/unb1_minimal_sopc.system.yaml
@@ -0,0 +1,68 @@
+protocol_name   : args
+protocol_version: 1.0
+protocol_type   : system
+
+hdl_library_name: unb1_minimal_sopc
+
+system_name       : unb1_minimal_sopc
+system_description: |
+        "unb1_minimal system for sopc"
+
+peripherals:
+  - peripheral_name: rom_system_info
+    subsystem_name : ''
+    slave_port_names:
+        - rom_system_info
+    
+  - peripheral_name: reg_system_info
+  
+    subsystem_name : ''
+    slave_port_names:
+        - pio_system_info
+
+  - peripheral_name: ctrl_unb1_board
+    subsystem_name : ''
+    slave_port_names:
+        - pio_wdi
+
+  - peripheral_name: unb1_board_wdi_reg
+    subsystem_name : ''
+    slave_port_names:
+        - reg_wdi
+  
+  - peripheral_name: eth1g
+    subsystem_name : ''
+    slave_port_names:
+        - avs_eth_0_mms_tse
+        - avs_eth_0_mms_reg
+        - avs_eth_0_mms_ram
+    
+  - peripheral_name: ppsh
+    subsystem_name : ''
+    slave_port_names:
+        - pio_pps
+
+  - peripheral_name: epcs_reg
+    subsystem_name : ''
+    slave_port_names:
+        - reg_epcs
+        - reg_mmdp_ctrl
+        - reg_mmdp_data
+        - reg_dpmm_ctrl
+        - reg_dpmm_data
+    parameters:
+      - { name : g_sim_flash_model, value: FALSE }
+
+  - peripheral_name: remu_reg
+    subsystem_name : ''
+    slave_port_names:
+        - reg_remu
+
+  - peripheral_name: unb1_board_sens_reg
+    subsystem_name : ''
+    slave_port_names:
+        - reg_unb_sens
+    parameters:
+      - { name : g_sim,       value: FALSE }
+      - { name : g_clk_freq,  value: 125E6 }
+      - { name : g_temp_high, value: 85 }
diff --git a/tools/oneclick/prestudy/YAML/work/system_info.peripheral.yaml b/tools/oneclick/prestudy/YAML/work/system_info.peripheral.yaml
index dc30116ca3bc74b18bcd9266e538e46eb02a14d8..cabb50301ace849c01ccc91e506bf6d89a985963 100644
--- a/tools/oneclick/prestudy/YAML/work/system_info.peripheral.yaml
+++ b/tools/oneclick/prestudy/YAML/work/system_info.peripheral.yaml
@@ -23,7 +23,7 @@ peripherals:
             field_name    : field_rom_info
             access_mode   : RO
             address_offset: 0x0
-            number_of_fields: 4096
+            number_of_fields: 1024
             field_description: |
                 "address place for rom_system_info"
         slave_description: " rom_info  "
@@ -47,7 +47,7 @@ peripherals:
             field_name    : field_reg_info
             access_mode   : RO
             address_offset: 0x0
-            number_of_fields: 128
+            number_of_fields: 31
             field_description: |
                 "address place for reg_system_info"
         slave_description: " reg_info "