In this article, we walk through three practical examples using NETGEN to tackle common Layout versus Schematic (LVS) issues in VLSI design. We start with a simple introduction to the topic and explain a buffer circuit, which we use in our example spice file. We also compare SPICE files obtained from schematic and the other one extracted from layout and highlight why LVS tools are essential. By exploring common problems like missing global definitions and mismatched device counts, we provide step-by-step guidance on troubleshooting. Finally, we break down the NETGEN output log file to help you confidently identify and fix LVS errors.
Basic of buffer circuit:
This is a buffer circuit. It is comprised of 2 inverter. If Vin = 0/1 after 2 inversion Vou =0/1 .So voltage level there will be no change. And the single inverter is comprised of 2 MOSFET. One is pFET, another one is nFET. So pFET and nFET, their width and length are mentioned 1.8 micron, 0.6 micron respectively, width and length. So this is the buffer circuit that data we will use in the spice files. Now let's compare 2 spice files.
Comparison of .spice files:
# bufferA.spice : Generated from a layout in Magic. Starts numbering transistors from 1000(That is the convention). Includes details about transistor area and perimeter for more accurate simulation. Lists device width, length, area and perimeter details.
# bufferB.spice : Created with a schematic capture too/written manually. Uses the non-standard keyword .backanno. Pin order for the "inverter" subcircuit differs frombufferA.spice. Lists device width and length but lacks area and perimeter details.
With our plane eyes , if we try to compare, we will find many differences between two spice files although they represent same circuit. This is the scenario in a very small and simple circuit. And now just think, if the circuit is really big and complex, it's impossible to compare them with eyes. That's why we need tool. An LVS tool is important for that.
Run & Explanation of 1st Example:
We will run LVS with NETGEN for files bufferA.spice and bufferB.spice along with an empty setupfile.tcl
# Command : netgen lvs bufferA.spice bufferB.spice setup.tcl lvs_run.out
The output file mentions about the mismatch in device properties mentioned across spice files although finally the circuits match uniquely as both the spice file represent same circuit.