memories[memory] = module.memory(width=memory.width, size=memory.depth,
name=memory.name)
addr_bits = bits_for(memory.depth)
+ data_parts = ["{}'".format(memory.width * memory.depth)]
for addr in range(memory.depth):
if addr < len(memory.init):
data = memory.init[addr]
else:
data = 0
- module.cell("$meminit", ports={
- "\\ADDR": rhs_compiler(ast.Const(addr, addr_bits)),
- "\\DATA": rhs_compiler(ast.Const(data, memory.width)),
- }, params={
- "MEMID": memories[memory],
- "ABITS": addr_bits,
- "WIDTH": memory.width,
- "WORDS": 1,
- "PRIORITY": 0,
- })
+ data_parts.append("{:0{}b}".format(data, memory.width))
+ module.cell("$meminit", ports={
+ "\\ADDR": rhs_compiler(ast.Const(0, addr_bits)),
+ "\\DATA": "".join(data_parts),
+ }, params={
+ "MEMID": memories[memory],
+ "ABITS": addr_bits,
+ "WIDTH": memory.width,
+ "WORDS": memory.depth,
+ "PRIORITY": 0,
+ })
param_value = memories[memory]