Vacuous pass in SV Assertion

Hi All,

I just saw the assertion control task called $assertvacuousoff to turn off the pass action block in case of any false pass. I dont know how to use it in my assertion property. For example I have the following property:

property ex;
@(posedge clk) $rose(a) |-> $rose(b);
endproperty

assert property (ex) else $error();

Where do I write this task to check vacuous pass?

In reply to atanubiswas:

turn off the pass action block in case of any false pass

There no such thing as a “false pass”; it is called a vacuous successe or a vacuuss pass.
To use those action control tasks, insert them in a block, such as the initial or always block.
Thus, your assertion will look like the following:


  // For straightforward, not reused assertions with no local variables, avoid declaring 
  // property first, it is no needed. 
  initial $assertvacuousoff(0);
    // initial $assertpassoff(0);
  pa_ab: assert property(@ (posedge clk) $rose(a) |-> b)
        $display ("@ %t PASS:  a=%b b=%b", $realtime, $sampled(a), $sampled(a));
        else $display ("@ %t FAIL:  a=%b b=%b", $realtime, $sampled(a), $sampled(a)); 

Ben Cohen
http://www.systemverilog.us/ ben@systemverilog.us
For training, consulting, services: contact Home - My cvcblr


  1. SVA Alternative for Complex Assertions
    https://verificationacademy.com/news/verification-horizons-march-2018-issue
  2. SVA: Package for dynamic and range delays and repeats - SystemVerilog - Verification Academy
  3. SVA in a UVM Class-based Environment
    https://verificationacademy.com/verification-horizons/february-2013-volume-9-issue-1/SVA-in-a-UVM-Class-based-Environment