3.5.10 · D5HDL & Digital Design Flow

Question bank — Critical path identification

2,215 words10 min readBack to topic

Symbol quick-reference (recall before you start)

Figure — Critical path identification

True or false — justify

The critical path is always the physically longest wire on the chip.
False. Critical means largest accumulated delay, not longest length; a short wire through slow, heavily-loaded gates can beat a long wire through fast ones. Delay is what matters, geometry is only a contributor.
A path with more gates is always slower than a path with fewer gates.
False. Ten fast light-load gates can be quicker than three slow high-fanout gates. You must sum the actual per-gate delays, never count nodes — see Propagation Delay and Gate Sizing.
The critical path always has the maximum total delay of all paths.
Usually true, but not guaranteed. Since also depends on the period and skew of that specific path, two paths with different capture-clock skews can have the worst-slack path differ from the max-delay path.
If a design passes timing, every path has positive slack.
True by definition. Passing means the worst slack (the critical path's) is non-negative, and since it is the minimum, all others are at least that good.
Speeding up the critical path guarantees a faster clock.
False. Once the old critical path is fixed, the second-slowest path becomes critical and now sets the floor. Timing closure is iterative — you must re-run Static Timing Analysis (STA) after each fix.
Adding clock skew always worsens timing.
False. Skew that delays the capture clock adds to the budget , relaxing the setup check. It only hurts setup if it delays the launch clock — and for hold it flips sign (see the hold section). Track Clock Skew and Jitter carefully.
Pipelining increases the maximum clock frequency for free.
False. It splits one long path into shorter stages so rises, but it costs an extra clock of latency and more registers/area. You trade throughput timing against latency and hardware — see Pipelining.
Slack and delay are two names for the same quantity.
False. Delay () is time used by the logic; slack is time left over . A path can have huge delay yet positive slack if the period is generous.
Static Timing Analysis needs input test vectors to find the critical path.
False. STA is vectorless — it does graph math (arrival/required times over a DAG), independent of stimulus. That is why it covers all paths exhaustively where simulation would miss corner vectors.
A combinational loop can appear on a critical path.
False in a proper synchronous design. STA cuts loops at flip-flops, so the timing graph is a Directed Acyclic Graph; an uncut combinational loop is a design error, not a path to analyze.

Hold-time (min-delay) traps

Setup analysis uses the slowest path; hold analysis uses the fastest path.
True. Setup asks "does data arrive before the next edge?" (max delay). Hold asks "does new data arrive too soon after the same edge and corrupt the value being captured?" (min delay) — see Setup and Hold Time.
The hold constraint is .
True (with capture-clock skew on the right). Data must not change until at least after the capture edge, so the fastest path must be slow enough. Notice this check has no — hold is a same-edge race, independent of clock period.
A hold violation can be fixed by slowing the clock.
False. Since doesn't appear in the hold inequality, changing the period does nothing. Hold violations are fixed by adding delay (buffers) to the too-fast path or reducing skew — the opposite remedy to setup.
Capture-clock skew helps both setup and hold the same way.
False. A late capture clock () helps setup (bigger budget) but hurts hold (data must stay stable even longer), because moves to the demanding side of the hold inequality. This sign flip is the classic skew trap.
Hold slack is defined the same direction as setup slack.
Conceptually yes — slack available minus required — but the arithmetic differs: hold slack , i.e. actual arrival minus earliest-allowed. Positive still means it passes.

Spot the error

", so a clock period just needs to cover the slowest logic."
Wrong — it omits the flip-flop overheads. The correct floor is ; the launch clock-to-Q and the capture setup time both eat into the period.
"Slack ."
Sign and terms are wrong. Slack — it is required-minus-arrival, so a positive slack means the path passes, and the flip-flop overheads must be included.
"At a 3-input AND gate, arrival time = sum of the three input arrivals + gate delay."
Wrong operation. The output waits for the last input, so . Summing would grossly over-count and misidentify the critical path.
"Required Arrival Time is computed by the same forward pass as Arrival Time."
Wrong direction. AT (Arrival Time, the actual latest signal time) is a forward topological pass from launch points; RAT (Required Arrival Time, the latest allowed time) is a backward pass from endpoints using and . Slack RAT AT needs both directions.
"To meet timing we found the worst path; fixing only it closes the design."
Incomplete. Fixing the worst path promotes the runner-up to critical. You re-analyze and fix until the worst slack is non-negative across all endpoints.
"The critical path decides only that one register pair's speed, not the whole chip's."
Wrong scope. A single clock cannot tick faster than its slowest register-to-register path allows, so that one path caps the entire clock domain's frequency — see Maximum Clock Frequency.
"A path flagged over a multicycle exception must still meet timing in one period ."
Wrong. A multicycle path is deliberately told the tool it has, say, 2 clock periods to settle, so its budget becomes instead of . Applying the single-period constraint would wrongly flag it as critical.

Why questions

Why do we use max (not sum) of input arrivals at a gate?
Because a gate's output cannot be valid until its last input has settled; the latest-arriving input gates the output. This max-of-inputs rule is exactly what causes a single slowest path to emerge across the whole graph.
Why does the critical path set the clock period for even the fast paths?
All paths launch on the same clock edge and must finish before the next one. Like a relay race ending only when the slowest runner arrives, you cannot fire the next clock edge until the slowest path is safely captured.
Why does capture-clock skew appear as a + on the setup constraint's right side?
A later capture edge means the deadline arrives later, granting more time: . The extra is genuine slack donated to that path — but the same lateness subtracts from hold budget.
Why does STA model the netlist as a DAG rather than simulating?
A graph lets it compute worst-case arrival/required times over all paths in near-linear forward+backward passes, guaranteeing full coverage. Simulation would need an impossible set of vectors to hit every corner path.
Why does pipelining raise ?
Inserting a register splits one long combinational delay into two shorter stage delays, so the largest that the period must cover drops. Smaller means smaller hence higher frequency.
Why can two paths with equal logic delay have different slack?
Because slack also depends on the period and skew seen by that path's capture register. Different clock skews (or multicycle exceptions) change the budget side, so equal delay does not imply equal slack.
Why does an asynchronous clock-domain crossing not have a normal critical path?
Because the launch and capture clocks are unrelated, there is no fixed period- deadline for STA to check; the crossing is instead handled by synchronizers and metastability analysis, not by single-path setup slack. STA usually marks such paths as false/excluded.

Edge cases

What is the critical path if two register-to-register paths tie for the exact same worst slack?
Both are critical simultaneously — the design has no unique bottleneck, so any fix must improve both together, or one alone leaves the other still capping .
What happens to the setup constraint when (direct register-to-register wire)?
The period still cannot go to zero: remains, set purely by flip-flop overhead. This is the floor no amount of logic optimization can break — only faster flip-flops help.
Is there a critical path in a purely combinational circuit with no registers?
There is a longest-delay path (input-to-output), but no register-to-register setup critical path exists; timing is expressed as input-to-output delay against an external constraint, not against an internal clock edge.
What if slack is exactly zero on the critical path?
The path passes with no margin — it meets timing at the boundary. Any added skew jitter, temperature drift, or process variation can push it negative, so zero slack is technically passing but practically risky. See Clock Skew and Jitter.
Can negative skew (capture clock arriving earlier) create a critical path where none seemed to exist?
Yes. A negative subtracts from the budget side, tightening the setup deadline and shrinking every affected path's slack, potentially making a previously comfortable path the new critical one.
How should a multicycle path be treated when hunting the critical path?
With its relaxed budget ( for an -cycle path). Ignoring the exception makes the tool over-count its slack deficit and falsely crown it critical; honoring it may reveal the true single-cycle bottleneck elsewhere.

Recall One-line self-test before you leave

Q: In a single sentence, why is "most gates = critical path" wrong? A: Because critical means greatest summed delay, and a few slow, heavily-loaded gates can outweigh many fast ones — gate count is irrelevant.