Search code examples
system-verilogformal-verificationsystem-verilog-assertions

How to write property for formal verification?


property prop1;
@(posedge clk)
$fell(sig1) ##1 sequence1 |-> sequence2;
endproperty

I want to disable the property iff sig1=1'b1 after first clock cycle.

Transition from high to low on sig1 is my triggering condition. If I do disable iff(sig1) triggering condition will not be met.

Also using throughout is not possible on both enabling and satisfying sequences in formal verifiers.

How can i do it? Thanks!


Solution

  • How about writing some satellite code to derive a delayed version of sig:

      always @(posedge clk) sig1d <= sig1;
    
      property prop1;
        @(posedge clk) disable iff(sig1d) 
        $fell(sig1) ##1 sequence1 |-> sequence2;
      endproperty
    

    http://www.edaplayground.com/x/2tbX