Skip to content

VHDL · Chapter 3.4 · Signals & Hardware Behavior

Delta Cycles and the Simulation Engine

Here is the engine underneath VHDL. Simulated time is not one number, it has two axes: real time measured in nanoseconds, and delta cycles, which are infinitesimal ordered steps that all happen at the same real time. When a process schedules a signal update, that update lands one delta later, still at the same nanosecond, and any process that wakes may schedule more, spinning further deltas until nothing changes and only then does real time advance. This two-axis model is not a quirk; it is precisely what lets a hardware description built from zero-delay logic evaluate deterministically and without races. Once you understand delta cycles, the rest of the module, from drivers to multiple drivers to simulation versus synthesis, becomes one coherent mechanism.

Foundation16 min readVHDLDelta CycleSimulation EngineSchedulingDeterminismRTL

1. Engineering intuition — two axes of time

Real hardware settles "instantly" after an edge: a clock rises and combinational logic ripples to a new steady state with (ideally) zero modelled delay. But "everything at once" is ambiguous for a simulator — in what order do the gates evaluate? VHDL resolves this with a second time axis. At each real-time instant the engine runs as many delta cycles as needed to let zero-delay logic propagate and settle, all while the wall clock (ns) stays frozen. Deltas are ordered (delta 0, delta 1, …) but consume no real time.

So a signal you assign "now" updates at now + 1 delta: the same nanosecond, the next ordered step. That single fact — already met as the delta delay in lessons 3.1/3.2 — is the whole engine.

two-axis model of simulated time: real time in ns versus ordered delta cycles at one instantdelta+1 (0ns)delta+1 (0ns)advance timeReal time (ns)advances only when stableT : delta 0event occurs / updatesappliedT : delta 1propagation — same nsT : delta 2settles — same nsT' : delta 0real time advances afterstability12
The two axes of simulated time. The horizontal axis is real time (ns) — what a waveform's grid shows. The vertical axis is delta cycles: ordered, zero-real-time steps within a single instant. At time T a signal change can trigger a cascade of delta cycles (T+Δ, T+2Δ, …) that all occur AT T, settling the zero-delay logic before real time advances to the next event. A point on a waveform is really (real time, delta); most of the time delta is 0, but after an edge several deltas can stack at one ns.

2. Formal explanation — the simulation cycle

The simulator repeats a fixed loop. At the current time it updates the signals scheduled for now, resumes every process sensitive to those changes, runs each until it suspends (scheduling new updates one delta ahead), and repeats. When a pass produces no further signal changes at this time, the design is stable and real time advances to the next pending event.

the simulation cycle loop with delta iteration and time advanceyes: delta+1, T unchangedyes:delta+1, T…no: stableEvent at time Te.g. clock edge / inputchangeApply signal updatesdue at Tdrivers project their newvaluesResume sensitiveprocessesevery process watching achanged signalExecute to suspendvariables update now;signal assigns scheduled atT+ΔMore updates due atT?if yes → another DELTAcycle (same ns)Advance real timeonly when stable — no morechanges at T12
The VHDL simulation cycle. At a time instant: scheduled signal updates are applied, sensitive processes resume, each runs to suspension (updating its variables immediately and scheduling its signal assignments one delta ahead), then the engine checks for more updates due now. If yes, it spins another DELTA cycle at the same real time; if no, real time advances. The mandatory Module-3 timeline (clock edge → process → variables → schedule → suspend → delta → signals updated → fanout wakes) is exactly one trip around this loop.

3. Production-quality RTL — propagation takes deltas

Consider three concurrent assignments forming a chain. They do not all update together; the value ripples one delta per stage, all at the same nanosecond:

delta_propagation.vhd
Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
-- concurrent signal assignments (each is its own driver, lesson 3.5):
b <= a;        -- when a changes, b updates one delta later
c <= b;        -- when b changes, c updates one delta after THAT
d <= c;        -- ... and d one delta after that
-- A change on 'a' reaches 'd' after 3 delta cycles — all at the SAME real time.

What hardware does this become? Three buffers/wires in series. In silicon the propagation is a tiny real delay; in zero-delay RTL simulation that ordering is represented by delta cycles, so the sequence (a before b before c before d) is preserved without inventing arbitrary times.

4. Hardware interpretation — deltas model order, not delay

