Time0 signal checker

In reply to dave_59:

In reply to mlsxdx:
You get a posedge clk at time 0 because its default initial value is 0, and you set it to 1 at time 0. Either remove your
clk = 0;
procedural assignment at time 0, or declare it with an initial value of 1.

bit clk = 1;

That initialization happens before any other initial or always processes start. You can do the same thing with en. I am not exactly sure what you are trying to check.

Thank you for your reply, Dave.
Why changing to bit clk = 1, a posedge clk is still there because dutI.en is 1 in the waveform. That basically means always @(posedge clk or negedge resetn) get executed at time0. Can you help me to understand what the magic is there on always statement on time0?