Tool · Diff

See what changed in meaning, not lines

Compare two SDC versions and see what actually changed: values, added or removed constraints, wildcard drift. A reformat and a real regression no longer look the same.

In plain words

What does "semantic diff" mean?

A normal diff shows which lines changed. A semantic diff shows which constraints changed meaning. TCL variables are resolved, wildcards are compared, and cosmetic moves are ignored, so the diff answers "did anything important change?"

Value changes

Period, delay, uncertainty, derate: a numeric change on the same constraint is the highest-signal diff.

Object drift

A wildcard that now matches different objects after a netlist change: silent scope creep, now visible.

Added / removed

New constraints, deleted constraints, and what deleting one implies for coverage.

Cosmetic no-ops

Reformatting, reordering, comment changes: resolved and ignored so they don't alarm.

Real-world example

Two versions, one glance

A branch changes the clock period from 10.0 to 8.0 and quietly removes an input delay. The text diff shows dozens of changed lines; the semantic diff shows exactly two meaningful changes, each with both source lines.

$ rta diff design_v1.sdc design_v2.sdc ▲ CHG-VAL clk period 10.0 → 8.0 (L5 → L5) ▲ CHG-ADD set_clock_groups -asynchronous (L31) ✗ CHG-DEL set_input_delay on data_in[7:0] (L12) ✓ 4 cosmetic changes ignored (reformat only)

Try it

Diff your versions

Semantic diff
$ rta diff design_v1.sdc design_v2.sdc
$ rta report diff design_v1.sdc design_v2.sdc -o diff.html