Transport vs Inertial Delay in VHDL: Key Differences and Usage
transport delay models the exact signal propagation time without filtering glitches, while inertial delay models real hardware behavior by ignoring pulses shorter than the delay time. Transport delay passes all changes, but inertial delay filters out short pulses as noise.Quick Comparison
Here is a quick table comparing transport and inertial delay in VHDL across key factors.
| Factor | Transport Delay | Inertial Delay |
|---|---|---|
| Purpose | Models exact signal delay | Models real hardware filtering |
| Pulse Filtering | No filtering; all pulses pass | Filters pulses shorter than delay |
| Default Delay Type | No (must be specified) | Yes (default in VHDL) |
| Use Case | Ideal signal propagation | Realistic hardware timing |
| Effect on Short Pulses | Short pulses appear at output | Short pulses are suppressed |
| Syntax Example | signal <= transport value after time; | signal <= value after time; |
Key Differences
Transport delay in VHDL models the pure propagation delay of a signal without any modification. It means every change on the input signal is delayed by the specified time and then passed to the output, regardless of how short the pulse is. This is useful when you want to simulate ideal wires or channels where no pulse is lost.
On the other hand, inertial delay models the physical behavior of real hardware components that cannot respond to very short pulses or glitches. It ignores any input pulse shorter than the specified delay time, effectively filtering out noise or glitches. This is the default delay type in VHDL when no keyword is specified.
In summary, transport delay passes all pulses delayed exactly, while inertial delay filters out pulses shorter than the delay, making it more realistic for hardware simulation.
Code Comparison
This example shows how to assign a signal with transport delay in VHDL. The output signal will reflect all input changes delayed by 10 ns, including very short pulses.
process(input_signal)
begin
output_signal <= transport input_signal after 10 ns;
end process;Inertial Delay Equivalent
This example shows the same assignment using inertial delay, which is the default. Short pulses on the input shorter than 10 ns will be ignored and not appear on the output.
process(input_signal) begin output_signal <= input_signal after 10 ns; -- inertial delay by default end process;
When to Use Which
Choose transport delay when you want to simulate ideal signal propagation without losing any pulses, such as modeling wires or communication channels. It is useful for timing analysis where every glitch matters.
Choose inertial delay when you want to simulate realistic hardware behavior that ignores glitches or very short pulses, such as gates and flip-flops. It helps avoid false triggering in your simulation.