BeginnerQuestion 161 of 187Source: Synopsys IC Validator User Guide: LVS-Specific Output Files

What does LVS actually compare?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

LVS compares two netlists: the reference netlist the design was built from and a netlist IC Validator extracts from the layout geometry. It matches devices and their types and properties, how the device terminals connect into nets, and the ports at the top and at each equivalence point. It does not look at timing or rule spacing, only whether the layout is the same circuit.

Technical Reference DiagramWhat does LVS actually compare?
Two netlists side by side, the reference schematic netlist on the left and the netlist extracted from layout on the right, with matching devices, nets and ports linked by arrows and one unmatched net highlighted in red.

Technical Explanation

  • The reference side is usually a SPICE or Verilog netlist of the block, with standard cells and macros expanded down to the level the LVS runset expects. On the command line it is supplied with -s (ICV) and its format with -sf (ICV), which accepts SPICE, VERILOG or ICV.
  • The layout side comes from extraction. The runset recognises devices from layer combinations, for example a gate where poly crosses diffusion, and builds nets by following connected metal, vias and contacts. Text labels on pins give extracted nets their names.
  • Devices are matched by type and by properties the runset asks for, such as transistor width and length. A missing device, an extra device or a device with the wrong size is an LVS error even if the connectivity looks right.
  • Connectivity is matched structurally, not by name. The comparison finds nets whose connected device terminals match on both sides. Names help anchor the match at ports, but two nets swapped by mistake can still be detected because their connections differ.
  • Ports matter. A top-level pin with the wrong label, or two pins shorted together, shows up as a port mismatch. The compare() (ICV) function performs the comparison and writes cell.LVS_ERRORS (ICV), the starting point for debug.
  • Hierarchy is handled through equivalence points: pairs of cells that exist in both netlists and can be compared once and reused. The cell.RESULTS (ICV) LVS summary reports how many equivalences were checked, passed and failed.
  • Extraction can itself report problems before the compare starts, such as a text label that lands on no shape or shapes that cannot be classified as a device. For an LVS run, cell.RESULTS (ICV) reports these on its second header line, DRC and Extraction Results: CLEAN | NOT CLEAN (ICV), and they should be cleared first because they distort the compare.
  • LVS says nothing about whether a circuit works. If the reference netlist has a bug, LVS confirms the layout faithfully contains the same bug.

Common Mistake

The Trap: Running LVS against a reference netlist written out before the last functional ECO. The layout contains two new buffers and a rewired enable, so LVS fails with dozens of mismatches, and the engineer spends a day "debugging" layout that is actually correct. Always regenerate the reference netlist from the same database state as the GDS, and record the netlist and GDS timestamps next to the LVS result so anyone rerunning it can confirm the pair belongs together. A mismatched pair is one of the most common causes of a false LVS failure late in a project.

Follow-up Question & Model Response

"Why can LVS still find a problem when every net name in the layout matches the schematic?"

Candidate Model Response: Because LVS matches structure, not only names. If two nets carry the right labels but a via connects one of them to a third net, the extracted device connections no longer match the reference, and the comparison fails. Likewise a device with the wrong width fails on properties. Names are anchors that make the match faster and error reports readable. The proof comes from the topology and device comparison.

Practical Example

Tapeout Scenario: A small block has 48,000 standard cells expanded to about 610,000 transistors in the reference netlist (illustrative). Extraction from the layout finds 610,002 transistors. The two extra devices sit inside a decap cell whose GDS version differs from the one assumed by the reference. cell.LVS_ERRORS (ICV) lists the decap as a failed equivalence with two unmatched devices. Updating the reference to the matching cell version gives LVS Compare Results: PASS (ICV) with all equivalences passing. No layout change was needed; the error was in what the layout was being compared against.

PnR Flow Mentor Guide

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.

PnR Flow Physical Design Mentor Guide — eight chaptersPnR Flow Mentor GuideEight chapters, library setup through to stream-out. →