A module may have any number of continuous assign statements. Continuous assign statements are used to drive values on to wires. For example:
assign a = b & c;
This is referred to as a continuous assign because the wire on the left-hand side of the assignment operator is continuously driven with the value of the expression on the right hand side. The target of the assign statement must be a wire. The continuous assign statement is not a procedural statement and so must be used at the module level; it cannot be placed in an initial or always process.
You can add delay to a continuous assign statement as follows:
assign #10 a = b & c;
In this case, the value of
a changes 10 units of time after the expression
b & c changes. Continuous assign statement implement inertial delay, meaning
that continuous assign statements swallow glitches. This is illustrated below
with the assumption that the unit of time is 1ns.