diff --git a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/field.py b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/field.py
index 7d8b5f013efd64d99c47f92bae6397ffd153e266..2ad56dabbe0cd718028044440855547230a1994c 100644
--- a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/field.py
+++ b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/field.py
@@ -38,15 +38,15 @@ class Field(BaseObject):
     def __init__(self, name, settings=None):
         super().__init__()
         self.name(name)
-        self._valid_keys = ['number_of_fields', 'width', 'bit_offset', 'access_mode', 'side_effect', 'address_offset',
+        self._valid_keys = ['width', 'bit_offset', 'access_mode', 'side_effect', 'address_offset', 'number_of_fields',
                             'reset_value', 'software_value', 'radix', 'field_description']
 
-        self._args.update({'number_of_fields' : DEFAULT_NUMBER_OF_FIELDS,
-                           'width'            : DEFAULT_WIDTH,
+        self._args.update({'width'            : DEFAULT_WIDTH,
                            'bit_offset'       : DEFAULT_BIT_OFFSET,
                            'access_mode'      : DEFAULT_ACCESS_MODE,
                            'side_effect'      : DEFAULT_SIDE_EFFECT,
                            'address_offset'   : DEFAULT_ADDRESS_OFFSET,
+                           'number_of_fields' : DEFAULT_NUMBER_OF_FIELDS,
                            'reset_value'      : RESET_VALUE,
                            'software_value'   : DEFAULT_SOFTWARE_VALUE,
                            'radix'            : DEFAULT_RADIX,
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 dfb59b80f42ac277f8711d7e2de2aefb911c328b..5edf781bcd7ecb1da28c2ac693af70c68450a446 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,7 +76,8 @@ class Register(BaseObject):
             return
         n_words = 0
         for field in self.fields.values():
-            n_words += int(ceil(float(field.width()) / c_word_w)) * field.number_of_fields()
+            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 = 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 af8ac70c0792746d8056e16f85bc7f71cd8fc964..533ca92bd6706132fe5feefe0d4ba5e957a80b1d 100644
--- a/tools/oneclick/prestudy/YAML/py_mm_lib/rom_system.py
+++ b/tools/oneclick/prestudy/YAML/py_mm_lib/rom_system.py
@@ -189,14 +189,7 @@ class RomSystem(object):
             for rkey, rval in peripheral.registers.items():
                 n_addresses = rval.get_kv('address_length')
                 
-                #n_addresses = 0
-                #n_words     = 0
-                #for fkey, fval in rval.fields.items():
-                #    n_words     = max(n_words, int(ceil(float(fval.width()) / float(self.word_size))))
-                #    n_addresses = max(n_addresses, fval.address_offset())
-#
-                #n_addresses += 1
-                nof_inst = rval.number_of_slaves() * peripheral.number_of_peripherals()
+                nof_inst = rval.number_of_slaves() * peripheral.number_of_peripherals() * len(rval.fields)
                 if rval.user_defined_name() is not None:
                     _name = rval.user_defined_name()
                 else: