This article is a guided first run of place and route in ChipVerify Lab. You take the 8-bit counter from RTL through synthesis and the full OpenROAD flow, then read every section of the report: area and floorplan, timing, clock tree, power, IR drop and the checks. Along the way you will see which numbers change between synthesis and layout, and what the two settings of the PnR panel, the clock period and the utilization, actually do.
9 min read | Beginner
What You'll Learn
- Run synthesis and place and route in ChipVerify Lab
- Explain what the clock period and core utilization settings control
- Read the area, timing, CTS, power and IR drop sections of a PnR report
- Compare post-layout results with the synthesis estimates
Step 1: Synthesize
Open the example (link at the end of this article). The design is the counter from The RTL-to-GDSII Flow. In the synthesis panel, keep the hd library and the typical corner, and run synthesis. The result:
| Cell | Count | Area (um2) |
|---|---|---|
| dfxtp_1 (flip-flop) | 8 | 160.15 |
| a21oi_1, o21a_1, nor3_1, and3_1, and4_1, a41oi_1, nor2_1 | 20 | 120.11 |
| Total | 28 | 280.27 |
The flip-flops take 57 % of the area: a dfxtp_1 is 7.36 um wide, more than five inverters.
Step 2: Set Up Place and Route
The PnR tab has two main settings:
- Clock Period: the target for the clock
clk, here 5 ns (200 MHz). The flow creates the clock withcreate_clock, builds the clock tree and repairs setup timing against it. - Core Utilization: how full the core should be, here 50 %. It sets the target placement density. The flow sizes the floorplan for at most 40 % utilization, so that small designs get enough rows, and very small designs get a fixed 60 um die.
The library and corner are taken from the synthesis run. PRO users can also set a die area, use TinyTapeout mode, or edit the OpenROAD script directly.
Step 3: Run and Read the Report
Click Run Place & Route. The counter finishes in well under a minute. Here is what each section shows for this run, and what it means.
Area and Floorplan
The design area is 298 um2 at 46 % utilization. The extra 18 um2 over synthesis are three clock buffers and five tap cells. The core is 26.2 um by 24.5 um with 9 rows, and the die, with a 10 um margin for the pins, is 46.5 um square. All 11 pins ended up on the bottom edge; I/O Pin Placement explains how the pin placer decides.
Static Timing (Post-Route)
The worst setup path runs from flip-flop _40_ through an and4_1, two and3_1 and an o21a_1 to flip-flop _47_, the carry chain of the counter:
0.2669 ^ _40_/CLK (sky130_fd_sc_hd__dfxtp_1) 0.6752 ^ _40_/Q (sky130_fd_sc_hd__dfxtp_1) 0.9607 ^ _21_/X (sky130_fd_sc_hd__and4_1) 1.2469 ^ _22_/X (sky130_fd_sc_hd__and3_1) 1.4572 ^ _23_/X (sky130_fd_sc_hd__and3_1) 1.5758 ^ _39_/X (sky130_fd_sc_hd__o21a_1) 1.5758 data arrival time 5.2246 data required time 3.6488 slack (MET)
Two things are new compared with synthesis timing. The clock now arrives through the clock tree, 0.27 ns after the clock pin, at both flip-flops, so the launch and capture edges both move by the same amount. And the wires add capacitance, so each gate is a little slower than with ideal wires. With 3.65 ns of slack, this design could run much faster.
CTS
The clock tree has 8 sinks (the flip-flops) and 3 buffers, all clkbuf_1: one root and two leaves, each leaf driving four flip-flops. The path depth is 2 buffers to every flip-flop, which keeps the skew small. See CTS in OpenROAD.
Power
Group Internal Switching Leakage Total Sequential 6.50e-05 1.12e-06 6.49e-11 6.62e-05 67.3% Combinational 1.60e-06 1.27e-06 4.58e-11 2.87e-06 2.9% Clock 9.87e-06 1.94e-05 3.54e-12 2.93e-05 29.8% Total 7.65e-05 2.18e-05 1.14e-10 9.83e-05 100.0%
The total is 98 uW at 200 MHz with the default switching activity. The flip-flops and the clock network use 97 % of it: they toggle on every clock edge, while the counter logic switches far less. Leakage is negligible at the typical corner.
IR Drop
The IR drop analysis solves the resistance of the power grid with the current drawn by every cell. For the counter, the worst drop is 1.87e-05 V on VDD and 1.83e-05 V on VSS, against a 1.80 V supply: about 0.001 %. A design this small hardly loads the grid. The IR Drop article shows a design where it matters.
Antenna, DRC and LVS
The antenna check finds 0 net and 0 pin violations, and the detailed router reports no routing violations. The DRC section (KLayout, PRO) and the LVS section then check the GDSII against the full manufacturing rules and against the netlist; DRC and LVS explain how to read them.
Quick Check
Q: The report says 46 % utilization, but the PnR panel was set to 50 %. Is something wrong?
Show Answer
No. The floorplan was sized for at most 40 %, and the 46 % is the final cell area (including the clock buffers and tap cells) over the core area. The panel value sets the placement density target, not the exact final number.
Step 4: Push the Clock
With 3.65 ns of slack at 5 ns, the critical path takes about 1.35 ns. What happens at 1.5 ns and 1.2 ns?
- 1.5 ns: the flow finds no setup violation during placement, and the routed design has +0.15 ns of slack. The layout is the same as at 5 ns.
- 1.2 ns: after CTS,
repair_timingfinds 3 failing endpoints and upsizes 4 cells. It reaches +0.025 ns with estimated wires, and the area grows to 307 um2. But after routing, with the real wires, the worst path ends at -0.0049 ns: violated by 5 picoseconds.
Quick Check
Q: At 1.2 ns, the repair step reported positive slack, but the final timing is negative. Why?
Show Answer
The repair step worked with wire estimates from the placement. The routed wires are a little longer and have more capacitance than estimated, which costs a few picoseconds. Commercial flows run timing repair again after routing to catch exactly this.
Running It in ChipVerify Lab
The example is the counter. Synthesize it, run Place and Route at 5 ns and 50 %, and check your numbers against this article. Then try the clock periods of Step 4.
Common Mistakes
Mistake #1: Running PnR before the synthesis result is clean
Check the synthesis log for warnings, latches and unexpected cells first. A problem in the netlist is much harder to spot in a layout.
Mistake #2: Judging timing from the pre-route repair log
The repair step reports slack with estimated wires. Always read the post-route timing section; it is the result that counts.
Mistake #3: Setting utilization very high on a tiny design
On a small design, a high utilization leaves very few rows and little routing space. Keep the default until you have a reason to change it, and see the utilization sweep for what happens when you push it.
Practice Exercise
Challenge: Find the Fastest Clock
Run Place and Route at 1.5 ns and at 1.2 ns. Record the worst setup slack, the design area, and whether any cells were resized. At which period does the routed counter stop meeting timing?
Hint
Look at the post-route timing section, and search the log for "Resized".
Solution
At 1.5 ns: slack +0.15 ns, 298 um2, no resizing. At 1.2 ns: the repair step upsizes 4 cells (area 307 um2), but the routed slack is -0.0049 ns. The counter just misses timing at 1.2 ns and meets it at 1.5 ns; the limit lies between the two.
Open the ready-made example in the lab, synthesize it and run Place and Route.
Summary
- In the lab, synthesize first, then run Place and Route with a clock period and a core utilization.
- The report covers area and floorplan, post-route timing, CTS, power, IR drop, antenna, DRC and LVS.
- The counter: 298 um2, 46 % utilization, +3.65 ns slack at 5 ns, 3 clock buffers, 98 uW.
- Timing repair during placement uses estimated wires; only the post-route timing is final.