In reply to MICRO_91:
Sorry I missed the second half of your question.
When using “ps” with the time literal, the LRM says
The time literal is interpreted as a realtime value scaled to the current time unit
Since the time unit/scale is 1ns, rtdelay gets the value ‘0.800559’, and tdelay gets the value 1. %t assumes its value argument is in 1ns, but your $timeformat says to scale it back to 1ps, with 0 decimal places of precision. that gets rounded up to 801ps.