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

AboutContactPrivacyTerms
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

‹SDC for Synthesis
  1. Topics
  2. Logic Synthesis
  3. Constraints and Timing
  4. SDC for Synthesis
  5. Missing and Over-Tight Constraints

Part 3 · Constraints and Timing · Intermediate

Missing and Over-Tight Constraints

Unconstrained paths, over-constraining, and a tiny SDC subset checker.

On this page

    Unconstrained paths

    A path with no clock or IO constraint covering it is unconstrained. The tool optimises it without a target, which is a closure risk rather than a timing win.

    Common causes are a missing clock, missing input or output delays, and exceptions that silently remove paths. Coverage of constraints matters as much as their values.

    Over-constraining

    Over-constraining states a target tighter than the real requirement, such as a shorter EXAMPLE period. The tool spends area and power chasing a fiction.

    The spend can also hurt the true paths by pushing the tool into structures that serve the false target. Margin belongs where variation is real, and it is revisited in timing-driven synthesis.

    A tiny constraint checker

    The program below parses a small SDC subset: create_clock lines and set_input_delay lines. It reports which input ports of a port list have no input delay.

    Its three self-checks pin the parsed clock, the constrained ports, and the missing ports. The port list and the SDC lines are fixed parameters of the program.

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    import sys
    
    SDC = [
        "create_clock -name CLK -period 10.0 [get_ports clk]",
        "set_input_delay -clock CLK 3.0 [get_ports req]",
        "set_input_delay -clock CLK 3.0 [get_ports data]",
    ]
    
    PORTS = ["req", "data", "ack", "valid"]
    
    def ports_in(line):
        start = line.find("[get_ports ")
        if start < 0:
            return []
        inner = line[start + len("[get_ports "):]
        end = inner.find("]")
        if end < 0:
            return []
        return inner[:end].split()
    
    clocks = {}
    constrained = set()
    for line in SDC:
        text = line.strip()
        if text.startswith("create_clock"):
            parts = text.split()
            name = parts[parts.index("-name") + 1]
            period = float(parts[parts.index("-period") + 1])
            clocks[name] = period
        if text.startswith("set_input_delay"):
            for p in ports_in(text):
                constrained.add(p)
    
    missing = [p for p in PORTS if p not in constrained]
    
    if clocks != {"CLK": 10.0}:
        print("FAIL: clocks parsed as " + str(clocks))
        sys.exit(1)
    if sorted(constrained) != ["data", "req"]:
        print("FAIL: constrained parsed as " + str(sorted(constrained)))
        sys.exit(1)
    if missing != ["ack", "valid"]:
        print("FAIL: missing parsed as " + str(missing))
        sys.exit(1)
    
    print("PASS: 2 of 4 input ports lack an input delay: ack and valid")

    Symptom

    Cause

    Fix

    Unconstrained paths

    Missing clock, IO delay, or an over-wide exception

    Add the missing bound; narrow the exception.

    Worse area, same real slack

    Target tighter than the requirement

    Constrain the real target; move margin to variation.

    Silent stale exceptions

    RTL changed under old constraints

    Re-check exceptions after each RTL change.

    Common pitfall

    An over-wide false path and a missing input delay fail in opposite directions: one hides a real path, the other leaves a path targetless. Both pass a quick glance at the constraint file, so check coverage mechanically, as the program above does.

    Interview

    Likely probes: the two failure modes and how to catch them.

    • Unconstrained paths are optimised without a target; over-tight targets waste area and can hurt true paths.

    • A subset reader that flags missing bounds catches coverage gaps before the tool runs.

    • The checker finds 2 of 4 ports missing: ack and valid.

    Check yourself Two of four input ports lack an input delay. Which failure mode is this, and what does the tool do with those paths?

    Unconstrained paths. The tool optimises them without a target, which risks closure.

    Check yourself The EXAMPLE period is tightened below the real requirement and area grows while real slack stays flat. What is the likely cause?

    Over-constraining. The tool spends area chasing a target tighter than the requirement.

    Related topics

    • Clocks and Generated Clocks

    • Delay Models and Slack

    • See also: Setup, Hold and Slack

    Previous

    41 / 139

    Next: Delay Models and Slack

    Up next

    Up nextDelay Models and Slack

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Clocks and Generated Clocks
    • Uncertainty, Latency and IO Delays
    • Driving Cells, Loads and Units