Electric is able to compare two different cells and determine whether their networks have the same topology. This operation is sometimes called Layout vs. Schematic (LVS), but because Electric can compare any two circuits (including two layouts or two schematics) the term Network Consistency Checking (NCC) is used. Electric's NCC system is based on the Gemini work of Carl Ebeling (see Ebeling, Carl, "GeminiII: A Second Generation Layout Validation Program", Proceedings of ICCAD 1988, p322-325.)
To compare two cells, use these commands (in menu Tool / NCC):
There are a small number of NCC options available in the "NCC" preferences (in menu File / Preferences..., "Tools" section, "NCC" tab). Please ignore everything in the "Size Checking" panel because NCC Size Checking is presently disabled because it is not yet ready for general distribution.
In the "Checking All Cells" panel the "Halt after finding the first mismatched Cell" check box determines whether the command "Flat NCC each cell in the design, current cell is root" stops when it finds the first mismatching Cell. It's generally a good idea to stop because an error in a child Cell often creates many errors in its parents. Once you fix the child Cell a second invocation of the command will continue where it left off. The command remembers which Cells have compared successfully just for the duration of the program. However, if you exit and restart Electric and rerun the command it will start from scratch. | ![]() |
In certain situations the designer must annotate Cells to tell NCC what he means. It is quite common for a layout Cell to have two or more exports that are intended to be connected by the parent of the Cell. For example, a layout Cell might export vdd, vdd_1, and vdd_2 with the expectation that the parent Cell will connect power to all three exports. However, the schematic Cell might be drawn with only one Export, vdd. In order to get the comparison to pass, the designer must add to the layout Cell an attribute named "NCC" with the value string:
exportsConnectedByParent vdd vdd_1 vdd_2
Alternatively, the designer can use regular expressions. For example, the following annotation is quite common:
exportsConnectedByParent vdd /vdd_[0-9]+/
Another situation where an annotation is useful is if you already know that a child cell has an error but you are sure that this error won't affect the NCC results of ancestor Cells. For example, the annotation:
skipNCC the Bozo that drew this layout didn't make the Export names match the schematic
tells NCC not to bother comparing this particular Cell. Note that all characters following the token "skipNCC" to the end of the line are presumed to be a caustic editorial comment to be displayed prominently during the execution of the command.
Multiple NCC annotations may be added to a single NCC attribute by including each on a separate line.
For an example of network consistency checking, open the Samples library (in menu Help / Load Samples Library) and compare the cells "tool-NCC{lay}" and "tool-NCC{sch}". These two cells are equivalent and the checker will find them to be so.