out = #5 in;
blocks the next operation for 5 time units. It will prevent the monitoring of the next @(in)
until the the 5 time units have passed. If you add a $display
statement just before and after the assignment you will see 5 time units has passed.
always @(in) begin
$display("enter @ %0t",$realtime);
out = #5 in;
$display("exit @ %0t",$realtime);
end
/*******************
* Example output:
* enter @ time 10
* exit @ time 15
*******************/
out <= #5 in;
schedules the assignment of occur 5 time units in the future and allows the next operation to begin without waiting for assignment to complete.
always @(in) begin
$display("enter @ %0t",$realtime);
out <= #5 in;
$display("exit @ %0t",$realtime);
end
/*******************
* Example output:
* enter @ time 10
* exit @ time 10
*******************/
Working example at the EDA Playground: http://www.edaplayground.com/s/6/114