In reply to dave_59:
Apologies for not describing the working/not working term
assign a1.C=b1.X; //working
assign #1ps a1.D=b1.X; //not working
working : a1.C value is same as b1.X
not working : here the value a1.D is “X”.
Once the delay is applied, the value become “X”.