Request - Acknowledge related Assertion

In reply to ben@SystemVerilog.us:

Thanks for the reference . Will look into them .

Have a final question related to the original question I posted


property ack_req ;
 
   (  ( ack[->1] )  or  ( $rose( req ) [ -> 1 ] )  )  |-> 
 
   if( ack )   
 
   ( 1 , $display(" TIME : %0t  ACK  True  " , $time ) )   //  Added  for  Debugging  !!  
 
   else   
 
   ( 1'b0 )  ;
 
  endproperty 
 
  property  req_ack ;
 
    @( posedge clk )  $rose( req )  |=>  ack_req ;
 
  endproperty

  c_property : cover   property ( req_ack )  $display(" TIME : %0t  REQ_ACK  PASS " , $time ) ;

  initial  forever  #10 clk = ! clk ;

  initial  begin
 
// ' req '  is  True  on  1st  posedge  N  then  ' req ' is  de - asserted  just  before  Next  posedge .
//  ' req '  is  Asserted  at  TIME : 69  .  ' ack '  is  asserted  at  TIME : 49  !!
 
 
       #9 ;  req = 1 ;    //  TIME:9
 
      #20 ;  req = 0 ;    //  TIME:29
 
      #20 ;  ack = 1 ;    //  TIME:49

      #20 ;  req = 1 ;    //  TIME:69
 
       #5 ;
    $finish() ;
 
  end

I Observe O/P as ::

TIME : 50 ACK True
TIME : 50 ACK True
TIME : 70 ACK True
TIME : 70 ACK True
TIME : 70 REQ_ACK PASS

[ Q ] Why does the assertion Pass at TIME : 70 instead of TIME : 50 ?

Antecedent ( ack[->1] ) is true at TIME : 50 hence I expect assertion to Pass at TIME : 50