FV Interview Questions (XI) – Does a Liveness Property Failure Mean a Deadlock?

Liveness property debug may often be tricky. If we ever find a liveness property failure, it does not necessarily mean a deadlock exists in the design. Instead, it could be due to lack of proper assumptions.

Assuming we have a data processing block, in which both input and output data interfaces follow Valid-Ready protocols. We want to prove that, there is no deadlock in the input data interface:

assert property (@(posedge clk) vld_in |-> s_eventually rdy_in);

We could get a counterexample for the liveness property above. The problem is that the output data interface may never be alive, i.e., the tool may assume “rdy_out” is always low.

In this case, by adding a liveness assumption at the output data interface, the counterexample will be gone:

assume property (@(posedge clk) vld_out |-> s_eventually rdy_out);

Subscribe

Enter your email to get updates from us. You might need to check the spam folder for the confirmation email.

Leave a comment