![]() |
9-6: Network Consistency Checking (NCC, or LVS) |
![]() |
Electric is able to compare two different facets 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 facets, use the NCC Control and Options... subcommand of the Network command of the Tools menu.
The top part of the dialog lists the two facets that are to be compared. If two different facets are currently being displayed on the screen, they are loaded into the dialog. Otherwise, you can select the facets with the "Set" buttons. After the first use of this dialog, it remembers the last two facets that were compared.
The bottom of the dialog has buttons for running NCC ("Do NCC") and for doing a "Preanalysis" (a quick comparison of the facets that can discover comparison problems without doing the full analysis). The preanalysis shows networks and components in the two facets and lets you examine those that are different. The "Save" button saves the changes made in the dialog without doing any analysis.
For an example of network consistency checking, open the library "samples.txt" and compare the facets "tool-NCC{lay}" and "tool-NCC{sch}" (you can read the library with the Readable Dump subcommand of the Import command of the File menu). These two facets are equivalent and the checker will find them to be so.
When you request comparison, the system displays the number of components, networks, and other information in each facet. Inconsistencies in these numbers generally lead to failure of comparison. If inconsistencies are found, you will be asked if you want to stop, do a Preanalysis, or continue with the full NCC.
When comparison fails, you can review the errors by typing ">" and "<" to step to the next and previous error that was found.
Once compared successfully, nodes and arcs in one facet can be matched to those in the other simply by selecting one and using the Show Network subcommand.
To control the network consistency checker, use the center portion of the NCC Control and Options... dialog. The options on the left are defaults for all facets. Some of these options can be overridden for individual facets by selecting that facet and choosing the "Yes" or "No" override buttons on the right. Note that overrides apply to schematics and not their icons (icon facets are not shown in the list). To see a list of all overrides that exist, use the "List all overrides" button.
For an initial comparison of two facets, it is best to leave all options off. The system can automatically detect some of the options, and you can choose to select others as needed.
When checking a particular facet, the NCC can ignore or examine the contents of instances. If "Expand hierarchy" is checked, then all circuitry below the current facet is extracted and considered with the facet. Otherwise, facet instances are only compared by their connections without regard to their contents. To help align two hierarchies that are structured differently, this option can be applied selectively to different facets.
The "Merge parallel components" checkbox instructs the NCC to consider multiple components wired in parallel to be a single component. When this option is selected, two or more parallel components will correctly match a single, larger component in the other facet.
The "Merge series transistors" checkbox instructs the NCC to consider multiple transistors wired in series to be a single, complex component. When this option is selected, the order of wiring gates to these transistors will not be ignored.
The NCC remembers the time at which a successful NCC was done and marks the matched facets so that they are not checked again (if they haven't changed). The "Clear valid NCC dates" button removes this information, forcing the NCC to run again. Note that the button also removes all "NCCmatch" tags that are created by the matching process.
"Ignore power and ground" instructs the NCC to ignore all power and ground networks. This is useful when the layout has power and ground but the schematic doesn't.
The "Check export names" check instructs the NCC to check export names for consistency after a match is found. If exports are named differently in the two circuits, warnings will be issued.
"Check component sizes" instructs the NCC to compare component sizes after a match is found. Unless this is checked, component will be equated only according to their connectivity, and not their size. The size tolerance fields allow slop in the percentage and absolute difference between two components.
The network consistency checker can work on the current facet, or it can recursively check each facet from the current point on downward. To recursive check individual levels of the hierarchy, uncheck the "Expand hierarchy" box and check the "Recurse through hierarchy" box.
Two "Verbose" checkboxes request textual and graphical debugging information.
During comparison, there are often situations where a group of networks or components from one facet are equivalent to a group in the other facet. Because they are structurally ambiguous, the NCC tries to disambiguate them and achieve a complete match. The first thing that is checked is names (export names, network names, or node names). Node names are used even at higher-levels of the hierarchy, so you can name instances as an aid to comparison.
Other techniques for disambiguation include node sizes, and random guessing. When a random guess is made, tags are placed in the circuit to show what was presumed. These labels have names like "NCCMatch3" and are placed on nodes or arcs to indicate presumed association. The "Show 'NCCMatch' Tags" requests that these automatically-generated equivalence markers be displayed in the circuit.
![]() |
Previous | ![]() |
Table of Contents | Next | ![]() |