-
Notifications
You must be signed in to change notification settings - Fork 0
Design Constraints
泽宇黄 edited this page Aug 2, 2026
·
1 revision
Design constraints define the timing, electrical, and operating requirements the implementation flow must honor to produce a correct, performant, and manufacturable design. Constraints are captured in Synopsys Design Constraint (SDC) format and consumed by synthesis, place-and-route, CTS, and signoff STA.
- Define target operating frequencies and clock relationships
- Specify I/O timing at the block and chip boundary
- Model realistic operating conditions (PVT, RC corners)
- Communicate design intent (exceptions, exclusions) to EDA tools
- Provide a single source of truth reused across synthesis, PnR, and signoff
- Clock definitions — primary clocks, generated clocks, virtual clocks, clock groups
- Clock uncertainty — jitter, skew, and margin budgets pre- and post-CTS
-
I/O constraints —
input_delay/output_delayreferenced to boundary clocks -
Driving cells and loads —
set_driving_cell,set_loadto model off-chip environment - Timing exceptions — false paths, multicycle paths, min/max delay overrides
- Case analysis — mode configuration for test, scan, and functional views
-
Design rule constraints —
set_max_transition,set_max_capacitance,set_max_fanout - Operating conditions — PVT corners, derating (OCV/AOCV/POCV)
constraints/
├── common/
│ ├── clocks.sdc # clock creation, groups, uncertainty
│ ├── io.sdc # boundary I/O delays and loads
│ └── exceptions.sdc # false paths, multicycle paths
├── modes/
│ ├── func.sdc # functional mode case analysis
│ ├── scan.sdc # scan-shift mode
│ └── atspeed.sdc # at-speed capture mode
└── top.sdc # sources the above for the target block
Each block owns its own top.sdc; shared collateral lives under common/ and is version-controlled with the RTL.
RTL + SDC
↓
Synthesis (Genus) ← pre-CTS uncertainty, ideal clocks
↓
Floorplan / Placement ← same SDC, propagated clocks off
↓
Clock Tree Synthesis ← switch to propagated clocks
↓
Routing / Post-Route Opt ← post-CTS uncertainty, real RC
↓
Signoff STA (Tempus / PT) ← multi-mode multi-corner (MMMC)
- Create every clock explicitly; never rely on inferred clocks
- Group asynchronous clocks with
set_clock_groups -asynchronous - Reference I/O delays to the same clock that launches or captures the signal
- Prefer
set_multicycle_pathoverset_false_pathwhen a real timing relationship exists - Keep exceptions narrow — scope by
-from,-to,-throughwith specific pins - Comment every exception with the reason and the reviewing engineer
- Lint constraints with
check_timingandreport_exceptionsbefore handoff
- SDC lint (
check_timing,report_disable_timing) must be clean before PnR - Constraint diffs are reviewed alongside RTL changes
- MMMC scenarios are locked prior to signoff; any late change requires PD lead approval
- Final constraints are archived with the tapeout database