synthesis constraints
**Synthesis Constraints and Strategy** is the **methodology of specifying timing, area, and power objectives to the logic synthesis tool and guiding its optimization algorithms to produce a netlist that best meets design goals** — the art and science of bridging RTL intent and physical implementation requirements through a precisely crafted set of SDC (Synopsys Design Constraints) commands, effort settings, and tool-specific directives. Synthesis quality — measured in timing slack, area, and power — is largely determined by constraint quality and strategy choices before any physical design begins.
**Why Synthesis Constraints Matter**
- Synthesis tool (DC, Genus) cannot know design intent without constraints.
- Without constraints: Optimizer may meet timing but use 3× area, or minimize area but miss timing by 20%.
- Wrong constraints: Over-constrained → unnecessary complexity, slow runtime; under-constrained → fails timing in P&R.
- Goal: Constraints that accurately model physical implementation environment → synthesis produces a netlist that closes in P&R.
**Core SDC Constraints**
**1. Clock Definition**
```
create_clock -period 1.0 -name CLK [get_ports CLK]
set_clock_uncertainty -setup 0.1 [get_clocks CLK]
set_clock_transition 0.05 [get_clocks CLK]
```
- Period = 1/target_frequency; uncertainty = PLL jitter + skew budget; transition = expected clock slew.
**2. I/O Timing**
```
set_input_delay -max 0.3 -clock CLK [get_ports {DIN*}]
set_output_delay -max 0.4 -clock CLK [get_ports {DOUT*}]
```
- Models the delay budget consumed by logic outside this block.
**3. False and Multicycle Paths**
```
set_false_path -from [get_clocks CLK_A] -to [get_clocks CLK_B]
set_multicycle_path 2 -setup -from [get_cells slow_reg] -to [get_cells out_reg]
```
- False path: No timing constraint (CDC path, test-mode path).
- Multicycle: Logic allowed to use N clock cycles → relaxes setup constraint.
**4. Operating Conditions**
```
set_operating_conditions -library slow_1v08_m40c slow
set_wire_load_model -name wlm_10k [current_design]
```
- Sets process corner; wire load model estimates interconnect before P&R.
**Synthesis Effort and Strategy**
| Setting | Description | Use |
|---------|------------|-----|
| compile_ultra | Maximum optimization effort | Timing-critical paths |
| compile -incremental | Refine existing netlist | Post-ECO synthesis |
| -area_high_effort_script | Maximize area reduction | Area-constrained blocks |
| -timing_high_effort_script | Maximum timing optimization | Sub-1ps slack closure |
| -scan_insertion | Add scan chains for DFT | All production designs |
**Timing-Driven Synthesis**
- Synthesis engine performs: Logic restructuring, gate sizing, buffer insertion, retiming.
- **Retiming**: Move FFs across combinational logic to balance stage delays → achieve same function with better timing.
- **Gate sizing**: Increase drive strength of cells on critical paths → reduce delay (at area/power cost).
- **Cloning**: Duplicate high-fanout cells → reduce fanout → reduce delay on fanout paths.
**Area vs. Speed Tradeoff**
- `-map_effort medium` → balanced area and timing (default).
- `-map_effort high` → prioritize timing → larger area (more complex logic structures).
- `-area_effort high` → prioritize area → may miss timing on marginal paths.
- Common strategy: First pass high effort for timing → area cleanup pass → DFT insertion.
**Wire Load Model (Pre-P&R)**
- Pre-P&R synthesis cannot know actual wire lengths → uses statistical wire load model.
- WLM: Estimates wire capacitance based on fanout and design size → inaccurate but better than nothing.
- Modern approach: Physical synthesis (Synopsys DC-Graphical, Cadence Genus) estimates wire load from floorplan → much more accurate.
**Post-Synthesis Validation**
- Lint: Check RTL coding quality, reset coverage, CDC.
- Equivalence check (LEC): Verify synthesized netlist is logically equivalent to RTL.
- Timing: Check setup/hold on all register-to-register paths → no violations.
- Power: Estimate dynamic and leakage power → adjust if over budget.
Synthesis constraints and strategy is **the art form that determines how much of a design's theoretical performance potential is captured in silicon** — a synthesis engineer who understands the physical flow, writes accurate constraints, and applies the right optimization strategy routinely delivers 10–20% better PPA than engineers who apply default settings, making constraint expertise one of the highest-value skills in the front-end design flow where circuit architecture meets implementation reality.