Why I am getting assertion error even if the two values remains the same

realtime a,b;
realtime temp1,temp2;
initial begin
  #60us;
  if(LOCK==1'b1) begin
   @(posedge CLK1);
    temp1= $realtime;
     @(posedge CLK1);
     temp2=$realtime-temp1;
     a=temp2;

  end


realtime temp3,temp4,temp5,temp6,temp7;
int c,d;
//int temp6;

 initial begin
 #20us;
   @(posedge CLK1);
    temp3= $realtime;
     @(posedge CLK1);
     temp4=$realtime-temp3;
     temp6=(1/temp4)*c*(10**3);
     temp7=temp6/(2*d);
      b=(1/temp7)*(10**3);
  end



always @*
assert #0 ($rtoi(a) == $rtoi(b)) $display("Actual  frequency=%t Expected Frequency=%t",$rtoi(a), $rtoi(b));

ncsim: *E,ASRTST (…/checker.sv,179): (time 20014650 PS) Assertion tb_top.checker1.__assert_1 has failed

Actual a frequency=102.000000 ns – Expected Frequency=102.000000 ns
Why I am getting assertion error even if the two values remains the same?

In reply to kulua:


always @*
  assert #0 ($rtoi(a) == $rtoi(b)) $display("Actual  frequency=%t Expected Frequency=%t",$rtoi(a), $rtoi(b));

Your assertion reports Actual and Expected Freq. at “PASSED” condition.

To reports the Freq. at “Failed” condition, write the assertion as follows.


always @*
assert #0 ($rtoi(a) == $rtoi(b)) 
  else $display("Actual  frequency=%t Expected Frequency=%t",$rtoi(a), $rtoi(b));