⚙️ Synopsys Design Constraints Series

Timing Constraints (SDC) Handbook

Learn what an SDC file says and how to read one, free, right below. Then explore the 9 chapters: preview any of them, or buy the PDF for ₹29.

Practice 339 free STA interview questions Includes SDC, false paths, multicycle paths, and PrimeTime constraint checks →

SDC in plain terms: what the file says and why every tool reads it

An SDC file is a plain-text Tcl script that tells synthesis, place-and-route and timing tools what the design is supposed to achieve. Without it a tool can calculate delays, but it cannot know which paths matter, how fast the clock runs or when data arrives at the ports. With it, static timing analysis can check every path against a requirement.

The five things an SDC file defines

GroupWhat it tells the toolMain commands
ClocksWhere clocks start, how fast they run and how much margin they carrycreate_clock, create_generated_clock, set_clock_uncertainty, set_clock_latency, set_clock_transition
Port timingWhen data arrives at the inputs and when the outputs are neededset_input_delay, set_output_delay
EnvironmentWhat drives each input and what loads each outputset_driving_cell, set_load, set_input_transition
ExceptionsPaths that are not timed, or that get more than one cycleset_false_path, set_multicycle_path, set_max_delay, set_min_delay
Clock relationships and modesWhich clocks never interact, and which mode is activeset_clock_groups, set_case_analysis

A small example, line by line

