3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-08-02 01:13:19 +00:00

yosys-smtbmc: improved --dump-vlogtb handling of memories

This commit is contained in:
Clifford Wolf 2016-08-21 15:56:22 +02:00
parent cdd0b85e47
commit 7a33b9892a
3 changed files with 30 additions and 8 deletions

View file

@ -200,13 +200,23 @@ def write_vlogtb_trace(steps):
mems = sorted(smt.hiermems(topmod))
for mempath in mems:
mem, abits, width = smt.mem_expr(topmod, "s0", mempath)
abits, width, ports = smt.mem_info(topmod, "s0", mempath)
mem = smt.mem_expr(topmod, "s0", mempath)
addr_expr_list = list()
for i in range(steps):
for j in range(ports):
addr_expr_list.append(smt.mem_expr(topmod, "s%d" % i, mempath, j))
addr_list = set()
for val in smt.get_list(addr_expr_list):
addr_list.add(smt.bv2int(val))
expr_list = list()
for i in range(2**abits):
for i in addr_list:
expr_list.append("(select %s #b%s)" % (mem, format(i, "0%db" % abits)))
for i, val in enumerate(smt.get_list(expr_list)):
for i, val in zip(addr_list, smt.get_list(expr_list)):
val = smt.bv2bin(val)
print(" UUT.%s[%d] = %d'b%s;" % (".".join(mempath), i, len(val), val), file=f)