You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The equivalence checking should be able to prove that these two circuits are equal.
Actual Behavior
It shows me that it cannot prove equivalence for many of its internal nodes:
Specifically, the combinational logic driving the chaser.state[0] LUT is incorrect when the fsm pass is included.
In the attached parsed.pdf the chaser.state[0] Latch should be initialized to 0 when reset is 1. However, it is getting initialized to 1. Furthermore, the LUT table of $abc$836$flatten... should contain a entry [0, 0, 1] so that chaser.state[0] can be updated when the $abc$836$new_n116 LUT has a value of 1 (the table is order is [reset, chaser.state[0], $abc$836$new...]).
fsm_recode is a sub-step of fsm which optimizes the internal encoding. If you want logic equivalence for those internal nodes, you might want to try fsm -norecode?
I think the problem that I'm having is more severe because the optimized circuit has a completely different functionality compared to the original one (when running simulations, they exhibit different behaviors). I'll still try fsm -norecode :)
With FSM state recoding I don't think equiv_make/equiv_simple will be able to prove the circuits equivalent. Also note equiv_simple is severely limited in its power, EQY is the more appropriate tool for general equivalence checking.
the optimized circuit has a completely different functionality compared to the original one (when running simulations, they exhibit different behaviors)
That on the other hand is a serious bug, if you can give more details please adapt the report or open a new ticket.
Version
Yosys 0.46+11 (git sha1 0200a76, clang++ 14.0.0-1ubuntu1.1 -fPIC -O3)
On which OS did this happen?
Linux
Reproduction Steps
PointerChasing.sv
blif
file for the above Verilog file. Here we won't use thefsm
pass:blif
file, but with thefsm
pass:Expected Behavior
The equivalence checking should be able to prove that these two circuits are equal.
Actual Behavior
It shows me that it cannot prove equivalence for many of its internal nodes:
Specifically, the combinational logic driving the
chaser.state[0]
LUT is incorrect when thefsm
pass is included.In the attached
parsed.pdf
thechaser.state[0]
Latch should be initialized to0
whenreset
is1
. However, it is getting initialized to1
. Furthermore, the LUT table of$abc$836$flatten...
should contain a entry[0, 0, 1]
so thatchaser.state[0]
can be updated when the$abc$836$new_n116
LUT has a value of1
(the table is order is [reset
,chaser.state[0]
,$abc$836$new...
]).parsed.pdf
The text was updated successfully, but these errors were encountered: