← Physical Design Interviews

Interview Question · Concept

Reading a Timing Report

L0 FresherL1 Juniorstareports
  • Likely at Samsung

The Question

The interviewer asks

In the setup report below, the data arrives at 0.3055 and the capture flop's clock at 1.3818. Explain how the tool gets from those numbers to a slack of 0.9734.

log
     1    0.0017    0.0226    0.3055    0.3055 v ff1/Q (sky130_fd_sc_hd__dfxtp_1)
                    0.0226    0.0000    0.3055 v ff2/D (sky130_fd_sc_hd__dfxtp_1)
                                        0.3055   data arrival time

                              1.0000    1.0000   clock clk (rise edge)
     1    0.0019    0.0353    0.0708    1.3818 ^ cb5/X (sky130_fd_sc_hd__clkbuf_1)
                    0.0353    0.0000    1.3818 ^ ff2/CLK (sky130_fd_sc_hd__dfxtp_1)
                              0.0000    1.3818   clock reconvergence pessimism
                             -0.1029    1.2789   library setup time
                                        1.2789   data required time
                                       -0.3055   data arrival time
                                        0.9734   slack (MET)
Reveal the Model Answer

The launch half sums the clock edge, the launch clock latency and every cell and net delay to the data arrival, 0.3055 ns. The capture half starts at the next edge, 1.0 ns. It adds the capture clock's path through five buffers to reach 1.3818. Then it subtracts the library setup time, 0.1029, to give the required time 1.2789. Slack is required minus arrival: 0.9734 ns, met.

Timing pathThe Worst Path the Report ShowedA register-to-register path through the accumulator's adder, in the 447-cell MAC.

_809_ → _827_setup check, latest arrival16 cells

  • Clock latency
  • Cell delay
  • Uncertainty
  • Setup time
The worst path the report showed00.511.522.533.544.55time (ns)launch clk ↑capture clk ↑Data arrivesRequired by_809_/CLK → _809_/Q (dfrtp_1): 0.4066 ns1_607_/A → _607_/Y (xnor2_1): 0.2092 ns2_619_/A2 → _619_/Y (o21ai_0): 0.1481 ns3_641_/C → _641_/X (maj3_1): 0.3990 ns4_663_/C → _663_/X (maj3_1): 0.3921 ns5_685_/C → _685_/X (maj3_1): 0.3921 ns6_707_/C → _707_/X (maj3_1): 0.4037 ns7_727_/A1 → _727_/Y (a211oi_1): 0.2652 ns8_729_/A3 → _729_/Y (o31ai_1): 0.1414 ns9_731_/A2 → _731_/X (o211a_1): 0.2244 ns10_734_/A3 → _734_/Y (o311ai_0): 0.4243 ns11_736_/A3 → _736_/Y (a31oi_1): 0.1878 ns12_737_/A2 → _737_/Y (a21oi_1): 0.2650 ns13_740_/A2 → _740_/Y (a211oi_1): 0.1644 ns_742_/C → _742_/Y (nand3_1): 0.1214 ns_748_/B → _748_/Y (xnor2_1): 0.1081 nsuncertainty −0.1000 nssetup −0.0646 nsslack +0.5827 ns · metarrival 4.2527required 4.8354The worst path the report showed012345time (ns)launch clk ↑capture clk ↑Data arrivesRequired by_809_/CLK → _809_/Q (dfrtp_1): 0.4066 ns1_607_/A → _607_/Y (xnor2_1): 0.2092 ns2_619_/A2 → _619_/Y (o21ai_0): 0.1481 ns_641_/C → _641_/X (maj3_1): 0.3990 ns4_663_/C → _663_/X (maj3_1): 0.3921 ns5_685_/C → _685_/X (maj3_1): 0.3921 ns6_707_/C → _707_/X (maj3_1): 0.4037 ns7_727_/A1 → _727_/Y (a211oi_1): 0.2652 ns8_729_/A3 → _729_/Y (o31ai_1): 0.1414 ns_731_/A2 → _731_/X (o211a_1): 0.2244 ns_734_/A3 → _734_/Y (o311ai_0): 0.4243 ns11_736_/A3 → _736_/Y (a31oi_1): 0.1878 ns_737_/A2 → _737_/Y (a21oi_1): 0.2650 ns_740_/A2 → _740_/Y (a211oi_1): 0.1644 ns_742_/C → _742_/Y (nand3_1): 0.1214 ns_748_/B → _748_/Y (xnor2_1): 0.1081 nsuncertainty −0.1000 nssetup −0.0646 nsslack +0.5827 ns · metarrival 4.2527required 4.8354
  1. A long carry chain

    15 gates after the flop. The data arrives at 4.2527 ns.

  2. MET

    Slack 0.5827 ns. It is the worst path among those the SDC constrained.

