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

  • RTL Foundations36
  • Combinational Design25
  • Sequential Design27
  • FSM & Control27
  • Timing & Clocking39
  • Reset & CDC34
  • Memory & Buses57
  • Advanced RTL28
  • Senior & Interview76
    • Low-Power RTL Hub
    • DFT and Scan Hub
    • Physical Awareness Hub
    • Waveform Debug Hub
    • STA and ECO Hub
      • The timing-closure loop in practice
      • ECO levers: sizing and buffering
      • When an RTL change is the right call
      • Senior closure checklist
    • RTL-to-Implementation Closure
    • DFT-Ready RTL
    • Capstone: Resilient Streaming Peripheral
    • Principal Design Review
    • Senior RTL Interview Questions & Model Answers
  • Glossary and Notation
Loading lesson

‹STA and ECO Hub
  1. Topics
  2. RTL Design
  3. Senior & Interview
  4. STA and ECO Hub
  5. Senior closure checklist

Part 9 · Senior · Senior

Senior closure checklist

Sign off timing with clean constraints, all required analysis views, robust ECOs, and escalation.

On this page

    Why this matters

    A wrong false-path or multicycle exception hides real paths from STA, and no logic change repairs a constraint problem. A fix that holds at one corner and fails at another is not closed.

    After this lesson you can: validate constraints before fixing logic, track setup and hold together, and choose the smallest ECO that holds across corners.

    Validate constraints first

    Validate constraints before fixing logic. False-path and multicycle mistakes mimic real violations.

    Diagram
    # not-run: SDC is not executable here
    # Exceptions name a design reason, never a slack number.
    # Example topology: scan_clk and func_clk are alternative waveforms on
    # the SAME clock input/tree; only one exists in a given analysis mode.
    # Review this physical exclusivity with DFT; it is not a CDC exception.
    set_clock_groups -physically_exclusive -group [get_clocks scan_clk] -group [get_clocks func_clk]
    
    # Reason: src_reg is held stable for two cycles and dst_reg samples every second cycle (enable-gated, checked by assertion).
    # Setup and hold are always paired: relaxing setup to 2 cycles needs hold restored to 1.
    set_multicycle_path 2 -setup -from [get_cells src_reg*] -to [get_cells dst_reg*]
    set_multicycle_path 1 -hold  -from [get_cells src_reg*] -to [get_cells dst_reg*]
    src_reg launches D0 at edge 0 and holds it for two cycles; dst_en lets the destination sample only at edge 2. -setup 2 moves the setup check to edge 2, and -hold 1 moves the hold check back from edge 1 to edge 0.

    Read the clock edges as numbers 0 to 3. The arrows start at the launch edge.

    • Setup: with -setup 2 the data has two periods, edge 0 to edge 2.

    • Default hold: the tool checks hold one edge before the setup edge, edge 1. That demands the data stay old for a full cycle, which this path never needs.

    • -hold 1: moves the hold check back to edge 0, the normal same-edge check.

    A wrong exception hides real paths from STA, and no logic change repairs a constraint problem. Scope every exception to the named paths or clock groups, pair every multicycle setup with its hold, and review each one with the designer who owns the path.

    The clock-group example applies only to the stated shared-source/tree topology. Distinct clocks that coexist but are selected by a mux may need logically exclusive generated clocks on the shared downstream tree, without cutting valid paths between their upstream domains. Unknown relative phase calls for asynchronous groups and CDC handling, not an exclusivity claim. Prefer separate mission, shift and capture views with their actual clocks and mode controls; test capture can require relationships absent during shift.

    Check yourself Two clocks cannot reach a downstream mux output together. Are their entire upstream domains necessarily asynchronous or exclusive?

    No. Establish the clock relationship and actual interaction paths first. Scope exclusivity to the appropriate generated clocks/shared tree, or use mode-specific analysis; a broad group can hide real upstream transfers.

    Track setup and hold together

    Track setup and hold together. Fixes trade one problem for the other, so every ECO re-verifies both.

    Check yourself A path fails only at a fast corner. Is it necessarily hold, and what class of fix is justified?

    No. Read the reported check type, launch/capture edges, data delay and clock skew. For a hold failure, consider minimum data delay or clock-path correction; for setup, reduce maximum delay or fix the relevant clock/constraint problem. Recheck both checks across all required views.

    Prefer the smallest robust ECO

    Prefer the smallest ECO that stays robust across PVT corners. A fix that holds at one corner and fails at another is not closed.

    Common mistakes

    A shared cause across many endpoints calls for a shared diagnosis. Physical cloning, a buffer tree or constraint correction can still be the right gate-level fix. Escalate to RTL when reports show those options cannot robustly satisfy the budget and the architecture permits the required change.

    Common pitfall

    Signing off STA at the typical corner only, or checking setup only at slow and hold only at fast. Those are common tendencies, not guarantees: every required PVT, RC, variation and mode view must pass its applicable setup, hold, recovery, removal and gating checks.

    Interview

    “What evidence closes your block?”

    • Applicable timing checks clean across the approved signoff matrix, not just one slow/fast pair.

    • Constraints reviewed, with each exception justified.

    • Regression green after the final ECO.

    • Shared causes diagnosed and the chosen gate-level or RTL repair justified by reports.

    Check yourself Hundreds of violations share one root cause: a single high-fanout control net. Gate ECOs or an RTL change?

    Inspect load, slew, placement and shared branches. Physical driver cloning or a buffer tree may solve it without RTL changes. Choose RTL restructuring only when report-based comparison justifies it, including functional and latency costs.

    Testbench

    A two-stage pipeline with valid tracking, proving data and valid stay aligned.

    align_pipe.sv
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    `timescale 1ns/1ps
    module align_pipe (
      input  logic       clk, rst_n,
      input  logic [7:0] d,
      input  logic       v,
      output logic [7:0] q,
      output logic       vout
    );
      logic [7:0] d1 = 8'h00, d2 = 8'h00;
      logic v1 = 1'b0, v2 = 1'b0;
      always_ff @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
          d1 <= 8'h00; d2 <= 8'h00; v1 <= 1'b0; v2 <= 1'b0;
        end else begin
          d1 <= d; v1 <= v; d2 <= d1; v2 <= v1;
        end
      end
      assign q = d2;
      assign vout = v2;
    endmodule
    

    Remember

    • Scope every exception to named paths or clock groups, and pair every multicycle setup with its hold.

    • Every ECO re-verifies setup and hold across all required PVT, RC and mode views.

    • Closure evidence: clean timing checks, reviewed exceptions, and green regression after the final ECO.

    Rule of thumb: validate the constraints before touching the logic.

    Keep going

    • Interview: run a mock interview on this topic

    Related topics

    • When an RTL change is the right call

    • The timing-closure loop in practice

    Previous

    294 / 350

    Next: RTL-to-Implementation Closure

    Up next

    Up nextRTL-to-Implementation Closure

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • The timing-closure loop in practice
    • ECO levers: sizing and buffering