The # operator delays execution by a specified time:
// Time units (set with `timescale)
`timescale 1ns/1ps
initial begin
#10 a = 1; // Wait 10ns, then assign
#5 b = 0; // Wait 5ns more (15ns total)
#0 c = 1; // Zero delay (end of current time step)
end
// Intra-assignment delay
assign #5 y = a & b; // Output delayed 5ns from input change
// Multiple delays in one statement
initial begin
a = #10 1; // Evaluate 1 now, assign after 10ns
b = #5 2; // Evaluate 2 now, assign after 5ns
end
Not Synthesizable
Delays (#) are for simulation only. They are ignored by synthesis tools.