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

  • How to Use This Course
  • Reading Path
  • STA Glossary
  • STA Metrics Reference
  • STA Mastery Cheatsheet
  • Timing Paths and Checks16
  • Constraints & SDC Fundamentals20
  • Delay Graph & Path Analysis16
    • Graph Traversal & Slack
    • Cell vs Net Delay Budgets
    • Path Group Prioritization
    • Report Timing Deep Read
      • Anatomy of a Path Report
      • Reading the Clock Paths
      • Reading the Data Path
      • Common Misreadings
  • Beyond Setup and Hold16
  • Multi-Corner Multi-Mode Signoff16
  • OCV, AOCV, POCV and Variation16
  • Crosstalk and Noise16
  • ECO and Closure16
  • STA Debug Playbook16
  • STA Interview Prep26
  • Capstone Timing Signoff Lab4
Loading lesson

‹Report Timing Deep Read
  1. Topics
  2. Static Timing Analysis
  3. Delay Graph & Path Analysis
  4. Report Timing Deep Read
  5. Anatomy of a Path Report

Part 3 · Delay Graph and Path Analysis · All levels

Anatomy of a Path Report

A path report has a header, a data path to the endpoint, a clock path and requirement section, and a slack line; each can be re-derived.

On this page

    Why it matters

    Everything in the previous sections reappears in the report. If you can map each line to a concept and recompute the totals, no report is opaque, and discrepancies stand out immediately.

    An illustrative report

    Diagram
    # illustrative generic format, not the output of any particular tool
    Startpoint: ff1 (rising edge-triggered flop clocked by sys_clk)
    Endpoint:   ff2 (rising edge-triggered flop clocked by sys_clk)
    Path Group: sys_clk        Path Type: max (setup)
    
      Point                                 Incr     Path
      clock sys_clk (rise edge)             0.00     0.00
      clock network delay (propagated)      0.30     0.30
      ff1/CK                                0.00     0.30
      ff1/Q (DFF)                           0.40     0.70
      u1/Z (AND2)                           0.30     1.00
      u2/Z (INV)                            0.15     1.15
      ff2/D                                 0.05     1.20
      data arrival time                              1.20
    
      clock sys_clk (rise edge)             2.00     2.00
      clock network delay (propagated)      0.35     2.35
      clock uncertainty                    -0.10     2.25
      library setup time                   -0.10     2.15
      data required time                             2.15
      --------------------------------------------------
      slack (MET)                                    0.95

    Part

    What it tells you

    Startpoint, Endpoint, Path Group, Path Type

    Which paths this is, which group it belongs to, and whether it is a setup (max) or hold (min) check

    Data path: Point, Incr, Path

    Each step's delay (Incr) and the running total (Path)

    clock network delay (propagated)

    The launch clock's latency to the launching flop

    data arrival time

    Where the data path ends: launch clock arrival plus the sum of the increments

    Capture clock section

    Capture edge time, capture clock latency, uncertainty and library setup time

    data required time

    The latest time the data may arrive

    slack (MET)

    Required minus arrival; MET if not negative, VIOLATED if negative

    example.py
    1
    2
    3
    4
    5
    6
    incr_data = [0.30, 0.00, 0.40, 0.30, 0.15, 0.05]     # launch latency, ff1/CK, clk-to-Q, AND2, INV, wire to D
    arrival = sum(incr_data)
    required = 2.00 + 0.35 - 0.10 - 0.10                   # period + capture latency - uncertainty - setup
    slack = required - arrival
    assert abs(arrival - 1.20) < 1e-9 and abs(required - 2.15) < 1e-9 and abs(slack - 0.95) < 1e-9
    print("PASS: arrival", round(arrival, 2), "required", round(required, 2), "slack", round(slack, 2))

    This report is a different example from the one in The Timing Graph, with its own delays. Adding the increments reproduces the printed arrival time of 1.20 ns, and the capture side gives 2.15 ns, so the slack is 0.95 ns and the report says MET. Doing this once per unfamiliar report format builds trust in both the tool and your reading.

    What the review looks for

    • Reports quoted in reviews include the whole path, not just the slack line, so the clock and data sections can be checked.

    • Header fields (path group, type, corner/view) are always stated; they are part of the evidence.

    • The Incr column is used for diagnosis and the Path column for totals; confusing them is a common error.

    Common pitfall

    Reading only the slack line. A clean slack can come from an overly large capture latency or an optimistic uncertainty. Read the clock section before trusting it.

    Interview

    Ask the interviewer for a report and recompute the slack aloud. It is the most convincing demonstration of understanding.

    Check yourself If the capture clock network delay were 0.15 ns instead of 0.35 ns, what would the slack be?

    The required time becomes 2.00 + 0.15 - 0.10 - 0.10 = 1.95 ns, so slack = 1.95 - 1.20 = 0.75 ns: 0.20 ns less.

    Related topics

    • Next: Reading the Clock Paths

    • Setup Check Derivation

    Previous

    54 / 183

    Next: Reading the Clock Paths

    Up next

    Up nextReading the Clock Paths

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Reading the Data Path
    • Common Misreadings