From 9a1b61bab5fadcba307507e1185154e1e0f36eda Mon Sep 17 00:00:00 2001 From: Pieter Donker <donker@astron.nl> Date: Fri, 23 Jun 2017 08:55:56 +0000 Subject: [PATCH] Task #893: backup and now round up to power of 2 --- .../prestudy/YAML/py_mm_lib/peripheral_lib/field.py | 6 +++--- .../prestudy/YAML/py_mm_lib/peripheral_lib/register.py | 3 ++- tools/oneclick/prestudy/YAML/py_mm_lib/rom_system.py | 9 +-------- 3 files changed, 6 insertions(+), 12 deletions(-) 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 7d8b5f013e..2ad56dabbe 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 dfb59b80f4..5edf781bcd 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 af8ac70c07..533ca92bd6 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: -- GitLab