diff --git a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral.py b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral.py
index 4409dcc785f1dd29f7eb88f9bfe23a1a5ea69f19..0cf7fcfb31707c081640e9eec58d576ee304d877 100755
--- a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral.py
+++ b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral.py
@@ -287,8 +287,9 @@ class Peripheral(BaseObject):
             if isinstance(result, float):
                 result = int(result)
         except NameError:
-            result = _val
-        logger.debug("_eval(%s) returns eval(%s) = %s", str(val), _val, str(result))
+        q
+        q    result = _val
+        logger.debug("  _eval(%s) returns eval(%s) = %s", str(val), _val, str(result))
         return result
 
     def add_parameter(self, name, value):
@@ -324,6 +325,7 @@ class Peripheral(BaseObject):
         #  'address_offset', 'reset_value', 'software_value', 'radix', 'field_description']
 
         for field in fields.values():
+            logger.debug("eval field %s", field.name())
             field.width(val=self._eval(field.width()))
             field.bit_offset(val=self._eval(field.bit_offset()))
             field.access_mode(val=self._eval(field.access_mode()))
diff --git a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/ram.py b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/ram.py
index a8f10b42f06436a47243f3f5cd07e7ddb1f3c504..6e18c684f7d216fc9d743954941858cd497ef958 100644
--- a/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/ram.py
+++ b/tools/oneclick/prestudy/YAML/py_mm_lib/peripheral_lib/ram.py
@@ -69,9 +69,9 @@ class RAM(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()
-            logger.debug("n_words=%d", n_words)
-        n_words = 2**ceil_log2(n_words)
+            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)
         self.set_kv('address_length', n_words)
 
     def address_length(self, val=None):   
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 5edf781bcd7ecb1da28c2ac693af70c68450a446..3dc0dbffdf50295db9918fff2b60f92489c92e69 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
@@ -77,7 +77,7 @@ class Register(BaseObject):
         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)
+            #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 533ca92bd6706132fe5feefe0d4ba5e957a80b1d..580dea5338fd71816a2bc252ab2eb1bbcab85957 100644
--- a/tools/oneclick/prestudy/YAML/py_mm_lib/rom_system.py
+++ b/tools/oneclick/prestudy/YAML/py_mm_lib/rom_system.py
@@ -189,7 +189,7 @@ class RomSystem(object):
             for rkey, rval in peripheral.registers.items():
                 n_addresses = rval.get_kv('address_length')
                 
-                nof_inst = rval.number_of_slaves() * peripheral.number_of_peripherals() * len(rval.fields)
+                nof_inst = rval.number_of_slaves() * peripheral.number_of_peripherals()
                 if rval.user_defined_name() is not None:
                     _name = rval.user_defined_name()
                 else: