From 822aeea7b6c2011869b05f15cb206b9742efdfa3 Mon Sep 17 00:00:00 2001 From: Speedy939 Date: Thu, 29 Oct 2026 17:07:19 +0100 Subject: [PATCH 1/2] Modified the res() function --- pylab_ml/misc/registermaster.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pylab_ml/misc/registermaster.py b/pylab_ml/misc/registermaster.py index 179f314..26c74ac 100644 --- a/pylab_ml/misc/registermaster.py +++ b/pylab_ml/misc/registermaster.py @@ -972,8 +972,13 @@ def res(self): The reset value of the register if all bit-slices have a defined reset value, or a string indicating that the reset value is not defined if any bit-slice does not have a defined reset value. """ + valres = 0 for name, slice in self._slices.items(): - valres = slice["res"] + lsb = slice["lsb"] + res = slice["res"] + if res == 'x': + return "Reset value not defined" + valres |= res << lsb return valres def _read(self, protocol=None): From 5a89da62ed7d1785862ab6ed4e026bb090cd28a2 Mon Sep 17 00:00:00 2001 From: Speedy939 Date: Fri, 30 Oct 2026 11:11:51 +0100 Subject: [PATCH 2/2] Worked on comments in case 'x' is present in a bit slice --- pylab_ml/misc/registermaster.py | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/pylab_ml/misc/registermaster.py b/pylab_ml/misc/registermaster.py index 26c74ac..b8dc79f 100644 --- a/pylab_ml/misc/registermaster.py +++ b/pylab_ml/misc/registermaster.py @@ -973,12 +973,31 @@ def res(self): or a string indicating that the reset value is not defined if any bit-slice does not have a defined reset value. """ valres = 0 - for name, slice in self._slices.items(): - lsb = slice["lsb"] - res = slice["res"] - if res == 'x': - return "Reset value not defined" - valres |= res << lsb + has_undefined = False + undefined_bits = [] + max_bit = 0 + + for name, slice_info in self._slices.items(): + lsb = slice_info["lsb"] + res = slice_info["res"] + + width = slice_info['msb'] - lsb + 1 + max_bit = max(max_bit, lsb + width - 1) + + if res in ('x', '', None): + has_undefined = True + undefined_bits.extend(range(lsb, lsb + width)) + else: + valres |= (int(res) << lsb) + + if has_undefined: + bin_str = bin(valres)[2:].zfill(max_bit + 1) + bit_list = list(reversed(bin_str)) + for bit_idx in undefined_bits: + if bit_idx < len(bit_list): + bit_list[bit_idx] = 'x' + return "0b" + "".join(reversed(bit_list)) + return valres def _read(self, protocol=None):