====== Blocking Assignment ====== The definition of a blocking statement is the execution occurs sequentially from left to right, top to bottom. Verilog has a sequential block of code (between begin and end) each assignment occurs one after another. ===== Example ===== module BLOCKING; integer A; initial $dumpvars(0,BLOCKING); initial begin A = 1; // Do this first, Set A to 1 A = 2; // Do this second, Set A to 2 A = #10 3; // Set A to 3 after 10 timesteps A = #12 4; // Set A to 4 after 12 timesteps A = #20 5; // Set A to 5 after 20 timesteps #10 $finish; // Exit the simulation end always @ (A) begin $write("%d: A = %dn",$time,A); end endmodule ====== Non-Blocking Assignment ====== ===== Example ===== module NONBLOCKING; integer A; initial $dumpvars(0,NONBLOCKING); initial begin A = 1; A = 2; A <= #10 3; A <= #12 4; A <= #20 5; end always @ (A) begin $write("%d: A = %dn",$time,A); end endmodule