A timing report looks like a wall of numbers. It is not. Every line has a fixed meaning, and every report is built from the same three parts: a data path, a capture clock path and a slack. This article walks through a setup report line by line, then shows how the same pattern appears for input and output paths, and how to read the short summary formats.

8 min read | Intermediate

What You'll Learn

  • Find the startpoint, endpoint and check type in the header of a path report
  • Read the columns Cap, Slew, Delay and Time
  • Recognize the data path, the capture clock path and the slack in a report
  • Read the reports of input and output paths and the summary formats

The Header

A path report starts with four lines that say what is being checked:

Output
Startpoint: _7_ (rising edge-triggered flip-flop clocked by clk)
Endpoint: _6_ (rising edge-triggered flip-flop clocked by clk)
Path Group: clk
Path Type: max
  • Startpoint is where the path begins: a flip-flop that launches the data, or an input port.
  • Endpoint is where the path ends: a flip-flop that captures the data, or an output port.
  • Path Group is the clock of the capturing element. Reports sort paths by group.
  • Path Type says which check this is. max means a setup check, which uses the longest delays. min means a hold check, which uses the shortest delays.

The Three Parts of the Report

Under the header, every report has the same three parts, in the same order. The picture colors them. Read them in this order.

Part 1: The Data Path

This is the journey of the data. It starts with the launch clock edge and adds every delay on the way. Each row has up to four numbers:

  • Cap: the load capacitance on the pin, in pF. It is shown only for output pins and only if you ask for it.
  • Slew: how fast the signal changes at this pin, in ns.
  • Delay: the time that this step adds, in ns. This is the number to look at to find the slow cells.
  • Time: the running total, from the clock edge up to this pin.

After the numbers comes a symbol and the name of a pin. The symbol ^ means the signal rises, and v means it falls. The pin name has the form instance name, a slash, and pin name, such as _7_/Q. The cell type follows in brackets. The last row of this part, data arrival time, is the total.

Look at the demo path. The flip-flop _7_ adds 0.2874 ns from clock to output. The XOR gate _4_ adds 0.1450 ns. The wire between them adds 0.0000 ns, because there are no wire delays before layout. The arrival time is 0.4323 ns.

Part 2: The Capture Clock Path

This part calculates the time by which the data is required. It starts at the next clock edge, 2.0 ns after the launch edge, and applies the clock network delay (here an ideal clock with no delay). The row with _6_/CLK is the clock pin of the capturing flip-flop. Then comes the correction for the library: library setup time of -0.1174 ns. The result, 1.8826 ns, is the data required time.

A row called clock reconvergence pessimism is part of real reports. In the example its value is zero. It is explained in the chapter about variation. Another row, clock uncertainty, appears when you set it in the constraints.

Part 3: The Slack

The last block repeats the required time and the arrival time and subtracts: 1.8826 - 0.4323 = 1.4502. The word at the end is MET if the slack is zero or more, and VIOLATED if it is negative. For a hold report, the sign is reversed (arrival minus required) so that a positive slack still means met.

Input and Output Paths

If a path starts at an input port, there is no launch flip-flop. The time starts with the clock edge and the input delay that you set in the constraints. The row says input external delay:

Output
             0.0000    0.0000    0.0000   clock clk (rise edge)
                       0.0000    0.0000   clock network delay (ideal)
                       0.4000    0.4000 v input external delay
             0.0000    0.0000    0.4000 v c (in)
             0.0367    0.1176    0.5176 v _4_/X (sky130_fd_sc_hd__xor2_1)
             0.0367    0.0000    0.5176 v _6_/D (sky130_fd_sc_hd__dfxtp_1)
                                 0.5176   data arrival time

If the path ends at an output port, there is no capture flip-flop, so the required time is the clock edge minus the output delay from the constraints. The row says output external delay:

Output
             0.0000    2.0000    2.0000   clock clk (rise edge)
                       0.0000    2.0000   clock network delay (ideal)
                       0.0000    2.0000   clock reconvergence pessimism
                      -0.4000    1.6000   output external delay
                                 1.6000   data required time
                                -0.3956   data arrival time
                                 1.2044   slack (MET)

Summary Formats

A full report is too long when a design has thousands of paths. Two shorter formats give one line per path or per endpoint. The format end lists each endpoint with its required time, its arrival time and its slack:

Output
max_delay/setup group clk

                                      Required    Actual
Endpoint                                 Delay     Delay     Slack
------------------------------------------------------------------
z (output)                              1.6000    0.5674    1.0326 (MET)

The format summary shows the startpoint and endpoint with the slack:

Output
Startpoint                           Endpoint                                 Slack
----------------------------------------------------------------------------------
a (input)                            z (output)                              1.0326

A good way to work is to start with the summary, pick the path with the worst slack, and open its full report.

Common Mistakes

Mistake #1: Reading the Time column as the delay of a step

The Delay column is the delay of one step and the Time column is the running total. A slow cell is found in the Delay column.

Mistake #2: Ignoring the transition symbols

The symbols ^ and v say which edge this path uses. The rising and the falling edges have different delays, and the report shows the worst one for the check. A different edge on a different row of the same path is normal.

Quick Check: In a setup report, the data required time is 1.8826 ns and the data arrival time is 0.4323 ns. What is printed at the end, and what does it mean?

The slack is 1.8826 - 0.4323 = 1.4502 and the word is MET. The data arrives 1.4502 ns before the latest allowed time.

Practice Exercise

Challenge: Find the Line That Changes

Run the sta_demo design with a period of 2.0 ns and open the report of the path from _7_ to _6_. Write down the arrival time, the required time and the slack. Then change the period to 1.0 ns in the constraints and run again.

Before you run it, say which rows of the report will change and which will not.

Open the ready-made example in the lab, run synthesis, and then run STA. Editing constraints.sdc and re-running only STA, and choosing another library or corner, are PRO features.

Hint

The period only enters in the capture clock path, in the second clock edge. The data path depends on the launch edge at 0 and on cell delays.

Solution

The data path does not change, and the arrival time stays at 0.4323 ns. In the capture clock path, the second clock edge is at 1.0 ns instead of 2.0 ns, so the required time becomes 1.0 - 0.1174 = 0.8826 ns. The slack becomes 0.8826 - 0.4323 = 0.4502 ns, which is 1.0 ns less than before.

Summary

  • The header gives the startpoint, endpoint, path group and the check type: max for setup, min for hold.
  • A report has three parts: the data path with the arrival time, the capture clock path with the required time, and the slack.
  • In the data path, the Delay column is the delay of one step and the Time column is the running total.
  • The symbols ^ and v show a rising or falling edge.
  • Input paths start with the input delay, and output paths end with the output delay.
  • The formats end and summary give one line per endpoint or path, which is the best place to start.
Did you find what you were looking for?

Quiz

No quiz questions available for this article.