Skip to content

Commit f23dcc8

Browse files
author
Jean-François Nguyen
committed
memory: fix MemoryMap window patterns.
1 parent 9838dcc commit f23dcc8

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

nmigen_soc/memory.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -385,9 +385,12 @@ def window_patterns(self):
385385
it is always 1.
386386
"""
387387
for window, window_range in self._windows.items():
388-
pattern = "{:0{}b}{}".format(window_range.start >> window.addr_width,
389-
self.addr_width - window.addr_width,
390-
"-" * window.addr_width)
388+
const_bits = self.addr_width - window.addr_width
389+
if const_bits > 0:
390+
const_pat = "{:0{}b}".format(window_range.start >> window.addr_width, const_bits)
391+
else:
392+
const_pat = ""
393+
pattern = "{}{}".format(const_pat, "-" * window.addr_width)
391394
yield window, (pattern, window_range.step)
392395

393396
@staticmethod

nmigen_soc/test/test_memory.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,14 @@ def test_iter_window_patterns(self):
261261
(window_2, ("0001------------", 1)),
262262
])
263263

264+
def test_iter_window_patterns_covered(self):
265+
memory_map = MemoryMap(addr_width=16, data_width=8)
266+
window = MemoryMap(addr_width=16, data_width=8)
267+
memory_map.add_window(window)
268+
self.assertEqual(list(memory_map.window_patterns()), [
269+
(window, ("----------------", 1)),
270+
])
271+
264272
def test_align_to(self):
265273
memory_map = MemoryMap(addr_width=16, data_width=8)
266274
self.assertEqual(memory_map.add_resource("a", size=1), (0, 1))

0 commit comments

Comments
 (0)