What does check_routes catch that check_lvs doesn't, and vice versa?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
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.
Technical Explanation
check_routescovers routed signal nets and, by default, skips user nets, frozen nets (those withphysical_statusset tolocked) and PG nets. It reports design rule violations of every kind, open nets, antenna violations and voltage area violations.check_routessaves its results to thezroute.errerror data, which later commands such asroute_detail -incremental true -initial_drc_from_input truecan read.- By default
check_routescaps reported open nets at 200. Use-report_all_open_nets trueif you need the full list. - With
-coordinates,check_routeschecks only DRCs in that area, not opens or antenna. Treat it as a local check. check_lvscovers signal, clock and PG nets. It checks shorts, opens and floating net shapes, pieces of metal that belong to a net but touch none of its pins.check_lvsdoes not check antenna rules or spacing rules. It is about connectivity only.- By default
check_lvsreports at most 20 violations per type. Set-max_errors 0to see them all, and use multithreading throughset_host_optionson large blocks.
What To Check
check_routes: DRC count by type, open nets, antenna violations and voltage area violations.check_lvs -max_errors 0: shorts, opens and floating routes, with no reporting cap.- Any short or open between PG nets, which only
check_lvssees by default. - Whether either report was truncated by its default limit.
Command Checks & Actions
check_routesDRC, open net, antenna and voltage area check on routed signal nets; writes `zroute.err`.
check_lvsShort, open and floating shape check across signal, clock and PG nets.
check_lvs -max_errors 0Removes the default limit of 20 reported violations per type.
check_routes -drc false -open_net false -antenna true -voltage_area falseRuns only the antenna part of `check_routes` when that is the question you are asking.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Both checks run on the final database: zero opens and shorts in both, DRCs and antenna at zero or reviewed.
- Suspicious (illustrative): Only
check_routeswas run, so PG shorts and floating shapes are unknown. - Hard stop: A short or open in either report, or a report that hit its default cap and was not rerun.
Common Mistake
The Trap: Running only check_routes and calling the block connectivity-clean. check_routes does not check PG nets as nets, so a VDD strap shorted to a VSS strap by a hand edit is never reported. check_lvs would have shown the short in seconds, and the block goes to physical verification with a real failure.
What The Interviewer Is Testing
- Whether you know which net types each check covers by default.
- Do you know that antenna and spacing live in one check and floating shapes in the other?
- A strong answer shows you check for truncated reports before calling a block clean.
Follow-up Question & Model Response
"What is a floating shape, and why does it matter?"
Candidate Model Response: It is a piece of metal assigned to a net that does not connect to any pin of that net. Typical sources are leftover stubs after rerouting or pieces of a hand edit. It carries no signal, but it still adds capacitance, can cause DRCs, and some flows treat it as an LVS mismatch. check_lvs finds these. remove_redundant_shapes can clean up floating and dangling shapes on nets that have no DRCs, and you rerun both checks afterwards.
Practical Example
Tapeout Scenario: A routed block returns the following (illustrative). check_routes: 0 opens, 6 DRCs, 2 antenna violations. check_lvs, with its default cap: 0 opens, 1 short, 20 floating routes. Rerun with -max_errors 0, it shows 1 short and 37 floating routes. The short is between a VDD and a VSS strap after a hand edit, which check_routes never looked at because it does not check PG nets. The floating routes are leftover stubs from an ECO, cleared with remove_redundant_shapes.
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