interconnect/csr_bus/SRAM: add mem_size check

Memory size is limited to 512 bytes:
- CSR region size is 0x800 (4096)
- default csr_data_width is 8
maximum size = 4096/8 = 512 bytes.
This commit is contained in:
Florent Kermarrec 2019-11-01 11:33:43 +01:00
parent edb1731ef9
commit 9c3c43c94a
1 changed files with 3 additions and 0 deletions

View File

@ -84,6 +84,9 @@ class SRAM(Module):
mem = mem_or_size
else:
mem = Memory(data_width, mem_or_size//(data_width//8), init=init)
mem_size = int(mem.width*mem.depth/8)
if mem_size > 512:
raise ValueError("Memory too large to fit in CSR region ({} > 512 bytes)".format(mem_size))
csrw_per_memw = (mem.width + data_width - 1)//data_width
word_bits = log2_int(csrw_per_memw)
page_bits = log2_int((mem.depth*csrw_per_memw + 511)//512, False)