back.rtlil: mask memory init values.
This handles both init values that are too wide, which happens if their magnitude is too high, or if they're negative. Fixes #96.
This commit is contained in:
parent
58e39f90ce
commit
d2d8c2b8bf
|
@ -729,9 +729,10 @@ def convert_fragment(builder, fragment, hierarchy):
|
||||||
name=memory.name)
|
name=memory.name)
|
||||||
addr_bits = bits_for(memory.depth)
|
addr_bits = bits_for(memory.depth)
|
||||||
data_parts = []
|
data_parts = []
|
||||||
|
data_mask = (1 << memory.width) - 1
|
||||||
for addr in range(memory.depth):
|
for addr in range(memory.depth):
|
||||||
if addr < len(memory.init):
|
if addr < len(memory.init):
|
||||||
data = memory.init[addr]
|
data = memory.init[addr] & data_mask
|
||||||
else:
|
else:
|
||||||
data = 0
|
data = 0
|
||||||
data_parts.append("{:0{}b}".format(data, memory.width))
|
data_parts.append("{:0{}b}".format(data, memory.width))
|
||||||
|
|
Loading…
Reference in a new issue