module TestBench;
reg a1,a2;
reg b1,b2;
initial begin
$dumpfile("tmp.vcd");
$dumpvars(0,TestBench);
$display("a1 b1 | a2 b2");
$monitor(" %b %b | %b %b",a1,b1,a2,b2);
#0 a1=1'b0; b1=1'b1; a2=1'b0; b2=1'b1;
#1 a1=b1; b1=a1; a2<=b2; b2<=a2;
#1 a1=b1; b1=a1; a2<=b2; b2<=a2;
#1 a1=1'b0; b1=1'b0; a2=1'b0; b2=1'b0;
#1 a1=1'b1; b1=1'b0; a2=1'b1; b2=1'b0;
#1 a1=b1; b1=a1; a2<=b2; b2<=a2;
#1 a1=b1; b1=a1; a2<=b2; b2<=a2;
#1 $finish;
end
endmodule
ここの処理をするときb2は1'b1
a2は1'b1になる
ここの処理をするときa2は0
b2は1'b0になる
a2<=b2;
b2<=a2;
は同時に実行していると解釈する
複数の代入を行うとき、
代入のタイミングと順序が重要になる