Sampling point of Assertions

In reply to GMZlate:
I an not clear as to what your point is. However, instead of your example with the initial, let me change that to the always_comb.


 initial begin
            q = 1;
            m <= q;
            q = 0;
            #1 $display(" m = %0d", m);
        end 
        always_comb begin
            c= b; // to trigger the always_comb
            w = 1;
            w = 0;
            $display(" at %t in comb: a = %0d", $time, a); 
        end 
        
        always  @(posedge clk)  begin 
            $display(" at %t in always: a = %0d", $time, a); 
            a <= w;
        end  
// simulation results
at                    0 in comb: a = 0
 m = 1
 at                  100 in always: a = 0
 at                  300 in always: a = 0
 at                  500 in always: a = 0
 at                  500 in comb: a = 0
 at                  700 in always: a = 0

Your comment: “You will see that the value of a is 1.”
Your “a” is my “m”, and it is a 1 in the initial, but using the always, it is a 0, and the combinational logic is re-evaluated, and that is the value taken by the nonblocking assignment.
Ben Cohen
http://www.systemverilog.us/ ben@systemverilog.us
For training, consulting, services: contact http://cvcblr.com/home


  1. VF Horizons:PAPER: SVA Alternative for Complex Assertions - SystemVerilog - Verification Academy
  2. http://systemverilog.us/vf/SolvingComplexUsersAssertions.pdf
  3. “Using SVA for scoreboarding and TB designs”
    http://systemverilog.us/papers/sva4scoreboarding.pdf
  4. “Assertions Instead of FSMs/logic for Scoreboarding and Verification”
    https://verificationacademy.com/verification-horizons/october-2013-volume-9-issue-3
  5. 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