Place & Route (PnR) for VLSI Physical Design Mentor Guide, 60 questions

Routing & Postroute: PnR Interview Questions and Answers

Global, track and detail routing, congestion, vias, antenna, crosstalk, NDRs, postroute optimization and routing signoff checks.

Beginner Routing & Postroute #98

What does routing do, and where does it sit in the PnR flow?

Routing turns every logical connection into real metal. Before this stage a net is only an estimate, a straight or Steiner line the tools use to guess wire length and delay. The router replaces that guess with wires on real layers, joined by vias, that obey every width and spacing rule in the technology file.

Beginner Routing & Postroute #99

What must be true before you start routing?

The block has to be routable and roughly timing-clean before the router touches it. That means power and ground already routed, clocks built and propagated, estimated congestion acceptable, estimated timing close to zero slack, no max capacitance or transition violations, and a clean `check_routability`. Zroute also needs every design rule defined in the technology file, because that is the only place it reads rules from.

Beginner Routing & Postroute #100

What is the difference between global routing and detail routing?

Global routing decides which regions a net passes through; detail routing decides exactly which tracks, layers and vias it uses. Global routing works on a coarse grid of global routing cells (GCells) and never draws real geometry. Detail routing draws the actual metal on tracks and cleans up every design rule violation.

Beginner Routing & Postroute #101

What are Zroute's engines, and which command drives each?

Zroute, the ICC2 router, has five engines: global routing, track assignment, detail routing, ECO routing and routing verification. The first three can be run one at a time with `route_global`, `route_track` and `route_detail`, or all together with `route_auto`. ECO routing and verification are only reached through their own task commands, `route_eco` and `check_routes`.

Beginner Routing & Postroute #102

When would you run route_global, route_track and route_detail separately instead of route_auto?

Run the steps separately when you want to look at the result of global routing before paying for detail routing. `route_auto` runs all three engines back to back, which is fine on a stable block. On a new or congested block, stopping after `route_global` lets you read the congestion map and fix a hot spot in minutes instead of discovering it hours later as thousands of DRCs.

Beginner Routing & Postroute #103

What is a GCell, and how is its routing capacity calculated?

A GCell (global routing cell, or GRC) is one tile of the coarse grid the global router works on. Its capacity is how many nets can cross it in one direction, which comes from how many tracks fit: the number of layers running that way times the cell size divided by the track pitch. The router compares demand against that capacity in every GCell to decide where congestion is.

Beginner Routing & Postroute #104

What does overflow mean in a congestion report?

Overflow is how many more nets want to cross a GCell edge than there are tracks to carry them. If 14 nets want to cross and only 11 tracks exist, the overflow is 3. `report_congestion` adds overflow up across layers, and it ignores underflow, so a spare layer does not hide a crowded one.

Beginner Routing & Postroute #105

What is preferred routing direction, and why do layers alternate?

Each metal layer has a preferred direction, horizontal or vertical, and the router keeps most wires on that layer running that way. Adjacent layers alternate direction so a horizontal wire on one layer never blocks a vertical wire on the next; they cross using a via. Wrong-way segments are legal but expensive, because they block tracks that other nets need.

Beginner Routing & Postroute #106

How do routing tracks relate to pitch, and why must pins be on-grid?

Tracks are the lines a gridded router places wires on, laid out at the layer pitch, which is minimum width plus minimum spacing. A wire drawn on a track automatically keeps legal spacing from wires on the neighbouring tracks. A pin that does not line up with the track grid forces the router to jog off-grid, and those connections produce DRCs that are very hard to clean up.

Beginner Routing & Postroute #107

How and why do you set min and max routing layers?

Min and max routing layers set the band of metal that signal nets are allowed to use. M1 is usually kept for standard cell pins and the top layers for power and top-level routing, so the block routes in the layers between. Set them with `set_ignored_layers` before placement, because RC estimation and congestion analysis use them as well as the router.

Beginner Routing & Postroute #108

What is a via, and why does via count matter?

