In reply to silverace99:
Hi all, interesting problem here maybe you can help me figure it out.
I’ve got a simple connectivity check assertion:
(I’m running simulations with this on Cadence Incisive, not sure that it matters)
property connectivity_check(dsbl, clk, src, dest);
@ (posedge clk) disable iff(dsbl)
!$stable(src) |-> (src == dest);
endproperty
The assertion does pass when there are no failures found. The assertion itself according to the simulator seems to always be in one of two states:
“$finished”
“$inactive”
At the start of the simulation, the assertion begins in the “$inactive” state. The first time the assertion check passes, it enters the “$finished” state. In other assertion checks that I have seen, it is then supposed to return to “$inactive” shortly thereafter.
That’s not the case here. When my assertion above passes, it gets stuck in the “$finished” state. As a result, during every other part in the test that wiggles the assertion, it is still “$finished” and doesn’t increment the # of times the assertion fires. Thus in the end of test assertion reports, the simulator claims the assertion fired only once even if it was checking 1000 times.
I know the assertion isn’t simply dead because if I inject an error on the src, I can get the assertion to fail. This causes the assertion to return to the “$inactive” state. The next time the assertion hits a check and passes, it goes back to the “$finished” state and gets stuck again.
I’m honestly not sure if this is an error on my part or a simulator error. Hopefully somebody can give me a clue, thanks!
Hi Silverace99,
Have you got the solution to your problem as I am also facing the same problem?
Regards
Neeraj