What does the -nworst option on report_timing show you that the default report does not?
From PDVerse STA Mentor Guide · pdVerse Mentor Guide
Short Answer
By default report_timing (PT) prints only the single worst path for the endpoints it is scoped to, which hides every other path that is also close to failing. -nworst N (PT) reports the N worst paths per endpoint instead of one, so a designer can see whether a violation is an isolated path or the tip of a cluster of similar failures.
Technical Explanation
report_timing(PT) normally reports one path, the single worst slack it finds for the scope given, whether a from/to pin pair, a clock, or the whole design.report_timing -nworst 5(PT) instead lists the five worst paths at each endpoint, ranked by slack, in the same report.- This distinguishes a true one-off outlier, one bad path with everything else comfortably positive, from a systemic issue where many paths sit at similar, small negative slack.
- A cluster of similar-slack violations usually points to a shared cause, a derate setting, a clock uncertainty value, or a library cell used repeatedly, rather than one bad instance.
- Fixing the single worst path when
-nworstwould have shown nine more paths at nearly the same slack wastes an ECO cycle, since the next report just surfaces the next path in the cluster. -nworstcan be combined with-delay_type min(PT) to see the worst cluster of hold checks the same way, not just setup.
Common Mistake
The Trap: Reading the single default worst path, fixing it, and declaring the check clean without asking whether other paths were close behind it.
- Each new report only reveals the next path in line, turning what should have been one investigation into several separate ECO rounds.
Follow-up Question & Model Response
If nworst reveals nine similar violations instead of one, how does that change the fix strategy compared to a single outlier?
Candidate Model Response: A single outlier is usually fixed locally, sizing or buffering the one path involved, because the rest of the design is not affected by whatever caused it. Nine similar violations point to a shared root cause, so the fix should target that cause directly, for example a derate setting, a clock uncertainty value, or a commonly reused library cell, rather than touching nine separate paths individually. Fixing the shared cause once is both faster and less likely to introduce a new violation elsewhere, compared to nine separate local ECOs. The nworst report is what tells the designer which strategy applies before any fix begins.
Practical Example
report_timing -nworst 10 -delay_type max (PT) on the arithmetic unit shows ten paths all failing setup by roughly -15ps to -20ps, all ending at the same multiplier's input registers. Instead of buffering ten separate paths, the team traces the shared cause to an overly conservative clock uncertainty value on that flop group and adjusts it once with set_clock_uncertainty (SDC), clearing all ten paths in the next report.
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