create_clock -name CLK -period 2.0 -waveform {0 1.0} [get_ports clk]
set_clock_uncertainty -setup 0.10 [get_clocks CLK]
set_input_delay  0.6 -clock CLK [get_ports din*]
set_output_delay 0.5 -clock CLK [get_ports dout*]
set_driving_cell -lib_cell BUFX2 [get_ports din*]
set_load 0.05 [get_ports dout*]
set_false_path -from [get_ports rst_n]
set_multicycle_path 2 -setup -from [get_pins cfg_reg*/Q] -to [get_pins core/*/D]
set_multicycle_path 1 -hold  -from [get_pins cfg_reg*/Q] -to [get_pins core/*/D]
  • Line 1 creates a clock called CLK on port clk with a period of 2.0 and a waveform that rises at 0 and falls at 1.0. If the library time unit is nanoseconds, that is a 500 MHz clock.
  • Line 2 reserves 0.10 time units for jitter and margin on setup checks.
  • Lines 3 and 4 say data arrives 0.6 time units after the clock edge at the inputs, and that logic outside the chip needs 0.5 time units at the outputs, so the paths inside must finish early enough to leave it.
  • Lines 5 and 6 model a realistic driver on the inputs and a load on the outputs, so slews and delays at the boundary are not ideal.
  • Line 7 removes the reset path from timing. Only do this when the reset is handled elsewhere, for example by a synchroniser.
  • Lines 8 and 9 give a slow-changing configuration register two cycles for setup. The second line, the hold companion, moves the hold check back with it. Without it the tool keeps checking hold against an edge the data never uses, which creates a hold requirement that is almost impossible to meet.

Mistakes that cause most SDC problems

  • Time units. SDC numbers carry no unit. The tool reads them in the time unit of the library, so a file written for picoseconds and read as nanoseconds is wrong by a factor of a thousand.
  • A setup multicycle without its hold companion, as in the example above.
  • False paths written too broadly. Excluding everything from a whole clock hides real paths. Scope the exception to the exact start and end points.
  • Clocks that never reach their source. A generated clock whose master does not propagate to its source pin is not expanded, and the paths it should time end up unconstrained. Run a constraint check and review the unconstrained endpoints before trusting a clean report.
  • Different constraints at different stages. Synthesis, place-and-route and signoff should read one agreed source, not three copies that drift apart.

Keep going, free. Read What is an SDC file and what are basic timing constraints, or practise with the 339 free STA interview questions.

The nine chapters below go deeper, from clocks and port delays to exceptions and constraint management. Preview any chapter, or buy the PDF bundle.

70% OFF
Special Introductory Offer: ₹29 per Chapter (M.R.P: ₹99) · Or get Complete Library (₹1,237) →
Chapter 01 - SDC Fundamentals & Synthesis Basics
Chapter 01 ₹29 ₹99

SDC Fundamentals & Synthesis Basics

Foundations of Synopsys Design Constraints (SDC) syntax, unit specifications, netlist linking, and synthesis baseline setup.

  • SDC file structure & Tcl commands
  • Unit definitions (ns, pF, kOhm)
  • Reading netlists & linking libraries
  • Baseline constraints setup flow
Explore Chapter
Chapter 02 - Clock Constraints
Chapter 02 ₹29 ₹99

Clock Constraints

Creating primary clock definitions — period, duty cycle, clock latency, uncertainty, and jitter modeling in physical design.

  • create_clock command syntax
  • Clock latency (source vs network)
  • Clock uncertainty & jitter derates
  • Ideal vs propagated clock mode
Explore Chapter
Chapter 03 - Generated Clocks
Chapter 03 ₹29 ₹99

Generated Clocks

Defining generated clocks for frequency dividers, multipliers, phase shifters, and internal clock gating cells.

  • create_generated_clock syntax
  • -divide_by & -multiply_by options
  • Inverted & phase-shifted clocks
  • Clock gating cell pin targets
Explore Chapter
Chapter 04 - Clock Groups & Relationships
Chapter 04 ₹29 ₹99

Clock Groups & Relationships

Managing asynchronous and logically exclusive clock domains using `set_clock_groups` for clean CDC timing isolation.

  • set_clock_groups (-asynchronous)
  • Logically & physically exclusive clocks
  • Clock Domain Crossing (CDC) isolation
  • Multi-clock crosstalk coupling analysis
Explore Chapter
Chapter 05 - I/O and Port Delays
Chapter 05 ₹29 ₹99

I/O and Port Delays

Constraining input and output ports relative to external clock references, driver cell modeling, and capacitive loads.

  • set_input_delay (min/max setup & hold)
  • set_output_delay (min/max boundaries)
  • set_driving_cell & set_drive setup
  • set_load capacitive port loading
Explore Chapter
Chapter 06 - False Paths
Chapter 06 ₹29 ₹99

False Paths

Identifying and applying `set_false_path` exceptions for unconstrained paths, test mode logic, and static config signals.

  • set_false_path (-from, -to, -through)
  • Asynchronous reset & static signals
  • Test mode & scan chain path rules
  • Preventing over-constraining issues
Explore Chapter
Chapter 07 - Multicycle Paths
Chapter 07 ₹29 ₹99

Multicycle Paths

Relaxing setup and hold timing for multi-clock-cycle arithmetic pipelines, data enablers, and phase-shifted paths.

  • set_multicycle_path (-setup N)
  • set_multicycle_path (-hold N-1)
  • Data path vs clock path multipliers
  • Pipeline timing relaxation rules
Explore Chapter
Chapter 08 - Combinational & Modal Analysis
Chapter 08 ₹29 ₹99

Combinational & Modal Analysis

Point-to-point delay constraints (`set_max_delay`/`set_min_delay`), case analysis (`set_case_analysis`), and mode switching.

  • set_max_delay & set_min_delay rules
  • set_case_analysis for test/func mode
  • Disable timing arcs (set_disable_timing)
  • Operational mode selection setup
Explore Chapter
Chapter 09 - Managing Constraints & Miscellaneous SDC
Chapter 09 ₹29 ₹99

Managing Constraints & Miscellaneous SDC

Constraint validation, SDC linting, operating conditions (`set_operating_conditions`), and signoff quality handoff checks.

  • SDC constraint validation & linting
  • Operating conditions & PVT corners
  • Wire load mode specifications
  • Synthesis-to-signoff SDC checklist
Explore Chapter

📖 SDC Constraints Architecture

Synopsys Design Constraints (SDC) Architecture & Methodology

Timing constraints are the contract between digital RTL design, logic synthesis, physical implementation (PnR), and signoff timing verification. Writing correct, minimal, and unambiguous SDC ensures that EDA tools optimize real physical bottlenecks without wasting die area and routing resources on false CDC paths or missing critical boundary interfaces.

🔬 What This Collection Covers

  • Clock Modeling: Primary clocks (create_clock), generated clocks with division/multiplication factors (create_generated_clock), and virtual clocks for board timing.
  • Clock Relationships: set_clock_groups with -asynchronous, -logically_exclusive, and -physically_exclusive options.
  • I/O Port Constraints: Source and destination budgets with set_input_delay, set_output_delay, and driving cell modeling (set_driving_cell).
  • Timing Exceptions: Safe false paths (set_false_path), multi-cycle path budgeting (set_multicycle_path), and maximum delay overrides.

🛠️ Who This Handbook Is For

  • ASIC RTL & Synthesis Engineers: Generating initial SDC files for Synopsys Design Compiler or Cadence Genus without unconstrained clocks.
  • Physical Design Engineers: Debugging pre-CTS setup failures, managing CTS uncertainty budgets, and applying post-CTS propagated clock commands.
  • Signoff Leads: Running SDC linting audits (check_timing), eliminating exception conflicts, and preparing signoff constraint packages for tapeout.
  • VLSI Interview Candidates: Master core constraint questions on generated clock edges, multicycle hold formulas, and clock grouping rules.

🎯 What's Included in the 9-Chapter Bundle

All 9 chapters come with copy-pasteable SDC command examples, timing path waveform diagrams, and practical checklists for synthesis through tapeout. Get the complete 9-chapter SDC bundle for ₹179 or explore individual chapters below for ₹29 each.

Explore All 8 Collections (₹1,237) →