How do you find every timing exception in a design that PrimeTime silently ignored because a higher-priority exception overrode it on the same path?
From PDVerse STA Mentor Guide ยท pdVerse Mentor Guide
Short Answer
report_exceptions -ignored (PT) lists every exception command the tool computed but did not apply, because a higher-priority exception โ by type or by specificity โ already governed that path. Running it across the whole design after every exception file is loaded is the only systematic way to catch an exception that was accepted by the SDC parser but never actually took effect on any path.
Technical Explanation
report_exceptions -ignored(PT) reports exceptions that lost a precedence conflict, whether the conflict was decided by exception-type priority (false path over max delay over multicycle) or by path-specification priority (pin beats clock, more-from/-tospecificity beats less).- An exception can be entirely ignored, meaning every path it might have matched is instead governed by something else, or partially ignored, still applying to some paths just not the ones a more specific or higher-priority command also covers โ the report distinguishes these cases per path.
- Because the SDC parser accepts a syntactically valid exception whether or not it ever actually governs a path, there is no error or warning at load time for an exception that turns out to be fully shadowed by another command.
- Running the report requires a full timing update first, since exception resolution is computed as part of timing analysis, not at parse time โ this makes the check relatively expensive to run casually, so it belongs at defined checkpoints, post-SDC-review and pre-signoff, rather than after every edit.
- Scoping the report with
-from,-to, or-througharguments matching the exception under review narrows the output to just the paths that command was intended to cover, which is far faster to interpret than the full-design report on a large SoC. - The report is especially valuable after SDC changes made by someone other than the original author, since an inherited constraint file can carry exceptions whose intent nobody remembers, and only this report shows which ones are actually doing anything.
- What breaks if this check is skipped entirely: constraint files accumulate exceptions that look intentional and reviewed but have been dead, fully overridden, for years, giving false confidence that a relaxation or exclusion is in effect when it never has been.
Common Mistake
The Trap: Treating a clean SDC load, with no parser errors, as proof that every exception in the file is actually doing something in the timing analysis.
- SDC review typically checks that syntax is valid and objects resolve, not whether each exception actually wins its precedence conflict against every other exception in the file.
- An engineer who inherited a large constraint file can spend real effort defending an exception's correctness in review, without realizing
report_exceptions -ignoredwould show it has never once applied to a real path.
Follow-up Question & Model Response
"Should this check run on every regression, or only at specific points in the flow?"
Candidate Model Response: Because it requires a full timing update and produces a report sized to the whole exception set, it is better run at defined checkpoints โ after a significant SDC change, before each signoff milestone โ rather than on every incremental regression where the runtime cost outweighs the benefit. At those checkpoints, diff the ignored-exception list against the previous checkpoint's list, since a newly-ignored exception that used to be active is a much stronger signal of an unintended interaction than the long-standing, already-reviewed entries that show up every time.
Practical Example
A block-level SDC accumulated over three tapeouts contains 40 set_false_path and set_multicycle_path commands. report_exceptions -ignored after a full timing update shows six of them fully ignored โ four shadowed by a broader false-path command added two years earlier, and two multicycle exceptions overridden by a max-delay command from a different engineer's later edit. Two of the six turned out to be genuinely dead and were removed; the other four revealed that the broader false-path command was unintentionally too wide, and narrowing its -through scope restored the four narrower exceptions to active use.
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