Variable delay in $past(sig_name, vari_delay) assertion

In reply to Nandeesha:
As you know, the expressions in $past must be static; it cannot be a variable or a sequence.

$past( expression1 [, number_of_ticks] [, expression2] [, clocking_event])

In your model, you seem to want to express something like

$changed(o_c_500k) |->($past($fell(ADC_START),var)==1) && 
                                     ($past($fell(ADC_START),var-1)==0);

// This is the wrong way to see or express an assertion.  The recommended approach is the 
// forward-looking.  Thus, instead of saying
// BAD STYLE:  If  some_sequence_of_events then some_events must have happened in the past. 
// BETTER STYLE:  If some_events then other events now or in the future 
// Something like
// Instead of
       $changed(o_c_500k) |->($past($fell(ADC_START),5)==1) && 
                                    ($past($fell(ADC_START),4)==0);
// DO THIS
  $fell(ADC_START) |->  strong(##1 $stable(ADC_START)  // (like your ",5" ",4"
                               ##[1:$] $changed(o_c_500k));   

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


  1. SVA Alternative for Complex Assertions
    Verification Horizons - March 2018 Issue | Verification Academy
  2. SVA: Package for dynamic and range delays and repeats | Verification Academy
  3. SVA in a UVM Class-based Environment
    SVA in a UVM Class-based Environment | Verification Horizons | Verification Academy