A via is the vertical connection between two metal layers: a small cut through the insulator, with metal enclosure around the cut on both the layer below and the layer above. Every layer change in a route needs one. Via count matters because each via adds resistance, often more than the wire around it, and each single-cut via is a yield and reliability risk.

Beginner Routing & Postroute #109

What is a redundant (double) via, and why insert it?

A redundant via adds a second cut next to an existing single cut, so the connection survives if one cut fails. The two cuts also share current, which lowers via resistance and improves electromigration margin. Success is measured by the redundant via conversion rate, the percentage of single vias that were converted.

Beginner Routing & Postroute #110

What does track assignment do between global and detail routing?

Track assignment takes each global route, which only says which GCells a net passes through, and places its long segments on real tracks. It does this across whole rows and columns of the block at once, so parallel nets are spread sensibly before detail routing starts. After it finishes, every net is drawn in metal, but there are still many violations near pins for detail routing to fix.

Beginner Routing & Postroute #111

What is search-and-repair in detail routing?

Search-and-repair is the part of detail routing that clears design rule violations. The router first connects every net, even if that leaves shorts and spacing errors. It then runs repeated iterations that search for violations, rip up the wires involved in a small area, and reroute them until the violations are gone or stop improving.

Beginner Routing & Postroute #112

What are the common routing DRC violations?

The ones you see most are different-net spacing, shorts, minimum area, minimum width and length, end-of-line spacing, via enclosure problems, and open nets. `check_routes` lists them by type and saves the DRCs to the `zroute.err` error data; open nets appear in its text report. Knowing which type dominates tells you where to look for the cause.

Beginner Routing & Postroute #114

What does check_routes catch that check_lvs doesn't, and vice versa?

`check_routes` is the router's verification check: it looks for DRCs, open nets, antenna violations and voltage area violations on routed signal nets. `check_lvs` is a connectivity check across signal, clock and power and ground nets that looks for shorts, opens and floating shapes. They overlap on opens and shorts, but each covers things the other does not.

Beginner Routing & Postroute #115

What is the antenna effect?

The antenna effect is damage to a transistor's gate oxide during manufacturing, not during operation. While the chip is being built layer by layer, a long wire connected only to a gate collects electrical charge from the plasma etch steps. With no driver connected yet to drain that charge away, it can discharge through the thin gate oxide and damage it permanently.

Beginner Routing & Postroute #116

How are antenna violations fixed?

There are two main fixes: layer hopping and diode insertion. Layer hopping breaks a long wire with a short jump to another layer near the gate, so less metal is attached to the gate during the risky etch step; Zroute prefers this by default. Diode insertion adds a protection diode that gives the collected charge a safe path to the substrate.

Beginner Routing & Postroute #117

What is crosstalk, and what are aggressor and victim nets?

Crosstalk is unwanted coupling between two wires that run next to each other. When one wire, the aggressor, switches quickly, the coupling capacitance between them pushes a small voltage onto its neighbour, the victim. If the victim is quiet, that shows up as a glitch; if the victim is also switching, it changes the victim's delay.

Beginner Routing & Postroute #118

What is net shielding, and what does it cost?

Shielding places power or ground wires on both sides of a sensitive net, usually a clock, so no switching signal runs directly next to it. That removes almost all coupling from neighbouring signals. The cost is routing tracks, since one net now takes about three, and extra sidewall capacitance to the shields, which slows the shielded net.

Beginner Routing & Postroute #119

What is a non-default routing rule (NDR)?

A non-default routing rule (NDR) is a stricter set of width and spacing rules, and optionally specific vias, that you assign to chosen nets instead of the technology defaults. It is typically used on clocks and other critical nets: a wider wire lowers resistance and extra spacing lowers coupling. Width rules in an NDR are hard constraints and apply to via enclosures too.

Beginner Routing & Postroute #120

Why are clock nets routed before signal nets?

Clocks are routed first so they get clean routing resources, their NDRs and any shielding, before thousands of signal nets fill the tracks. CTS balanced the tree assuming certain wire lengths and layers; routing the clocks first keeps that intact. If signal nets went first, clocks would be forced into detours that change skew and latency.

