Open KrystalDelusion opened 6 months ago
Discovered while testing the SBY fifo example where the aig flow merges the following assertions during a call to opt -full
:
a_oflow2: assert (waddr < MAX_DATA);
a_full: assert (!full || count == MAX_DATA);
The btor and smt2 flows don't call opt -full
and retain both assertions while the aig flow drops a_oflow2.
Version
0.38+129
On which OS did this happen?
Linux
Reproduction Steps
Run script:
Expected Behavior
Script should pass, retaining both assert cells (even if they end up being identical).
Actual Behavior
Script merges assert cells, leaving only assert_a1 and
select -assert_count
fails.When async2sync converts the check cells to assert cells they lose the 'keep' attribute, and while opt_clean checks
if (cell->type.in(ID($assert), ...))
, opt_merge only checksif (cell->has_keep_attr())
.