Trouble with eventual operator

13 views
Skip to first unread message

rsh...@vt.edu

unread,
Apr 23, 2019, 2:57:47 AM4/23/19
to CProver Support
Hi,

I have a Verilog module, one of whose inputs is A, and there is a register "next_state". I am trying to verify the following property.

assert property (A |-> ##[1:$](next_state == 3'b111));

As per how my FSM works, the input A is required to be kept asserted for next_state to eventually get to 3'b111. I therefore included an "assume property " statement just to ensure that A is kept at "1", and just wish to verify if next_state eventually goes to 3'b111.

My assertion fails with the following counter-example.

Transition System State 0
A = 1
next_state = 3'b11 (011)

Transition System State 1
A = 1
next_state = 3'b111 (111)

Transition System State 2
A = 1
next_state = 3'b0 (000)

(and few more Transition states...)

Since next_state takes the appropriate value of 3'b111 at Transition state 1, what I intend to verify does happen. The assertion is however flagged as a failure. Am I missing something here? I'd really appreciate any help I can get on this.

(In case it helps, next_state is modeled as combinatorial logic inside an always@* block, with a sequential register "current_state" taking the value of next_state at every clock cycle. I'm not certain if this matters in the aforementioned assertion statement.)

Thanks,
Shashank
Reply all
Reply to author
Forward
0 new messages