Delta cycles are how VHDL represents causal ordering of zero-delay logic. Real combinational paths have nonzero delay that naturally orders events; RTL deliberately models them as zero delay for speed and clarity, so the engine needs another way to keep "a causes b causes c" ordered. Deltas supply that ordering at zero real time. They are a simulation device — they do not exist in hardware and have no bearing on synthesis — but they make zero-delay simulation match the causal behaviour the gates would have.

5. Simulation interpretation — many deltas at one nanosecond

On a waveform, delta updates all sit at the same ns grid line; a tool shows them as successive infinitesimal steps. The chain above propagates within a single time instant:

a → b → c propagate over successive delta cycles at the SAME real time

6 cycles
a → b → c propagate over successive delta cycles at the SAME real timea changes (real time advances to here)a changes (real time a…delta+1: b follows a — same nsdelta+1: b follows a —…delta+2: c follows b — still the same nsdelta+2: c follows b —…a011111b001111c000111t0t1t2t3t4t5
Read the horizontal steps after 'a' changes as DELTA cycles within one nanosecond, not as elapsed real time. b updates one delta after a, c one delta after b. Real time does not advance until the chain is stable. This is why a purely combinational result is correct 'in zero time' yet still strictly ordered — the engine spun the deltas to settle it.

6. Debugging example — the zero-delay combinational loop

Expected: combinational logic settles to a steady state. Observed: the simulator hangs or aborts with "iteration limit exceeded" / "delta cycle limit," and the waveform shows a signal toggling endlessly at a single time point. Root cause: a zero-delay feedback loop with no stable solution — each delta re-triggers the next, so the design never settles and real time never advances. Fix: break the comb loop (register it, or remove the unintended feedback). Engineering takeaway: an unbounded burst of delta cycles at one time is the simulator telling you the combinational graph has no fixed point — almost always an accidental comb loop.

the comb loop that never settles
Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
-- WRONG: y depends on itself with zero delay → oscillates across deltas forever.
y <= not y;          -- each delta flips y, scheduling another flip → no fixed point
-- The engine spins deltas at the same ns until it gives up (iteration-limit error).
 
-- RIGHT: make the feedback cross a register so each value lasts a full clock.
process (clk) begin
  if rising_edge(clk) then
    y <= not y;      -- a toggle flip-flop: one change per clock, settles each cycle
  end if;
end process;

7. Common mistakes & what to watch for

  • Assuming concurrent statements update simultaneously. They ripple one delta per dependency; a chain of N stages needs N deltas (all at the same ns).
  • Reading a signal expecting "this delta's" new value. A signal assigned now updates next delta; the current evaluation still sees the old value (use a variable for same-step results).
  • Building unintended zero-delay loops. Comb feedback with no fixed point causes a delta-iteration-limit error — break it with a register.
  • Confusing delta count with real time. Deltas are zero real time; many deltas at one ns is normal and costs no simulated time.
  • Expecting deltas to affect synthesis. They are a simulation construct only; gates have real delay and synthesis ignores the delta model entirely.

8. Engineering insight

Delta cycles are VHDL's answer to a deep question: how do you simulate "instantaneous" hardware deterministically? By splitting each instant into ordered, zero-time steps, the engine evaluates zero-delay logic in causal order and reaches the same fixed point every run — no races, no tool-dependent ordering. This is also a diagnostic lens: a burst of deltas means propagation (normal); an unbounded burst means no fixed point (a comb loop). Once you see signal updates as "scheduled one delta ahead and settled before time moves," drivers, multiple-driver resolution, and clocked behaviour all read as consequences of this one loop.

9. Summary

Simulated time has two axes: real time and delta cycles. A scheduled signal update lands one delta later at the same real time; waking processes can schedule more updates, spinning additional deltas until the design is stable, after which real time advances. Deltas give deterministic, race-free ordering of zero-delay logic, are a simulation-only construct, and turn an unsolvable comb loop into a visible iteration-limit error.

10. Learning continuity

You now have the engine: updates are scheduled one delta ahead and applied by the simulation loop. But what holds those scheduled values? The next lesson details the driver model — how each assignment creates a driver that carries a projected waveform of pending transactions, the object the delta cycle actually reads when it updates a signal. That sets up the lesson after it, multiple drivers and contention, where two drivers on one net force the resolution you first met with std_logic back in Chapter 2.