Beginner Routing & Postroute #121

What is a routing blockage, and when do you use one?

A routing blockage is a region where routing is not allowed on the layers you name. Zroute treats it as a hard rule, so wires detour around it. You use one to keep routing off sensitive areas, away from macro pins or edges that cause DRCs, or to reserve space, and you add `-zero_spacing` when the goal is to keep vias out.

Beginner Routing & Postroute #122

What is parasitic extraction, and why is it redone after routing?

Parasitic extraction calculates the resistance and capacitance of every routed net from its real geometry. Those values, usually written as SPEF, feed timing and signal integrity analysis. Before routing they are estimates; after routing they come from actual wire length, width, layers, vias and neighbours, so they have to be recalculated.

Beginner Routing & Postroute #123

What sets a wire's resistance and capacitance?

Resistance grows with length and falls with width and thickness. Capacitance depends on how much surface faces other metal and how close it is: long, tall, closely spaced wires have the most. For routing decisions the practical rules are simple: wider wires lower resistance, more spacing lowers coupling, and fewer vias lower resistance further.

Beginner Routing & Postroute #125

What does postroute optimization (route_opt) do?

`route_opt` fixes timing and logical design rule violations after routing, using real parasitics. It extracts, updates timing, then optimizes setup, hold, area and logical DRCs such as transition and capacitance, typically by sizing and buffering cells. It then legalizes the changed cells and ECO routes to connect the changed nets and clear DRCs, which can also touch neighbouring wires.

Beginner Routing & Postroute #126

How do you read routing statistics after detail routing?

Look at three things: wire length per layer, the split between horizontal and vertical wiring, and via statistics including the double via rate. `report_design -routing` gives shape counts, wire length and via statistics, and `report_wirelength` gives length per layer and direction. Together they tell you whether the router used layers sensibly and how much yield protection the vias have.

Intermediate Routing & Postroute #143

What exactly does check_routability check, and what are its defaults?

`check_routability` checks that every pin can actually be reached and that the routing setup is legal before any routing starts. By default it checks blocked standard cell ports, blocked macro and top-level ports, out-of-boundary pins, minimum grid, via definitions, via cut blockages and minimum width settings. The two defaults worth remembering are the search ranges: twice the layer pitch for standard cell pins and ten times the pitch for macro and top-level pins.

Intermediate Routing & Postroute #144

How do you debug a congestion hotspot after global routing?

First find it and measure it: which GCells, which layers, which direction and by how much. Then work out why: too many pins in a small area, a narrow channel between macros, too much wrong-way demand, or tracks lost to blockages or PG. The fix depends on the cause, so the diagnosis is most of the work.

Intermediate Routing & Postroute #145

Which routing guide do you use for which problem?

Routing guides steer Zroute in an area without forbidding routing outright. Use preferred-direction-only or switch-preferred-direction guides to control direction, max-patterns guides to limit non-preferred-direction edges, track utilization guides to control density, access preference guides to prioritize areas, and river routing guides for tight channels. Zroute honours them, but they are softer tools than blockages.

Intermediate Routing & Postroute #146

What is a routing corridor, and how strictly is it honoured?

A routing corridor restricts specific nets to a region made of connected rectangles, optionally with a min and max layer per rectangle. Global routing treats it as a hard constraint, but track assignment and detail routing treat it as soft, so they may step slightly outside to fix a DRC. If a routing guide conflicts with a corridor, the corridor wins.

Intermediate Routing & Postroute #147

How do soft and hard net layer constraints differ?

A hard layer constraint is never broken: the router will not use a layer outside it. A soft one can be broken at a cost if that helps routing. For net-specific constraints set with `set_routing_rule`, the default is min layer soft and max layer hard, and you can change either default or set the mode per constraint.

Intermediate Routing & Postroute #149

Postroute, concurrent or near-100% redundant vias: how do you escalate?

