Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutRoadmapCareersInternshipsFAQContactPrivacyTerms
Skip to lesson

Course contents

  • Logic Synthesis Glossary
  • Logic Synthesis Cheatsheet
  • Synthesis Foundations14
  • Logic Optimisation and Mapping20
  • Constraints and Timing15
    • SDC for Synthesis
      • Clocks and Generated Clocks
      • Uncertainty, Latency and IO Delays
      • Driving Cells, Loads and Units
      • False, Multicycle and Max-Delay Paths
      • Missing and Over-Tight Constraints
    • Delay Models and Slack
    • Timing-Driven Synthesis
  • Sequential, FSM and Memory19
  • Datapath Synthesis14
  • Area, Power and Test14
  • Verification, ECO and Handoff15
  • Flows and Debugging15
  • Interview and Judgment11
Loading lesson

←Constraints and Timing
  1. Topics
  2. Logic Synthesis
  3. Constraints and Timing
  4. SDC for Synthesis
On this page

    Part 3 of 9Part 3 of 9/Constraints and TimingIntermediate

    SDC for Synthesis

    Clocks, IO delays, and exceptions: the constraints synthesis needs.

    • 5topics
    • 5lessons

    Synthesis optimises against the constraints it is given, so a missing, wrong-unit, or over-tight constraint misleads the tool more quietly than any RTL bug. Without seeing clocks, IO budgets, drive and load, and exceptions as one target, each report looks like a fact instead of a consequence.

    After this lesson you can: name what each constraint contributes to the target, tell a recorded number from a hand-derived one at a glance, and predict which constraint to blame when area or delay moves.

    Synthesis optimises against the constraints it is given: clocks set the target, input and output delays bound the IO paths, drive and load bound the port edges, and exceptions mark the paths that play by different rules. A missing constraint leaves its paths without a target, and an over-tight one spends area chasing a fiction. This topic rebuilds each of those ideas as a recorded run plus hand-derived arithmetic, with every number labelled by where it came from.

    Constraint

    What it tells the tool

    create_clock

    The clock name and its EXAMPLE period, which sets the timing target.

    Uncertainty and latency

    Margin for skew and jitter, and the delay from the source to the flop clock pin.

    set_input_delay, set_output_delay

    How much of the period the outside world already consumes on each IO path.

    set_driving_cell, set_load

    The drive behind each input and the capacitance on each output.

    Exceptions

    False paths, multicycle paths, case analysis and maximum-delay bounds.

    Order in which constraints build the synthesis target.
    Constraints build the target in order: clocks first, then IO bounds, then exceptions.

    What you can do after this topic

    • Write a correct create_clock and create_generated_clock pair, naming the master source pin and the divided register pin.

    • Split a clock period into IO budgets with uncertainty, latency, clock-to-Q and setup in their right places.

    • Map set_driving_cell and set_load onto real constraint lines, converting library picofarads to tool femtofarads.

    • State the standard multicycle hold pairing, and tell a false path from a multicycle from a max-delay bound.

    • Spot a missing constraint mechanically and recognise an over-tight target from its area-against-delay plateau.

    Lessons

    Lesson

    What it covers

    Clocks and Generated Clocks

    A recorded divide-by-2 register, correct generated-clock SDC, and ideal against propagated clocks.

    Uncertainty, Latency and IO Delays

    Uncertainty against latency and the three IO budgets with hand-derived timing bars.

    Driving Cells, Loads and Units

    One cone under two recorded loads, the drive and load lines, and the picofarad trap.

    False, Multicycle and Max-Delay Paths

    Standard hold pairing with an edge model, and which exception fits which path.

    Missing and Over-Tight Constraints

    A recorded loose-to-past-the-wall sweep, a coverage checker, and a slack table.

    Check yourself What happens to a path with no clock or IO constraint covering it?

    Nothing is reported for it: the tool cannot time a path it was given no target for, so it is optimised without one. Unconstrained paths are a closure risk, not a timing win. In a commercial flow check_timing, or report_checks -unconstrained, lists them; not run here.

    Name the constraint behind a surprise: a plateaued delay, an empty report, a rebuilt output stage, or a moved hold edge, and say which lesson owns it.

    • Clocks set the EXAMPLE period; IO delays, uncertainty, drive and load spend it; exceptions change the rules for named paths.

    • Recorded numbers come from Yosys and ABC runs; hand-derived arithmetic comes from stated EXAMPLE parameters, labelled each time.

    • Missing constraints report nothing and over-tight ones plateau: read coverage first, then the area-against-delay shape.

    Rule of thumb: ask where every number came from before arguing about it: recorded or hand-derived, and which constraint it answers to.

    How this was checked

    This hub runs nothing; its flowchart is a drawing of the lesson structure. The evidence for each claim sits on the five lesson pages, each recorded with Yosys 0.70 and ABC and listed in that page's frame.

    • Interview: run a mock interview on this topic

    Related topics

    • Up: Constraints and Timing

    • Next: Delay Models and Slack

    • See also: STA Foundations

    PreviousNext: Clocks and Generated Clocks

    Up next

    Up nextClocks and Generated Clocks

    Sign in to save progress

    Practice this lessonPrevious lessonReport an error

    See also

    • Delay Models and Slack
    • Timing-Driven Synthesis