Feature · Constraint Interactions

Catch constraints that fight each other

When two constraints overlap on the same objects, one of them silently wins. Ṛta finds duplicates, overrides, contradictions and overlaps, then shows you the exact two lines involved.

In plain words

What does "constraint interactions" mean?

SDC files grow by merging: branches, engineers, IP. Two constraints can end up targeting the same path with different intentions. STA resolves these quietly (usually "last one wins"), which may not be what you meant.

Duplicate

The same exception applied twice on identical endpoints. Redundant, usually copy-paste from merged branches.

Override

A later constraint silently replaces an earlier one with a different value on the same objects and analysis type. Setup and hold are distinct types — a hold uncertainty is never mistaken for an overridden setup.

Contradiction

Two exceptions that cannot both hold, e.g. a false path and a multicycle on identical endpoints. Provable without running STA.

Overlap (review)

Object sets partially overlap. Not provably wrong, but it needs a human STA decision. Reported as review, never falsely called a contradiction.

Real-world example

The false path that was also a multicycle

Line 12 sets a false path from a to b. Line 38 sets a multicycle of 2 on the same path. A path cannot be both fully false and timed with 2 cycles. One of these is a mistake, probably a stale line from an old branch.

With Ṛta: the contradiction is flagged with both line numbers and the exact conflict, so the review takes seconds, not archaeology.
Dual-line provenance: every conflict points to both constraints and both source lines.
L12 · set_false_path -from [get_ports a] -to [get_ports b] L38 · set_multicycle_path 2 -from [get_ports a] -to [get_ports b] ✗ SDC-069 false path vs multicycle identical endpoints - cannot both hold ▲ SDC-070 partial overlap L20/L44 object sets intersect - STA review needed

Silent resolution ends

STA's "last one wins" is now visible before it bites you at signoff.

Stable finding identity

Findings diff cleanly across baselines, so you can track a conflict being resolved.

Severity is honest

Provable contradictions are errors; partial overlaps are review items. Never overclaimed.

Try it

Find your constraint conflicts

Interaction analysis
$ rta check your_block.sdc --verbose
# interaction findings are part of every check run