Delay is a mechanism allowing introducing timing parameters of specified systems.
delay_mechanism ::= transport | [ reject time_expression ] inertial
The delay mechanism allows introducing propagation times of described systems. Delays are specified in signal assignment statements. It is not allowed to specify delays in variable assignments.
There are two delay mechanism available in VHDL: inertial delay (default) and transport delay.
The transport delay is defined using the reserved word transport and is characteristic for transmission lines. New signal value is assigned with specified delay independently from the width of the impulse in waveform (i.e. the signal is propagated through the line - Example 1).
Inertial delay is defined using the reserved word inertial and is used to model the devices, which are inherently inertial. In practice this means, that impulses shorter than specified switching time are not transmitted (Example 2).
Inertial delay specification may contain a reject clause. This clause can be used to specify the minimum impulse width that will be propagated, regardless of the switching time specified (Example 3).
If the delay mechanism is not specified then by default it is inertial.
B_OUT <= transport B_IN after 1 ns;
The value of the signal B_IN is assigned to the signal B_OUT with 1 ns delay. The distance between subsequent changes of B_IN is not important - all changes are transmitted to B_OUT with specified delay (Fig. 1).
Figure 1. Example of transport delay
L_OUT <= inertial L_IN after 1 ns;
The signal value L_IN is assigned to the signal L_OUT with 1 ns delay. Not all changes of the signal L_IN, however, will be transmitted: if the width of an impulse is shorter than 1 ns then it will not be transmitted. See Fig. 2 and the change of L_IN at 13 ns and again at 13.7 ns.
Figure 2. Example of inertial delay
Q_OUT <= reject 500 ps inertial Q_IN after 1 ns;
The signal value Q_IN is assigned to the signal Q_OUT with 1 ns delay. Although it is an inertial delay with switching time equal to 1 ns, the reject time is specified to 500 ps (.5 ns) and only impulses shorter than 500 ps will not be transmitted (Fig. 3).
Figure 3. Example of inertial delay with rejection limit.
Delay mechanisms can be applied to signals only. It is not allowed to specify delays in variable assignments.
Delays are not synthesizable.
The Inertial delay is the default delay and the reserved word inertial can be omitted.