Skip to content

Commit 13a2370

Browse files
author
Jean-François Nguyen
committed
memory: fix address range overlap with zero-sized resources.
1 parent 4a6a948 commit 13a2370

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

nmigen_soc/memory.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ def _compute_addr_range(self, addr, size, step=1, *, alignment, extend):
171171
if not isinstance(size, int) or size < 0:
172172
raise ValueError("Size must be a non-negative integer, not {!r}"
173173
.format(size))
174-
size = self._align_up(size, alignment)
174+
size = self._align_up(max(size, 1), alignment)
175175

176176
if addr > (1 << self.addr_width) or addr + size > (1 << self.addr_width):
177177
if extend:

nmigen_soc/test/test_memory.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,11 @@ def test_add_resource_extend(self):
104104
(0x10000, 0x10001))
105105
self.assertEqual(memory_map.addr_width, 17)
106106

107+
def test_add_resource_size_zero(self):
108+
memory_map = MemoryMap(addr_width=1, data_width=8)
109+
self.assertEqual(memory_map.add_resource("a", size=0), (0, 1))
110+
self.assertEqual(memory_map.add_resource("b", size=0), (1, 2))
111+
107112
def test_add_resource_wrong_address(self):
108113
memory_map = MemoryMap(addr_width=16, data_width=8)
109114
with self.assertRaisesRegex(ValueError,

0 commit comments

Comments
 (0)