Start with postroute insertion, which almost every block uses. If that reaches about 80% and you need more, move to concurrent soft-rule insertion, which reserves space for second cuts while routing. Only if you already reach about 90% and still need more should you use near-100% insertion, because higher rates make DRC convergence and runtime worse.

Intermediate Routing & Postroute #150

Why and how do you route a subset of nets first?

You route critical nets first so they get clean, direct paths on the layers you want before thousands of other nets fill the tracks. Clocks are the usual example, but timing-critical signals, buses and nets with special rules benefit too. In ICC2 you give the nets their rules, route them with `route_group -nets`, and can lock them so later routing does not touch them.

Intermediate Routing & Postroute #151

Single-layer vs accumulated antenna ratio: which is stricter, and why?

Accumulated modes are stricter than single-layer, because they count metal on the current layer plus every layer below it, while single-layer counts only the current layer. ICC2 has six antenna modes, combining how area is measured (surface or sidewall) with how layers are counted (single-layer, accumulated-ratio or accumulated-area). The foundry rule decides which mode you must use.

Intermediate Routing & Postroute #152

How does crosstalk change delay, not just add noise?

When the aggressor and victim switch at the same time, the coupling capacitance changes how much charge the victim's driver must move. If they switch in opposite directions, the victim sees roughly its own capacitance plus twice the coupling, so it slows down. If they switch the same way, it speeds up, so crosstalk can hurt setup on one path and hold on another.

Intermediate Routing & Postroute #153

How do you make postroute optimization SI-aware?

Turn on signal integrity analysis in the timer before postroute optimization, so extraction keeps coupling capacitance and timing includes crosstalk delta delay. `route_opt` then fixes the paths that actually fail with crosstalk instead of the ones that only look bad without it. You then re-check timing and noise with SI still enabled.

Intermediate Routing & Postroute #154

After optimization changes nets, how do you reroute without disturbing clean routing?

Use ECO routing limited to the changed nets; for a small ECO that is `route_eco -reroute modified_nets_only`. It connects open nets first and then fixes DRCs in the ECO area, leaving everything else as it was. Remember that incremental detail routing does not fix opens, so after netlist changes `route_eco` is the right tool, not `route_detail -incremental`.

Intermediate Routing & Postroute #155

Detail routing DRCs won't converge. What do you check?

First look at the DRC count per iteration to confirm it has really stopped falling. Then group the violations by type and location, because the pattern tells you the cause: a cluster at pins points to pin access, a dense area points to local density, macro edges point to access or blockages, and NDR nets point to rules. Fix that cause and rerun; more iterations rarely help once the curve is flat.

Intermediate Routing & Postroute #156

Why do hard macro pins fail access at smaller nodes, and how do pin access guides help?

Hard macros and IP are often reused from older designs, and at smaller nodes their pins can sit too close to the macro edge, to each other or to blockages for the router to reach cleanly. `derive_pin_access_routing_guides` fixes this by creating routing guides, metal blockages around the macro with cutouts at each pin, and via blockages on the adjacent via layers. The cutouts give every pin a clear, rule-legal path in.

Intermediate Routing & Postroute #157

What are RC extraction corners (Cworst, Cbest, RCworst, RCbest), and why do you need several?

RC corners describe how manufacturing variation in metal width and thickness changes wire resistance and capacitance. Because the same variation pushes resistance and capacitance in opposite directions, no single corner is worst for every path. Cworst maximizes capacitance, RCworst maximizes the resistance-capacitance product, and the best corners are their opposites, used mainly for hold.

Intermediate Routing & Postroute #158

What is inside a SPEF file, and what do you check in it?

SPEF (Standard Parasitic Exchange Format, IEEE 1481) holds the extracted resistance and capacitance of every net. It has a header with the design name and units, a ports section, and one `D_NET` block per net with its connections, capacitors and resistors, including coupling capacitors to other nets. Before trusting one, check its units, that it covers every net, and that it came from the netlist you are timing.

Intermediate Routing & Postroute #159