Read the path as a table

Launch: clk rise edge at 0.0000 ns, clock latency 0.0000 ns (ideal). Capture: clk rise edge at 5.0000 ns, latency 0.0000 ns, uncertainty −0.1000 ns, library setup time −0.0646 ns.

Arrival 4.2527 ns, required 4.8354 ns, slack 0.5827 ns (met).

CellArcThroughEdgeDelay (ns)Time (ns)Slew (ns)
1_809_/CLK → _809_/Qdfrtp_1fall0.40660.40660.0679
_809_/Q → _607_/Awire acc[1]fall0.00000.40660.0679
2_607_/A → _607_/Yxnor2_1rise0.20920.61580.1928
_607_/Y → _619_/A2wire _080_rise0.00000.61580.1928
3_619_/A2 → _619_/Yo21ai_0fall0.14810.76390.1149
_619_/Y → _641_/Cwire _081_fall0.00000.76390.1149
4_641_/C → _641_/Xmaj3_1fall0.39901.16280.0920
_641_/X → _663_/Cwire _083_fall0.00001.16280.0920
5_663_/C → _663_/Xmaj3_1fall0.39211.55500.0920
_663_/X → _685_/Cwire _085_fall0.00001.55500.0920
6_685_/C → _685_/Xmaj3_1fall0.39211.94710.0920
_685_/X → _707_/Cwire _087_fall0.00001.94710.0920
7_707_/C → _707_/Xmaj3_1fall0.40372.35080.1013
_707_/X → _727_/A1wire _089_fall0.00002.35080.1013
8_727_/A1 → _727_/Ya211oi_1rise0.26522.61590.2531
_727_/Y → _729_/A3wire _093_rise0.00002.61590.2531
9_729_/A3 → _729_/Yo31ai_1fall0.14142.75730.0941
_729_/Y → _731_/A2wire _095_fall0.00002.75730.0941
10_731_/A2 → _731_/Xo211a_1fall0.22442.98170.0449
_731_/X → _734_/A3wire _097_fall0.00002.98170.0449
11_734_/A3 → _734_/Yo311ai_0rise0.42433.40600.4921
_734_/Y → _736_/A3wire _100_rise0.00003.40600.4921
12_736_/A3 → _736_/Ya31oi_1fall0.18783.59380.1296
_736_/Y → _737_/A2wire _101_fall0.00003.59380.1296
13_737_/A2 → _737_/Ya21oi_1rise0.26503.85880.2375
_737_/Y → _740_/A2wire _102_rise0.00003.85880.2375
14_740_/A2 → _740_/Ya211oi_1fall0.16444.02320.1196
_740_/Y → _742_/Cwire _105_fall0.00004.02320.1196
15_742_/C → _742_/Ynand3_1rise0.12144.14460.0801
_742_/Y → _748_/Bwire _107_rise0.00004.14460.0801
16_748_/B → _748_/Yxnor2_1rise0.10814.25270.1022
_748_/Y → _827_/Dwire _048_rise0.00004.25270.1022
The report
Startpoint: _809_ (rising edge-triggered flip-flop clocked by clk)
Endpoint: _827_ (rising edge-triggered flip-flop clocked by clk)
Path Group: clk
Path Type: max

