Assign delay behavioural differences

In reply to dave_59:

In reply to ceesam:
A continuous assignment to a reg variable should have been illegal in Verilog, so I assume that everything is being run in SystemVerilog.
Again, can you elaborate? What should the value be, and when should it change. Can you provide a small self-contained example that shows the difference you are seeing?

I would have thought illegal as well but it does not flag as an error/warning in the simulator (Cadence). Nothing in the LRM regarding this. I am simulation in SV.

module rtl ();

  reg       tmp1;
  reg       tmp2;
  wire      tmp3;
  wire      tmp4;
  
  assign #1 tmp1 = en;
  assign    tmp2 = en;
  assign #1 tmp3 = en;
  assign    tmp4 = en;

endmodule


module tb;

  rtl dut();

  initial begin

  dut.en=1;
  #5;
  dut.en=0;
  #4;
  dut.por=1;
  #1;
  
  end

endmodule