How do you tell whether a timing exception actually matched the path you intended?
From PDVerse STA Mentor Guide · pdVerse Mentor Guide
Short Answer
report_exceptions (PT) lists every exception-setting command and flags each one with a letter code when part or all of it was ignored - f for an invalid startpoint, t for an invalid endpoint, p for a non-existent path, and o for a path overridden by a higher-priority exception. A command that is fully ignored does not show up in the default report at all; report_exceptions -ignored (PT) is what surfaces those completely silent failures.
Technical Explanation
- Exception commands can be partially ignored, fully ignored, or fully enforced, and the report distinguishes all three.
report_exceptions(PT) by default shows commands that are fully valid or only partially ignored - a command that is completely overridden by something else does not appear unless you ask for it. report_exceptions -ignored(PT) is the option that surfaces fully-ignored commands. Without it, aset_multicycle_pathorset_false_path(SDC) command that was entirely overridden by a higher-priority exception looks like it was never even written.- The letter codes in the "Ignored" column say exactly why.
fmeans an invalid startpoint,tan invalid endpoint,pa non-existent path between the named points, andoa path overridden by another exception command with higher priority. - A command naming several paths can be partially valid and partially ignored at once. If one command names three
-fromobjects to the same-topoint, one of those three sub-paths might be overridden, one might be genuinely invalid, and the remaining one enforced - all three outcomes reported on the same line. report_exceptionsforces a full timing update before it runs. Because resolving which exceptions actually win requires the tool to have already worked out path validity and priority, it is best run only after every exception in the script has been applied.report_timing -exceptions dominantor-exceptions overridden(PT) gives the same kind of answer for one specific path instead of the whole exception list. It is the better tool when you already know which single path you are worried about, rather than auditing the whole SDC.
Common Mistake
- Running
report_exceptionswithout-ignoredand concluding that every exception command in the SDC took effect somewhere, because none of them appeared with an ignored flag. - A command that is completely overridden by a higher-priority exception is invisible in the default report - it is not shown as ignored, it is simply not shown at all.
- Cost: an exception the author believed was protecting a path is actually doing nothing, and the omission is only found once a real timing failure on that path surfaces much later.
Follow-up Question & Model Response
A set_multicycle_path 2 -from {A B C} -to D command shows up in report_exceptions with an "Ignored" code of f,o on the {A B C} entry. What does that combination of codes actually mean, and which sub-paths, if any, are still enforced?
Candidate Model Response: The combined code means at least two different problems affect the sub-paths this one command was trying to set: o means one of the named startpoints has a path to D that is overridden by a higher-priority exception command, and f means a different named startpoint is not a valid startpoint for any path to D at all. With three startpoints named in one command, this is very likely a per-startpoint breakdown - one is overridden, one is invalid, and by elimination the third is neither, meaning it is the one sub-path this command is actually still enforcing. I would follow up with report_exceptions -ignored filtered to this exact -from/-to pair to see the breakdown startpoint by startpoint instead of guessing from the combined codes.
Practical Example
A design has a false path from port A to port D, set with set_false_path -from A -to D (SDC), and two attempts to also set a multicycle path over some of the same ground: set_multicycle_path 2 -from A -to D (SDC) and set_multicycle_path 2 -from {A B C} -to D (SDC), where C turns out not to be a valid startpoint for any path to D at all. report_exceptions (PT) without -ignored shows only the third command, flagged f,o because its A-to-D piece is overridden and its C-to-D piece is invalid, leaving only its B-to-D piece enforced. The second command - fully overridden by the false path - does not appear at all until report_exceptions -ignored (PT) is run, which is the only way to discover it was ever silently discarded.
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