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.
# 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.95Part | 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 |
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.
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.
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.