Assertion Question

Hi I require help for this problem - The select signal goes high after every 3 clock cycles or will give an error.

It may be easy but I am really having trouble getting an answer.

Thank you

In reply to Vanshika Chawla:

You need some support logic.
My testbench needs improvement :)


//import uvm_pkg::*; `include "uvm_macros.svh" 
module top; 
    bit clk, a, b, e3, select; 
    int count; 
    default clocking @(posedge clk); endclocking
    initial forever #10 clk=!clk;  

    always_ff @(posedge clk) begin
      count<=(count+1) % 3; 
      $display("count= %d", count);        
    end
    
  ap: assert property(count==0 |-> ##3 select ##1 !select[*2])
    $display("%t ap pass count=%d, select=", $realtime, $sampled(count), $sampled(select));
    else   $display("%t ap FAIL count=%d, select=", $realtime, $sampled(count), $sampled(select));
endmodule  
 

Ben Cohen
http://www.systemverilog.us/ ben@systemverilog.us
For training, consulting, services: contact http://cvcblr.com/home


  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

In reply to Vanshika Chawla:

  property chkr;
    @(posedge clk)
    $rose(req) |=> !req[*3] ##1 $rose(req);
  endproperty 

test it here

I have setup a tb with a positive and a negative caseā€¦