mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-15 13:28:59 +00:00
smtbmc: Use fewer smt commands while writing .yw traces
Depending on the used solver and design this can be a signficant performance improvement.
This commit is contained in:
parent
449e3dbbd3
commit
111085669b
|
@ -1327,6 +1327,9 @@ def write_yw_trace(steps, index, allregs=False, filename=None):
|
||||||
sig = yw.add_sig(word_path, overlap_start, overlap_end - overlap_start, True)
|
sig = yw.add_sig(word_path, overlap_start, overlap_end - overlap_start, True)
|
||||||
mem_init_values.append((sig, overlap_bits.replace("x", "?")))
|
mem_init_values.append((sig, overlap_bits.replace("x", "?")))
|
||||||
|
|
||||||
|
exprs = []
|
||||||
|
all_sigs = []
|
||||||
|
|
||||||
for i, k in enumerate(steps):
|
for i, k in enumerate(steps):
|
||||||
step_values = WitnessValues()
|
step_values = WitnessValues()
|
||||||
|
|
||||||
|
@ -1337,8 +1340,15 @@ def write_yw_trace(steps, index, allregs=False, filename=None):
|
||||||
else:
|
else:
|
||||||
sigs = seqs
|
sigs = seqs
|
||||||
|
|
||||||
|
exprs.extend(smt.witness_net_expr(topmod, f"s{k}", sig) for sig in sigs)
|
||||||
|
|
||||||
|
all_sigs.append(sigs)
|
||||||
|
|
||||||
|
bvs = iter(smt.get_list(exprs))
|
||||||
|
|
||||||
|
for sigs in all_sigs:
|
||||||
for sig in sigs:
|
for sig in sigs:
|
||||||
value = smt.bv2bin(smt.get(smt.witness_net_expr(topmod, f"s{k}", sig)))
|
value = smt.bv2bin(next(bvs))
|
||||||
step_values[sig["sig"]] = value
|
step_values[sig["sig"]] = value
|
||||||
yw.step(step_values)
|
yw.step(step_values)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue