When must you force a full timing update with update_timing -full instead of trusting the incremental one?
From PDVerse STA Mentor Guide · pdVerse Mentor Guide
Short Answer
PrimeTime normally re-times only the parts of the design that changed since the last update, which is fast but relies on the tool correctly tracking every dependency. update_timing -full (PT) throws away that incremental state and recomputes timing for the entire design from scratch, which is the safer choice after a change the incremental engine might not fully track, such as a library swap or certain low-level scripted edits.
Technical Explanation
- After the first
update_timing(PT) call, PrimeTime tracks which cells, nets, and constraints changed and limits later updates to just the affected fan-in and fan-out cones. - This incremental behavior is what makes an interactive PrimeTime session fast enough to explore many small edits without a full recompute after every one.
- Some changes are outside what the incremental tracking is designed to catch, for example replacing a Liberty library file, editing derate tables directly, or applying certain low-level attributes rather than a supported command.
update_timing -full(PT) forces a complete recompute, ignoring whatever incremental state exists, which is slower but removes any doubt about whether every change was actually picked up.- Running
update_timing -full(PT) at least once before any timing report used for a real signoff decision is recommended, since incremental drift is hard to detect from the outside. - Skipping this before a signoff report risks a report that looks clean only because a change never actually got applied to the numbers, not because the design is really clean.
Common Mistake
The Trap: Trusting the fast incremental update after swapping a library file or applying a low-level attribute edit, and signing off on the resulting report.
- If the incremental engine missed part of the change, the report reflects a mix of old and new data with no visible sign that anything is wrong.
Follow-up Question & Model Response
If update_timing -full is safer, why doesn't PrimeTime just run it after every change by default?
Candidate Model Response: A full recompute re-times every path in the design, a cost that scales with the whole netlist rather than the size of the actual edit, so running it after every small script command would make interactive debugging painfully slow on a large design. Incremental updates are correct for the overwhelming majority of changes PrimeTime is designed to track, such as ordinary SDC edits and ECO commands, so the fast path is the right default. The full update exists specifically for the smaller set of changes where the incremental engine's assumptions do not hold. Reserving -full for signoff checkpoints and library or attribute changes keeps both speed and correctness where each is needed.
Practical Example
A team swaps in a corrected Liberty library file mid-session to fix a bad cell arc, then reruns report_timing (PT) and sees an unchanged slack number on a path that uses that exact cell. Running update_timing -full (PT) afterward recomputes the path with the corrected arc and the slack shifts by 40ps, confirming the earlier report had been using stale, incrementally-tracked data.
Complete STA Handbook
Master Signoff-Ready Static Timing Analysis
Get the complete 10-chapter STA handbook covering setup/hold margins, clock modeling, OCV/POCV, crosstalk noise, and PrimeTime closure.

Continue practising