Why can hold violations appear after routing, and how are they fixed?

Routing changes both clock and data timing. A clock branch that picked up extra delay moves the capture edge later, and a data path sped up by same-direction crosstalk or a short route arrives earlier, so hold margin shrinks. Postroute hold is fixed by adding delay to the data path near the capturing flop, usually with delay cells or buffers, and then re-checking setup.

Intermediate Routing & Postroute #160

What are dangling and floating shapes, and how do you clean them up safely?

A dangling shape is a piece of wire attached to a net at one end that goes nowhere; a floating shape belongs to a net but touches nothing of it. Both are usually left behind by rerouting and ECOs, and they add capacitance and can cause DRCs. `remove_redundant_shapes` deletes them without changing connectivity, but it skips open nets and nets with DRCs, so you re-check afterwards.

Intermediate Routing & Postroute #161

What changes when routing across voltage areas?

Signals crossing between voltage areas must go through the right isolation cells or level shifters, and the router must not create physical paths that break the power intent. Voltage area rules control whether nets may pass through an area and whether buffers can be added there. Cells with secondary power pins, such as always-on buffers, also need those pins routed to the correct supply.

Intermediate Routing & Postroute #162

How does electromigration constrain routing, and what does Black's equation tell you?

Electromigration is metal atoms being pushed along a wire by current over years of operation, which eventually forms voids that open the wire or pile-ups that short it. Black's equation says lifetime falls with the square of current density and falls quickly with temperature. In routing, current density is what you control, so high-current nets get wider wires and more vias.

Expert Routing & Postroute #114

When do you use the Custom Router instead of Zroute?

Use the Custom Router for nets that need geometry Zroute is not built to produce: shielded buses, differential pairs, matched-length groups, and variable-width or variable-spacing routes. Typical cases are DDR interfaces, analog-sensitive nets and critical clocks between blocks. It pre-routes those nets with `route_custom`, and ICC2 then finishes the rest of the design normally.

Expert Routing & Postroute #116

What does chasing near-100% redundant vias cost, and how do you protect timing?

Near-100% insertion treats redundant vias as hard design rules during routing, which costs runtime, sometimes a lot, and makes DRC convergence harder. It only works during initial routing, not ECO routing, and Zroute relaxes it automatically if DRCs will not converge. Timing is protected with the timing-preserve options on `add_redundant_vias`, but only at the very end, because using them early crushes the via rate.

Expert Routing & Postroute #117

What changes in routing at double-patterning nodes?

At double-patterning nodes one metal layer is printed with two masks, so every shape and via gets a mask colour and same-mask shapes need more spacing than different-mask ones. Routing has to assign colours legally, usually automatically during detail routing. Cut metal shapes are used to separate line ends, and writing DEF or GDS needs specific options so masks and cuts carry through.

Expert Routing & Postroute #118

How do spread_wires and widen_wires improve yield, and what do they trade?

A critical area is where a random particle defect would break the circuit: a conductive particle between two wires causes a short, and a missing piece of metal in a narrow wire causes an open. `spread_wires` moves wires apart to reduce short risk, and `widen_wires` makes wires wider to reduce open risk. They compete for the same space, so you balance them and protect timing on critical nets.

Expert Routing & Postroute #119

After routing, ICC2 and PrimeTime with StarRC disagree on slack. Where do you look?

Compare the same path in both tools and find the first stage where they differ, then check the settings that feed it: extraction engine and corner, signal integrity settings, derates and variation, pessimism removal, clock propagation, scenario setup and missing annotations. The goal is to make the two agree, then fix in whichever tool matches signoff. A difference is almost always a setup difference, not a bug.

Expert Routing & Postroute #120

What routing checks are specific to a power-gated domain?

In a power-gated domain you have to prove that everything that must stay alive still has power when the domain is off. That means always-on buffers and their secondary power pins routed to the always-on supply, the isolation enable and switch control nets routed correctly, and no signal from the switched domain reaching always-on logic without isolation. Standard DRC checks do not see any of this, so multivoltage checks are required.