How do you read a basic timing report from report_timing?
From PDVerse STA Mentor Guide · pdVerse Mentor Guide
Short Answer
A report_timing output walks the path hop by hop from the startpoint flop to the endpoint flop, showing an incremental delay (Incr) and a running total (Path) at each point, then compares the data arrival time to the data required time to get slack.
Example
Startpoint: reg_a (rising clk) Endpoint: reg_b (rising clk) Path Group: clk Path Type: max (setup) Point Incr Path clock clk (rise) 0.00 0.00 reg_a/CK 0.00 0.00 reg_a/Q (clk-to-Q) 0.09 0.09 u1/Z (buffer) 0.12 0.21 u2/Z (logic) 0.31 0.52 <- big contributor u3/Z (logic) 0.28 0.80 reg_b/D (net) 0.07 0.87 data arrival time 0.87 clock clk (rise) @1000 1.00 clock skew 0.03 1.03 library setup (-0.06) -0.06 0.97 uncertainty (-0.04) -0.04 0.93 data required time 0.93 slack (MET) +0.06
Why It Matters
The smartest way to read this is slack first: if it says MET, the path is fine; if it says VIOLATED, go back up the list and find the single biggest Incr number, because that cell or net is your best target for a fix. In this example u2 at 0.31 is the largest contributor.
Equation
Slack = required - arrivalCommand
report_timing -delay_type max -max_paths 10Mentor Note — Common Mistake
Don't start reading from the top and add things up manually in your head. Jump straight to the slack line, and only dig into the incremental numbers once you know there's a problem to chase.
Continue learning free
Get a practical low-power chapter
Receive the existing “Low Power and Multivoltage Fundamentals” PDF chapter and its download link by email.
Continue practising