Hi All ,
I was trying following code :
property prop;
@( posedge clk ) <some_expression>;
endproperty
assert property ( prop ) $display("T:%0t Pass",$realtime) ;
else $display("T:%0t Fail",$realtime) ;
initial begin
$timeformat(-9,3," ns",5);
#100 ; $finish();
end
I notice that %t within the pass/fail action block uses the $timeformat defined within the initial block although it was defined later .
LRM Section 20.4.2 $timeformat says ::
“It sets the time unit, precision number, suffix string, and minimum field width for all %t formats specified in all modules that follow in the source description until another $timeformat system task is invoked.”
Since the action block don’t follow the $timeformat , why is it that it still applies to them ?
$timeformat is applied at t:0 whereas the action block execute after t:0 .
Can I say that all %t that execute after t:0 within the module ( irrespective of whether the %t is written before or after $timeformat definition ) would follow the format defined as per $timeformat ?