Fanout       Cap      Slew     Delay      Time   Description
-------------------------------------------------------------------------------------
                    0.1000    0.0000    0.0000   clock clk (rise edge)
                              0.0000    0.0000   clock network delay (ideal)
                    0.1000    0.0000    0.0000 ^ _809_/CLK (sky130_fd_sc_hd__dfrtp_1)
     4    0.0088    0.0679    0.4066    0.4066 v _809_/Q (sky130_fd_sc_hd__dfrtp_1)
                                                 acc[1] (net)
                    0.0679    0.0000    0.4066 v _607_/A (sky130_fd_sc_hd__xnor2_1)
     2    0.0065    0.1928    0.2092    0.6158 ^ _607_/Y (sky130_fd_sc_hd__xnor2_1)
                                                 _080_ (net)
                    0.1928    0.0000    0.6158 ^ _619_/A2 (sky130_fd_sc_hd__o21ai_0)
     2    0.0073    0.1149    0.1481    0.7639 v _619_/Y (sky130_fd_sc_hd__o21ai_0)
                                                 _081_ (net)
                    0.1149    0.0000    0.7639 v _641_/C (sky130_fd_sc_hd__maj3_1)
     2    0.0073    0.0920    0.3990    1.1628 v _641_/X (sky130_fd_sc_hd__maj3_1)
                                                 _083_ (net)
                    0.0920    0.0000    1.1628 v _663_/C (sky130_fd_sc_hd__maj3_1)
     2    0.0073    0.0920    0.3921    1.5550 v _663_/X (sky130_fd_sc_hd__maj3_1)
                                                 _085_ (net)
                    0.0920    0.0000    1.5550 v _685_/C (sky130_fd_sc_hd__maj3_1)
     2    0.0073    0.0920    0.3921    1.9471 v _685_/X (sky130_fd_sc_hd__maj3_1)
                                                 _087_ (net)
                    0.0920    0.0000    1.9471 v _707_/C (sky130_fd_sc_hd__maj3_1)
     3    0.0090    0.1013    0.4037    2.3508 v _707_/X (sky130_fd_sc_hd__maj3_1)
                                                 _089_ (net)
                    0.1013    0.0000    2.3508 v _727_/A1 (sky130_fd_sc_hd__a211oi_1)
     2    0.0052    0.2531    0.2652    2.6159 ^ _727_/Y (sky130_fd_sc_hd__a211oi_1)
                                                 _093_ (net)
                    0.2531    0.0000    2.6159 ^ _729_/A3 (sky130_fd_sc_hd__o31ai_1)
     3    0.0088    0.0941    0.1414    2.7573 v _729_/Y (sky130_fd_sc_hd__o31ai_1)
                                                 _095_ (net)
                    0.0941    0.0000    2.7573 v _731_/A2 (sky130_fd_sc_hd__o211a_1)
     2    0.0038    0.0449    0.2244    2.9817 v _731_/X (sky130_fd_sc_hd__o211a_1)
                                                 _097_ (net)
                    0.0449    0.0000    2.9817 v _734_/A3 (sky130_fd_sc_hd__o311ai_0)
     3    0.0073    0.4921    0.4243    3.4060 ^ _734_/Y (sky130_fd_sc_hd__o311ai_0)
                                                 _100_ (net)
                    0.4921    0.0000    3.4060 ^ _736_/A3 (sky130_fd_sc_hd__a31oi_1)
     2    0.0067    0.1296    0.1878    3.5938 v _736_/Y (sky130_fd_sc_hd__a31oi_1)
                                                 _101_ (net)
                    0.1296    0.0000    3.5938 v _737_/A2 (sky130_fd_sc_hd__a21oi_1)
     3    0.0096    0.2375    0.2650    3.8588 ^ _737_/Y (sky130_fd_sc_hd__a21oi_1)
                                                 _102_ (net)
                    0.2375    0.0000    3.8588 ^ _740_/A2 (sky130_fd_sc_hd__a211oi_1)
     4    0.0109    0.1196    0.1644    4.0232 v _740_/Y (sky130_fd_sc_hd__a211oi_1)
                                                 _105_ (net)
                    0.1196    0.0000    4.0232 v _742_/C (sky130_fd_sc_hd__nand3_1)
     1    0.0047    0.0801    0.1214    4.1446 ^ _742_/Y (sky130_fd_sc_hd__nand3_1)
                                                 _107_ (net)
                    0.0801    0.0000    4.1446 ^ _748_/B (sky130_fd_sc_hd__xnor2_1)
     1    0.0020    0.1022    0.1081    4.2527 ^ _748_/Y (sky130_fd_sc_hd__xnor2_1)
                                                 _048_ (net)
                    0.1022    0.0000    4.2527 ^ _827_/D (sky130_fd_sc_hd__dfrtp_1)
                                        4.2527   data arrival time

                    0.1000    5.0000    5.0000   clock clk (rise edge)
                              0.0000    5.0000   clock network delay (ideal)
                             -0.1000    4.9000   clock uncertainty
                              0.0000    4.9000   clock reconvergence pessimism
                                        4.9000 ^ _827_/CLK (sky130_fd_sc_hd__dfrtp_1)
                             -0.0646    4.8354   library setup time
                                        4.8354   data required time
-------------------------------------------------------------------------------------
                                        4.8354   data required time
                                       -4.2527   data arrival time
-------------------------------------------------------------------------------------
                                        0.5827   slack (MET)

Another setup report, from lesson L2.5, drawn as two lanes. Read it the same way: slack is required minus arrival, 0.5827 ns here.

