IntermediateQuestion 102 of 112Source: Synopsys PrimeTime User Guide: Reporting Timing Exceptions

How do you find out that a false path or multicycle exception never matched any real path?

From PDVerse STA Mentor Guide · pdVerse Mentor Guide

Short Answer

Writing set_false_path or set_multicycle_path (SDC) with a typo in a pin, instance, or clock name does not raise an error, PrimeTime simply applies the exception to zero paths and stays silent. report_exceptions -ignored (PT) lists every exception in the design that matched nothing, which is the only reliable way to catch this before it hides a real violation.

Technical Reference DiagramHow do you find out that a false path or multicycle exception never matched any real path?
Before and after netlist diagram showing an instance U_SCANMUX_12 referenced by a set_false_path exception being merged away during synthesis, leaving the exception matching zero paths.

Technical Explanation

  • SDC exception commands accept object lists built with get_pins, get_cells, or get_clocks (SDC), and an empty or wrong object list is valid Tcl, the command just runs with nothing to act on.
  • report_exceptions (PT) on its own lists every active exception and, for most of them, the paths it actually covers.
  • report_exceptions -ignored (PT) narrows the list to exceptions that PrimeTime accepted syntactically but that ended up covering zero real paths in the current design.
  • An exception can go from matching real paths to matching nothing after a netlist change, a rename during synthesis, or an RTL restructure, even if the SDC file itself never changed.
  • Because an ignored exception produces no warning by default, a path meant to be excluded stays fully checked, or a path meant to be relaxed to a multicycle still uses a single-cycle check, either way the report is silently different from what the designer intended.
  • Running report_exceptions -ignored (PT) after any constraint or netlist change is the direct way to confirm every intended exception is still doing its job.

Common Mistake

The Trap: Assuming an exception is working simply because PrimeTime accepted the SDC line without printing an error.

  • A silently ignored exception can leave a path checked, or unchecked, the opposite of what was intended, and the mistake surfaces only as a mysterious slack change or a violation nobody expected.

Follow-up Question & Model Response

Why would an exception that worked correctly for months suddenly show up in the ignored list after an unrelated RTL change?

Candidate Model Response: SDC exceptions written with get_pins or get_cells (SDC) usually reference object names from a specific netlist, and synthesis can rename or restructure logic when even a small piece of unrelated RTL changes upstream of it. If the renamed or removed instance was the one the exception's object list pointed to, the exception now matches nothing, even though the SDC text is untouched. This is why exceptions written against exact instance names are more fragile than ones written against a clock or a stable hierarchical pin. Re-running report_exceptions -ignored (PT) after any resynthesis catches this before it reaches signoff.

Practical Example

After a synthesis rerun, report_exceptions -ignored (PT) flags a set_false_path -through (SDC) exception that used to exclude a scan-mux bypass path. The instance name it referenced, U_SCANMUX_12, was merged into a different cell during optimization, so the exception now covers zero paths and the bypass path is back under full setup and hold checking, exposing a violation the team thought had been excluded years earlier.

Complete STA Handbook

Get the complete 10-chapter STA handbook covering setup/hold margins, clock modeling, OCV/POCV, crosstalk noise, and PrimeTime closure.

Timing Constraints (SDC) Handbook — nine chaptersSDC ConstraintsNine chapters on clocks, exceptions, and constraint linting. →