What are equivalence points in hierarchical LVS?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
An equivalence point is a pairing of a schematic cell with a layout cell that LVS compares as its own unit. Hierarchical LVS compares these pairs separately, so an error is reported against a small cell instead of the whole chip. IC Validator takes pairs from equiv_options() (ICV), from a file passed with -e (ICV), or generates its own, and writes the list it used to equiv.run (ICV).
Technical Explanation
- Each pair is compared on its own. Once a pair matches, the parent compare treats it as a known block, which keeps the work and the error report local.
- If you do not supply an equivalence file, the compare builds one, drops points that do not help, and writes the final list to
equiv.run(ICV). -gse true|false(ICV) turns system-generated equivalence pairings on or off, overriding the setting inlvs_options()(ICV). Turning it off leaves only your own pairs.-e(ICV) addsequiv_options()(ICV) andlvs_black_box_options()(ICV) calls from a file. Those entries add to any in the runset rather than replacing them.- The compare directory gets one subdirectory per equivalence point, named after the layout cell. A
sum.cell.cell(ICV) summary is written there when that point has errors or warnings, with device counts, merged nets and unmatched items. - When a pair cannot be compared as a unit, the structures are exploded into the parent. The
lay.cellandsch.cell(ICV) netlists show the result after that exploding, and the error moves up a level, where it is harder to read. - Good points are cells whose layout boundary matches the schematic boundary: standard cells, memories, repeated blocks. Bad points are cells whose devices depend on shapes in the parent.
What To Check
- The LVS summary in
cell.RESULTS(ICV): top equivalence points, equivalences checked, successful and failed. cell.LVS_ERRORS(ICV), which lists failed equivalence points sorted into high and low priority.equiv.run(ICV) against your intended list: missing cells, unexpected system pairs.- The
sum.cell.cell(ICV) file for the lowest failed point first.
Command Checks & Actions
icv -i top.gds -c top -e equiv_cells.rs lvs_runset.rsAdds your equivalence pairs from a file on top of those in the runset.
icv -i top.gds -c top -gse false -e equiv_cells.rs lvs_runset.rsRuns with only user pairs, to see whether a system-generated pair is causing the failure.
equiv.runLists the equivalence cells actually used in the run.
cell.RESULTSSummarizes checked, successful and failed equivalences, failed pairs listed first.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): All equivalences pass,
equiv.run(ICV) matches the intended list and no pair was exploded into its parent. - Suspicious (illustrative): One low-level pair fails and three parents fail with it, or a system-generated pair appears for a cell you meant to compare flat.
- Hard stop: The top equivalence point fails with an empty or unreadable
sum.cell.cell(ICV) because everything below was exploded. Fix the lowest failing pairs before touching the top.
Common Mistake
The Trap: Debugging the top cell first. The top fails because a buffer cell pair two levels down fails and was exploded into its parents, so the top report is noisy and indirect. The buffer's own sum.cell.cell (ICV) names the missing contact in minutes.
What The Interviewer Is Testing
- Can the candidate explain why pairs make LVS errors local?
- Knowledge of
-e(ICV),-gse(ICV) andequiv.run(ICV). - Working bottom-up through failed equivalences.
Follow-up Question & Model Response
"Why does a failure in a small cell make its parents fail too?"
Candidate Model Response: The parent compare relies on the child pair matching so it can treat it as a known block. When the child fails, the tool has to explode it into the parent and compare the devices there. The parent now contains the child's error plus extra devices to match, so it often fails as well. Fixing the lowest failing pair usually clears the parents in the next run.
Practical Example
Tapeout Scenario: An LVS run reports 9 failed equivalences out of 1,410 checked (illustrative). cell.LVS_ERRORS (ICV) lists a level-shifter pair as high priority; the other 8 are its parents. Its sum.cell.cell (ICV) shows one unmatched PMOS whose bulk connects to the wrong well tie. After fixing the cell layout, the rerun shows 1,410 checked and 0 failed.
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