The lesson L2.4 shift register; both the setup and the hold check are reported.

create_clock -name clk -period 1.0 [get_ports clk]
set_propagated_clock [all_clocks]
set_input_transition 0.1 [get_ports clk]

Prints: 0.9734 slack (MET) -0.0399 slack (VIOLATED)

Self-Check

Tick each key point you covered in your answer.

What Interviewers Listen For (Fresher)

A good fresher answer points to the arrival time, the required time and the setup line. It then works out the slack by hand.

Cross-Questions

Where the interviewer goes next. Open a node to practise that follow-up.

WhyWhat IfProve ItBreak ItCompareScale It

  1. Reading a Timing Report
  2. WhyThe Clock Reconvergence Pessimism LineL2 Mid-Level

    What is the "clock reconvergence pessimism" line, and why was it zero in that report?

    Reveal the Model Answer

    With on-chip-variation derates, the launch clock is timed late and the capture clock early. Where the two clock paths share buffers, one buffer cannot be both. So the tool credits back the difference on the shared part. With no derates and a single corner, late equals early and the credit is zero. In lesson L2.9, ±5 % derates gave a credit of 0.0138 ns.

    Timing pathSetup with ±5 % Derates and the CRPR Credit

    ffl → ffcsetup check, latest arrival3 cells

    • Clock latency
    • Cell delay
    • Setup time
    Setup with ±5 % derates and the CRPR credit00.20.40.60.811.2time (ns)launch clk ↑capture clk ↑Data arrivesRequired byclock 0.2174 nsclock 0.2174ffl/CLK → ffl/Q (dfxtp_1): 0.3094 ns1 dfxtp_1u1/A → u1/Y (inv_1): 0.0438 ns2u2/A → u2/Y (nand2_1): 0.0350 ns3clock 0.1967 nsCRPR 0.0138 nssetup −0.1040 nsslack +0.5008 ns · metarrival 0.6056required 1.1065Setup with ±5 % derates and the CRPR credit00.51time (ns)launch clk ↑capture clk ↑Data arrivesRequired byclock 0.2174 nsffl/CLK → ffl/Q (dfxtp_1): 0.3094 ns1 dfxtp_1u1/A → u1/Y (inv_1): 0.0438 nsu2/A → u2/Y (nand2_1): 0.0350 nsclock 0.1967 nsCRPR 0.0138 nssetup −0.1040 nsslack +0.5008 ns · metarrival 0.6056required 1.1065
    1. Late launch clock

      Through root and bl with the late derate: 0.2174 ns.

    2. Early capture clock, then the credit

      Through root and bc early: 0.1967 ns. The CRPR line adds 0.0138 ns, the two speeds of root.

    3. Slack

      0.5008 ns. Without the credit it would be 0.4870 ns.

    Read the path as a table

    Launch: clk rise edge at 0.0000 ns, clock latency 0.2174 ns. Capture: clk rise edge at 1.0000 ns, latency 0.1967 ns, library setup time −0.1040 ns.

    Arrival 0.6056 ns, required 1.1065 ns, slack 0.5008 ns (met).

    CellArcThroughEdgeDelay (ns)Time (ns)Slew (ns)
    1ffl/CLK → ffl/Qdfxtp_1fall0.30940.52680.0345
    ffl/Q → u1/Awire q1fall0.00000.52680.0345
    2u1/A → u1/Yinv_1rise0.04380.57060.0308
    u1/Y → u2/Awire n1rise0.00000.57060.0308
    3u2/A → u2/Ynand2_1fall0.03500.60560.0251
    u2/Y → ffc/Dwire n2fall0.00000.60560.0251
    The report
    Startpoint: ffl (rising edge-triggered flip-flop clocked by clk)
    Endpoint: ffc (rising edge-triggered flip-flop clocked by clk)
    Path Group: clk
    Path Type: max
    
    Fanout       Cap      Slew     Delay      Time   Description
    -------------------------------------------------------------------------------------
                                  0.0000    0.0000   clock clk (rise edge)
                                  0.0000    0.0000   clock source latency
         1    0.0022    0.1000    0.0000    0.0000 ^ clk (in)
                                                     clk (net)
                        0.1000    0.0000    0.0000 ^ root/A (sky130_fd_sc_hd__clkbuf_4)
         2    0.0044    0.0334    0.1450    0.1450 ^ root/X (sky130_fd_sc_hd__clkbuf_4)
                                                     cr (net)
                        0.0334    0.0000    0.1450 ^ bl/A (sky130_fd_sc_hd__clkbuf_1)
         1    0.0019    0.0353    0.0724    0.2174 ^ bl/X (sky130_fd_sc_hd__clkbuf_1)
                                                     cl (net)
                        0.0353    0.0000    0.2174 ^ ffl/CLK (sky130_fd_sc_hd__dfxtp_1)
         2    0.0044    0.0345    0.3094    0.5268 v ffl/Q (sky130_fd_sc_hd__dfxtp_1)
                                                     q1 (net)
                        0.0345    0.0000    0.5268 v u1/A (sky130_fd_sc_hd__inv_1)
         1    0.0024    0.0308    0.0438    0.5706 ^ u1/Y (sky130_fd_sc_hd__inv_1)
                                                     n1 (net)
                        0.0308    0.0000    0.5706 ^ u2/A (sky130_fd_sc_hd__nand2_1)
         1    0.0017    0.0251    0.0350    0.6056 v u2/Y (sky130_fd_sc_hd__nand2_1)
                                                     n2 (net)
                        0.0251    0.0000    0.6056 v ffc/D (sky130_fd_sc_hd__dfxtp_1)
                                            0.6056   data arrival time
    
                                  1.0000    1.0000   clock clk (rise edge)
                                  0.0000    1.0000   clock source latency
         1    0.0022    0.1000    0.0000    1.0000 ^ clk (in)
                                                     clk (net)
                        0.1000    0.0000    1.0000 ^ root/A (sky130_fd_sc_hd__clkbuf_4)
         2    0.0044    0.0334    0.1312    1.1312 ^ root/X (sky130_fd_sc_hd__clkbuf_4)
                                                     cr (net)
                        0.0334    0.0000    1.1312 ^ bc/A (sky130_fd_sc_hd__clkbuf_1)
         1    0.0019    0.0353    0.0655    1.1967 ^ bc/X (sky130_fd_sc_hd__clkbuf_1)
                                                     cc (net)
                        0.0353    0.0000    1.1967 ^ ffc/CLK (sky130_fd_sc_hd__dfxtp_1)
                                  0.0138    1.2105   clock reconvergence pessimism
                                 -0.1040    1.1065   library setup time
                                            1.1065   data required time
    -------------------------------------------------------------------------------------
                                            1.1065   data required time
                                           -0.6056   data arrival time
    -------------------------------------------------------------------------------------
                                            0.5008   slack (MET)

    Setup with ±5 % derates. The CRPR line gives back 0.0138 ns for the clock buffers both paths share.

    Self-Check

    Tick each key point you covered in your answer.

  3. CompareWNS, TNS and the Failing CountL1 Junior

    Compare WNS, TNS and the number of failing endpoints as measures of how bad a block's timing is.

    Reveal the Model Answer

    WNS is the worst endpoint's slack and says how hard the hardest path is. TNS sums the negative slacks and the failing count says how widespread the problem is. A WNS of -50 ps on two endpoints is a local fix. The same WNS on two thousand endpoints is a floorplan or constraint problem.

    Measured sweepSetup Slack at Every Flop of the MAC, Complete SDCOne OpenSTA run with each of the 52 flop D pins in its own path group, in register order.
    -500 ps-400 ps-300 ps-200 ps-100 ps0100 ps200 ps300 psSlack01020304050Endpoint flop (ra, rb, p, acc)slack 0rbpaccWNS -0.4688 ns at acc[19]-600 ps-400 ps-200 ps0200 ps400 psSlack02040Endpoint flop (ra, rb, p, acc)slack 0rbpaccWNS -0.4688 ns at acc[19]
    1. Endpoint flop (ra, rb, p, acc) 0setup slack = 13.2 ps

      The input registers ra and rb load a and b but also obey en: slack 0.0132 ns.

    2. Endpoint flop (ra, rb, p, acc) 51setup slack = -468.8 ps

      The worst endpoint, acc[19]: -0.4688 ns. That is the WNS.

    3. Endpoint flop (ra, rb, p, acc) 51setup slack = -468.8 ps

      12 of 52 endpoints fail, in p and acc. Their negative slacks add up to about -2.172 ns: the TNS.

    Read the plot as a table
    Endpoint flop (ra, rb, p, acc)setup slack
    013.2 ps
    1013.2 ps
    20-39 ps
    30115 ps
    40185.1 ps
    50-435.9 ps
    51-468.8 ps

    Setup slack at all 52 flops of lesson L2.5's MAC. The lowest point is the WNS; the failing points add up to the TNS.

    Self-Check

    Tick each key point you covered in your answer.

  4. What IfA Clean Timing Report That Timed NothingL1 JuniorL2 Mid-Level

    Asked if they trust a clean report without asking what was timed

    A block's timing report says "No paths found." and TNS (total negative slack) is 0. The log has one warning, shown with the answer. Is the block clean?

    Reveal the Model Answer

    No: nothing was timed. The clock was declared on a port called clock, which does not exist. So no flop is clocked and no path has a constraint. Read every warning after loading the SDC and run check_setup, which lists unclocked registers and unconstrained endpoints. With the port name corrected, the same netlist reports a real slack of 3.837 ns.

    Timing pathThe En Path, Drawn from the Same ReportInput port en, with a 4.5 ns input delay, through 4 gates to an accumulator flop.

    en → _827_setup check, latest arrival4 cells

    • Clock latency
    • Cell delay
    • Input delay
    • Uncertainty
    • Setup time
    The en path, drawn from the same report00.511.522.533.544.55time (ns)launch clk ↑capture clk ↑Data arrivesRequired byinput delay 4.5000 nsinput delay 4.5000_738_/B1 → _738_/Y (o21ai_0): 0.0722 ns_740_/B1 → _740_/Y (a211oi_1): 0.4113 ns2_742_/C → _742_/Y (nand3_1): 0.1474 ns3_748_/B → _748_/Y (xnor2_1): 0.1383 ns4uncertainty −0.1000 nssetup −0.0997 nsslack −0.4688 ns · violatedarrival 5.2691required 4.8003The en path, drawn from the same report012345time (ns)launch clk ↑capture clk ↑Data arrivesRequired byinput delay 4.5000 nsinput delay 4.5000_738_/B1 → _738_/Y (o21ai_0): 0.0722 ns_740_/B1 → _740_/Y (a211oi_1): 0.4113 ns2_742_/C → _742_/Y (nand3_1): 0.1474 ns_748_/B → _748_/Y (xnor2_1): 0.1383 nsuncertainty −0.1000 nssetup −0.0997 nsslack −0.4688 ns · violatedarrival 5.2691required 4.8003
    1. Outside the block

      The SDC says en changes 4.5000 ns after the edge.

    2. The slowest gate

      a211oi_1 adds 0.4113 ns with a 0.4443 ns output slew.

    3. Required

      5 ns, minus 0.1 ns of uncertainty and a setup time of 0.0997 ns: 4.8003 ns.

    4. VIOLATED

      Slack = required − arrival = 4.8003 − 5.2691 = -0.4688 ns.

    Read the path as a table

    Launch: clk rise edge at 0.0000 ns, clock latency 0.0000 ns (ideal). Capture: clk rise edge at 5.0000 ns, latency 0.0000 ns, uncertainty −0.1000 ns, library setup time −0.0997 ns.

    Arrival 5.2691 ns, required 4.8003 ns, slack −0.4688 ns (violated).

    CellArcThroughEdgeDelay (ns)Time (ns)Slew (ns)
    en → _738_/B1wire enrise0.00004.50000.0000
    1_738_/B1 → _738_/Yo21ai_0fall0.07224.57220.0807
    _738_/Y → _740_/B1wire _103_fall0.00004.57220.0807
    2_740_/B1 → _740_/Ya211oi_1rise0.41134.98340.4443
    _740_/Y → _742_/Cwire _105_rise0.00004.98340.4443
    3_742_/C → _742_/Ynand3_1fall0.14745.13080.1058
    _742_/Y → _748_/Bwire _107_fall0.00005.13080.1058
    4_748_/B → _748_/Yxnor2_1fall0.13835.26910.0405
    _748_/Y → _827_/Dwire _048_fall0.00005.26910.0405
    The report
    Startpoint: en (input port clocked by clk)
    Endpoint: _827_ (rising edge-triggered flip-flop clocked by clk)
    Path Group: clk
    Path Type: max
    
    Fanout       Cap      Slew     Delay      Time   Description
    -------------------------------------------------------------------------------------
                        0.1000    0.0000    0.0000   clock clk (rise edge)
                                  0.0000    0.0000   clock network delay (ideal)
                                  4.5000    4.5000 ^ input external delay
        69    0.1868    0.0000    0.0000    4.5000 ^ en (in)
                                                     en (net)
                        0.0000    0.0000    4.5000 ^ _738_/B1 (sky130_fd_sc_hd__o21ai_0)
         2    0.0044    0.0807    0.0722    4.5722 v _738_/Y (sky130_fd_sc_hd__o21ai_0)
                                                     _103_ (net)
                        0.0807    0.0000    4.5722 v _740_/B1 (sky130_fd_sc_hd__a211oi_1)
         4    0.0119    0.4443    0.4113    4.9834 ^ _740_/Y (sky130_fd_sc_hd__a211oi_1)
                                                     _105_ (net)
                        0.4443    0.0000    4.9834 ^ _742_/C (sky130_fd_sc_hd__nand3_1)
         1    0.0045    0.1058    0.1474    5.1308 v _742_/Y (sky130_fd_sc_hd__nand3_1)
                                                     _107_ (net)
                        0.1058    0.0000    5.1308 v _748_/B (sky130_fd_sc_hd__xnor2_1)
         1    0.0019    0.0405    0.1383    5.2691 v _748_/Y (sky130_fd_sc_hd__xnor2_1)
                                                     _048_ (net)
                        0.0405    0.0000    5.2691 v _827_/D (sky130_fd_sc_hd__dfrtp_1)
                                            5.2691   data arrival time
    
                        0.1000    5.0000    5.0000   clock clk (rise edge)
                                  0.0000    5.0000   clock network delay (ideal)
                                 -0.1000    4.9000   clock uncertainty
                                  0.0000    4.9000   clock reconvergence pessimism
                                            4.9000 ^ _827_/CLK (sky130_fd_sc_hd__dfrtp_1)
                                 -0.0997    4.8003   library setup time
                                            4.8003   data required time
    -------------------------------------------------------------------------------------
                                            4.8003   data required time
                                           -5.2691   data arrival time
    -------------------------------------------------------------------------------------
                                           -0.4688   slack (VIOLATED)

    A path that a partial SDC never timed, in lesson L2.5. Once its input delay is in the SDC, it fails by 0.4688 ns.

    The one warning in the run (lesson L1.6, measured)
    Warning 366: sdc line 1, port 'clock' not found.

    Self-Check

    Tick each key point you covered in your answer.

    What Interviewers Listen For (Junior)

    A good junior answer suspects the constraints first. It finds the warning in the log and runs check_setup.

    Misconception

    "No violations means timing is met."

    A report lists only constrained paths. With the clock on a missing port it finds no paths at all. Correcting the port name gives a real check with 3.837 ns of slack.

    Run It

    The counter from lesson L1.6 with create_clock on a port named clock.

    create_clock -name clk -period 5 [get_ports clock]
    

    Prints: No paths found.

    See the Fix
    create_clock -name clk -period 5 [get_ports clk]
    

    Prints: 3.8370 slack (MET)

    Half-Truth

    "Warnings are noise; only errors matter."

    An ERROR stops the run, but a WARNING lets it finish, so a finished run can still be wrong. This one warning silently removed every clock.

    Source ASIC Point lesson L1.6 (OpenROAD message severities, measured log)

  5. WhyWhat check_setup CatchesL1 Junior

    Why run check_setup before reading any slack?

    Reveal the Model Answer

    It lists what the constraints leave out: unclocked register pins, inputs without input delays and outputs without output delays. It also lists unconstrained endpoints and combinational loops. In lesson L2.5 a partial SDC left two inputs and all twenty outputs without delays, so twenty endpoints were never timed. Each item is either fixed or explained before any slack counts.

    Self-Check

    Tick each key point you covered in your answer.

  6. Prove ItSolve L1.6.1: The Clock That Reached No RegisterSimulator-graded

    Show it, don't just say it: this Silicon Lab problem is graded by the simulator.

    Open Problem L1.6.1

  7. Break ItA False Path That Swallowed Real PathsL1 JuniorL2 Mid-Level

    To silence one slow configuration input, someone writes the line below. What else disappears from timing?

    sdc
    set_false_path -from [all_inputs]
    Reveal the Model Answer

    Every path from every input, including the clock-domain data inputs that really do need timing. In lesson L2.8 that line turned two flop data pins into unconstrained endpoints. A report through the data input then found no paths at all. Writing the exception on the one port, -from [get_ports cfg], left the other path timed with 0.5837 ns of slack.

    Timing pathd0 → a0_reg

    d0 → a0_regsetup check, latest arrival0 cells

    • Clock latency
    • Cell delay
    • Input delay
    • Setup time
    d0 → a0_reg00.10.20.30.40.50.60.70.80.91time (ns)launch clk ↑capture clk ↑Data arrivesRequired byinput delay 0.2000 nssetup −0.2163 nsslack +0.5837 ns · metarrival 0.2000required 0.7837d0 → a0_reg00.20.40.60.81time (ns)launch clk ↑capture clk ↑Data arrivesRequired byinput delay 0.2000 nssetup −0.2163 nsslack +0.5837 ns · metarrival 0.2000required 0.7837
    Read the path as a table

    Launch: clk rise edge at 0.0000 ns, clock latency 0.0000 ns (ideal). Capture: clk rise edge at 1.0000 ns, latency 0.0000 ns, library setup time −0.2163 ns.

    Arrival 0.2000 ns, required 0.7837 ns, slack 0.5837 ns (met).

    CellArcThroughEdgeDelay (ns)Time (ns)Slew (ns)
    d0 → a0_reg/Dwire d0fall0.00000.20000.0000
    The report
    Startpoint: d0 (input port clocked by clk)
    Endpoint: a0_reg (rising edge-triggered flip-flop clocked by clk)
    Path Group: clk
    Path Type: max
    
    Fanout       Cap      Slew     Delay      Time   Description
    -------------------------------------------------------------------------------------
                        0.1000    0.0000    0.0000   clock clk (rise edge)
                                  0.0000    0.0000   clock network delay (ideal)
                                  0.2000    0.2000 v input external delay
         1    0.0017    0.0000    0.0000    0.2000 v d0 (in)
                                                     d0 (net)
                        0.0000    0.0000    0.2000 v a0_reg/D (sky130_fd_sc_hd__edfxtp_1)
                                            0.2000   data arrival time
    
                        0.1000    1.0000    1.0000   clock clk (rise edge)
                                  0.0000    1.0000   clock network delay (ideal)
                                  0.0000    1.0000   clock reconvergence pessimism
                                            1.0000 ^ a0_reg/CLK (sky130_fd_sc_hd__edfxtp_1)
                                 -0.2163    0.7837   library setup time
                                            0.7837   data required time
    -------------------------------------------------------------------------------------
                                            0.7837   data required time
                                           -0.2000   data arrival time
    -------------------------------------------------------------------------------------
                                            0.5837   slack (MET)

    With the exception written only on cfg, the path from d0 is timed again: slack 0.5837 ns.

    Self-Check

    Tick each key point you covered in your answer.

  8. What IfA False Path That Covers the ResetL1 JuniorL2 Mid-Level

    What if the same broad false path also covers the reset input?

    Reveal the Model Answer

    Then the reset release has no recovery or removal check. A release near the clock edge can leave some flops in reset for one cycle longer than others. The design then starts in a mixed state. Time the release through its synchroniser, and keep recovery and removal checked.

    Self-Check

    Tick each key point you covered in your answer.

    Misconception

    "Reset is asynchronous, so it needs no timing."

    Asserting it is asynchronous, but releasing it is checked against the clock by recovery and removal arcs.

    Source Lesson L2.1 key points

  9. Scale ItAuditing Constraints on a Large ChipL3 Senior

    You inherit SDC for a chip with forty clocks. How do you audit it before trusting any timing result?

    Reveal the Model Answer

    Check coverage first: every register clocked, every port with a delay, zero unexplained unconstrained endpoints. Then review every exception against a written reason, since a false path or clock group trusted by STA removes checks for good. Compare the clock relationships with the design spec and the CDC report. Re-run the audit whenever the SDC or the netlist changes.

    Self-Check

    Tick each key point you covered in your answer.

  10. Prove ItSolve L1.6.2: Reject an Incomplete Timing ReportSimulator-graded

    Show it, don't just say it: this Silicon Lab problem is graded by the simulator.

    Open Problem L1.6.2

  11. Scale ItAuditing Constraints on a Large ChipL3 Senior

    You inherit SDC for a chip with forty clocks. How do you audit it before trusting any timing result?

    Reveal the Model Answer

    Check coverage first: every register clocked, every port with a delay, zero unexplained unconstrained endpoints. Then review every exception against a written reason, since a false path or clock group trusted by STA removes checks for good. Compare the clock relationships with the design spec and the CDC report. Re-run the audit whenever the SDC or the netlist changes.

    Self-Check

    Tick each key point you covered in your answer.

What People Get Wrong

Common wrong answers and why they fail.

Half-Truth

"Slack is the period minus the path delay."

That ignores clock latency on both sides, the setup time and uncertainty. Here the capture clock is 0.38 ns late, which is most of the margin.

Missed Corner

"WNS is positive, so every endpoint is fine."

WNS covers only constrained paths. Unconstrained endpoints never appear in a report, so run check_setup first.

Source ASIC Point lesson L2.5 (measured check_setup on a partial SDC)

Learn It, Then Prove It