Routing & Parasitic Extraction
Routing is where estimates end. Every previous stage worked with a model of interconnect; now there is actual metal, with actual resistance and capacitance, and static timing analysis finally has something true to analyse. The number that comes out is usually worse than the one you have been quoting for the last three stages - and understanding exactly why is the difference between reacting to that and predicting it.
5.1 The metal stack
A chip is a sandwich: transistors at the bottom, then a stack of metal layers separated by insulator, connected vertically by vias. Sky130 gives you a local interconnect layer plus five metals, and they are not interchangeable.
| Layer | Preferred direction | Relative pitch | Mostly used for |
|---|---|---|---|
li1 |
Vertical (local only) | Finest | Standard cell pins - the router lands here and leaves |
met1 |
Horizontal | Fine | Cell power rails, very short connections |
met2 |
Vertical | Fine | General signal routing |
met3 |
Horizontal | Medium | General signals, medium-length nets |
met4 |
Vertical | Coarse | Power straps, long nets |
met5 |
Horizontal | Coarsest | Power ring and straps, top-level clock |
5.2 Global, track and detailed routing
Routing a million nets simultaneously and exactly is intractable, so it is decomposed the same way placement was: solve it coarsely, then refine.
| Stage | Decides | Granularity | Output |
|---|---|---|---|
| Global routing | Which coarse tiles (GCells) each net passes through | A grid of tiles, each many tracks wide | A route plan and a congestion map |
| Track assignment | Which specific track within a layer each long segment uses | Individual tracks | Straight segments, not yet connected |
| Detailed routing | Exact geometry, every via, every jog | Manufacturing grid | A DRC-clean, fully connected layout |
Global routing is where you find out whether the floorplan was viable. It reports overflow: tiles where more nets want to cross than there are tracks available. Small, scattered overflow is normal and detailed routing will absorb it. Large contiguous regions of overflow mean detailed routing will run for hours and then fail, and the honest response is to go back to §3.1 rather than to try router settings.
# Which layers signals may use. Reserving met5 (and often met4) for the
# power grid is normal - but every layer you reserve is track supply the
# signal router does not have.
set ::env(RT_MIN_LAYER) "met1"
set ::env(RT_MAX_LAYER) "met4"
# Deliberate pessimism given to the global router: pretend fewer tracks
# exist than really do, so it spreads nets out and leaves detailed
# routing room to manoeuvre. 0.15 = "assume 15% of tracks are gone".
set ::env(GRT_ADJUSTMENT) 0.15
# Let the router rip up and reroute more aggressively when it is stuck.
set ::env(ROUTING_OPT_ITERS) 64
# Symptom -> response:
# scattered overflow -> raise GRT_ADJUSTMENT slightly, carry on
# one dense overflow blob -> a floorplan or RTL problem, not a router one
# DRC errors after detail -> usually pin access: cells too tightly packed
5.3 Antenna violations and diodes
This is the one physical-design rule that has nothing to do with electrical behaviour of the finished chip. It is about damage inflicted during manufacturing, and it catches every newcomer because the layout looks perfectly correct.
Metal layers are patterned in a plasma etch. Plasma is charged, and an exposed metal segment collects that charge. If the segment is connected to a transistor gate but not yet to any diffusion, the charge has nowhere to go: voltage builds across the gate oxide, which at 130 nm is only a few nanometres thick. Enough charge ruptures it.
| Fix | How it works | Cost |
|---|---|---|
| Layer jumping | Break the long run: go up to a higher layer for the middle section and back down. The lower segment attached to the gate is now short | Two extra vias, a little resistance. Usually the first choice |
| Diode insertion | Attach a reverse-biased diode to the gate node. During etch it leaks the charge into the substrate; in normal operation it is off | A cell site plus a little capacitance on the net |
| Buffer insertion | Splitting the net also splits the metal, and the buffer's output is a diffusion node | A real cell, real delay - but it may have been wanted anyway |
# Two strategies. Both are legitimate; the trade is area against runtime.
# 1. Fix reactively: route, check, insert diodes only where needed.
set ::env(DIODE_INSERTION_STRATEGY) 3 ;# OpenROAD's repair_antennas
# 2. Fix pre-emptively: place a fake diode on every cell input up front,
# then swap the unused ones for filler. Costs area, but converges in
# one pass rather than several.
# set ::env(DIODE_INSERTION_STRATEGY) 2
# set ::env(DIODE_CELL) "sky130_fd_sc_hd__diode_2"
# Verify afterwards - this is a sign-off check, not an optimisation.
# check_antennas
5.4 RC extraction and SPEF
With metal on the die, the parasitics are finally computable. Extraction walks the routed geometry and, for every net, produces a resistance and capacitance network: resistance from the metal's sheet resistance and its length, capacitance to the substrate below, to the plates above, and - critically - to the neighbouring wires alongside.
The result is written to SPEF - one entry per net, with its resistors, ground capacitors and coupling capacitors. STA reads it and computes real wire delay instead of an estimate.
*SPEF "IEEE 1481-1998"
*DESIGN "counter"
*T_UNIT 1 PS
*C_UNIT 1 FF
*R_UNIT 1 OHM
*D_NET net_1247 18.4304 // total capacitance of this net, in fF
*CONN
*I *3251:A I *L 0.0024 // an input pin (a load)
*I *1180:X O *D sky130_fd_sc_hd__buf_2 // the driver
*CAP
1 *3251:A 4.1102 // node capacitance to ground
2 net_1247:2 6.8871
3 net_1247:2 net_998:4 2.9014 // COUPLING to another net -> crosstalk
*RES
1 *1180:X net_1247:2 118.4 // ohms of metal between driver and node
2 net_1247:2 *3251:A 94.7
*END
5.5 Why post-route timing changes
Here is the accounting. Your critical path has been quoted at four different numbers by four different stages, and each increase has a specific cause.
| Stage | Path delay | What was newly modelled |
|---|---|---|
| Post-synthesis | 6.20 ns | Gate delay only. Wires assumed ideal or statistical |
| Post-placement | 7.05 ns | Estimated wire length from real cell positions |
| Post-CTS | 7.35 ns | Real clock skew and insertion delay replace the uncertainty guess |
| Post-route (SPEF) | 8.10 ns | Actual metal R and C, every via, detours around congestion |
| Post-route + SI | 8.35 ns | Crosstalk delta delay from coupling capacitance |
Five contributors explain the 2.15 ns of growth, and each is a different lever:
- Real wire RC. The largest single term. Placement estimated a straight line; the router took a Manhattan path with detours.
- Via resistance. Each via is a few ohms, and a net crossing four layers twice has eight of them. On a heavily layer-jumped net this is not negligible.
- Detours. A congested region forces the router the long way round. This is why congestion is a timing problem, not only a completion problem.
- Slew degradation. Larger real loads mean slower edges, and slower edges mean the next gate is slower too - the compounding effect from §1.3.
- Crosstalk. A neighbour switching the opposite way through a coupling capacitor makes your transition slower; switching the same way makes it faster. STA with signal integrity enabled models both, and the pessimistic case is what signs off.
Interview grilling - "How would you fix a post-route path that is 70% wire delay?"
The split between cell delay and net delay is the diagnosis, and 70% net says the problem is distance, not logic. Work from cheapest to most disruptive:
- Buffer the long net. The quadratic means splitting a long wire in half is a large win. This is the first thing post-route optimisation tries, and often the only thing needed.
- Promote it to a higher metal layer. met4 has far lower sheet resistance than met1. Costs two vias, and the net has to be important enough to justify the track.
- Widen and space it. Non-default routing rules lower R and cut coupling capacitance. Standard practice for clock nets and long buses.
- Move the endpoints closer. If the two cells are on opposite sides of the die, no amount of wire engineering fixes it - the placement or the floorplan is wrong, and that is a much bigger conversation.
- Pipeline it. If the distance is genuinely irreducible, add a register stage. This is an RTL change with an architectural consequence - an extra cycle of latency - so it is the last resort and it needs the front-end team.
The point that separates a strong answer: "I would also check whether the path is long because of congestion detours rather than genuine distance. Those look identical in the timing report but have completely different fixes."
Volume 05 recap
| Concept | The one thing to remember |
|---|---|
| Metal stack | Higher = thicker = lower R, but coarser pitch and fewer tracks. |
| Preferred direction | Alternating H and V is what makes routing solvable. |
| Global route overflow | Scattered is fine. One dense blob is a floorplan problem. |
| Antenna rule | Damage during etch, not in operation. Jump layers or add a diode. |
| Wire delay | Grows with L². Buffer, do not widen. |
| SPEF | R, ground C and coupling C per net. Sign-off needs it. |
| Post-route growth | 25-35% is normal. Much more means detours. |
| Crosstalk | Coupling C makes a neighbour's switching your delay. |