What is the difference between an open and a short after routing?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
An open is a pin that is not connected to the rest of its net, so the signal never arrives. A short is two different nets touching in the layout, so the silicon merges signals that the netlist says are separate. Both are hard failures that must be zero at signoff, and neither shows up reliably in timing reports.
Technical Explanation
- An open happens when routing leaves a gap between a pin and the rest of the net. Common causes are a blocked pin with no legal access, a net left unrouted after an edit, or a routing run stopped early.
- A short happens when metal from two different nets overlaps or touches. Detail routing can leave shorts behind when it cannot clear an area, and manual edits can create them.
- Neither opens nor shorts show up reliably in timing, because timing uses the netlist, which still has the pin connected and the two nets separate. A layout open at most leaves incomplete parasitics on its net. Both have to be caught by
check_routesandcheck_lvs. - A short also creates a fight between drivers in silicon. Two drivers pulling one wire in opposite directions waste power and can produce an intermediate voltage that neither receiver reads correctly.
check_routesreports opens and DRCs on routed signal nets, including shorts.check_lvschecks shorts, opens and floating shapes on signal, clock and power and ground nets together.- The fixes differ. Opens need connection work: ECO routing with
route_eco, or fixing whatever blocks the pin. Shorts need rerouting of one of the two nets, usually incremental detail routing or an ECO reroute in that area. - By default
check_lvsreports at most 20 violations of each type. Use-max_errors 0to see all of them before you conclude a block is clean.
What To Check
- Open net count from
check_routes; it must be zero. - Short count from both
check_routesandcheck_lvs. - Which nets are involved in each short: signal to signal, or signal to power or ground.
- Whether
check_lvshit its 20-per-type reporting cap.
Command Checks & Actions
check_lvs -checks {short open} -max_errors 0Reports every short and open on signal, clock and PG nets without the default cap of 20 per type.
check_routesReports open nets and DRCs, including shorts, on routed signal nets.
route_eco -nets {n1} -reroute modified_nets_onlyConnects an open net after signal routing is complete.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Zero opens and zero shorts from both
check_routesandcheck_lvs -max_errors 0. - Suspicious (illustrative): A handful of shorts between signal and PG shapes near one macro, caught before signoff and understood.
- Hard stop: Any open or short at the point you plan to hand the block off, or a
check_lvsrun that stopped at 20 of a type.
Common Mistake
The Trap: Reading a clean timing report as proof there are no shorts. A junior sees positive slack everywhere and signs off, but two data nets were shorted by a manual edit. Timing still sees two nets. The failure only appears at physical verification, or worse, in silicon.
What The Interviewer Is Testing
- Whether you can explain why shorts escape timing analysis.
- Do you know which check sees PG nets and which does not?
- A strong answer shows you pick the right repair for each: connection for opens, rerouting for shorts.
Follow-up Question & Model Response
"Why does check_lvs matter if check_routes already reports shorts?"
Candidate Model Response: check_routes looks at routed signal nets and, by default, skips PG nets, frozen nets and user-created shapes. check_lvs covers signal, clock and PG nets together and also reports floating shapes, pieces of metal attached to nothing. Shorts or opens between power and ground shapes, and floating pieces of metal left by an edit, only show up in check_lvs. Running both is cheap compared with finding the problem at signoff LVS.
Practical Example
Tapeout Scenario: After a late ECO, check_routes reports 0 opens and 12 DRCs (illustrative), one of them a short between a data net and VSS at a macro corner where a routing blockage had been removed. The engineer also runs check_lvs -checks {short open} -max_errors 0, which confirms that short and finds a second one, between two data nets joined by a hand-drawn jumper that check_routes skipped as a user shape. Neither shows up in timing. The jumper is deleted and the net rerouted with route_eco; the VSS short is fixed by restoring the blockage and rerouting the data net. Both checks then come back clean.
PnR Flow Mentor Guide
Master the Physical Design Implementation Flow
Read the complete 8-chapter PnR Flow Mentor Guide free on the web — library setup through placement, clock tree synthesis, routing, chip finishing, hierarchical implementation, and ECO, all the way to stream-out.

Continue practising