NCC finds mismatches by applying two partitioning techniques in sequence. First it uses local partitioning and then it uses hash code partitioning. If local partitioning finds mismatches, then NCC reports only those. The mismatches in local partitioning of parts and wires are grouped under nodes with names "Parts [X]" and "Wires [X]", where "X" is the number of mismatched local partitioning classes (see figure below). Each class node represents a class of parts or wires sharing the same local characteristics.
Parts are partitioned into equivalence classes based upon their type and the number of wires attached to them. The figure below shows a list of two part classes.
The tree node corresponding to the
first class is selected and has the name
#3 [4]: mipscells:mux2
which has the following meaning:
#3
The sequence number of this class[4]
The number of mismatched parts in one of the two cells, whichever is
bigger. In our example, the schematic cell has 4 mismatched part
in this class and the layout has 3 mismatched parts in this
class. The maximum of 4 and 3 is 4 and, therefore, the tree node
has "[4]" in its name.mipscells
Part librarymux2
Part
typeIn the example above, part types were enough to partition parts into classes. In many other cases, like the one in the figure below, types are not enough and the number of different wires attached to a part is employed as an additional partitioning criterion.
When a part class node is selected, the right half of the window displays a two-column table. Each column corresponds to one of the compared cells and has a list of that cell's parts which belong to the selected part class. Matched parts are printed in green.
Parts on the same line match each other. Mismatched parts are printed in red in no particular order.
NCC partitions wires into equivalence classes based upon the number of different port types attached to them. Examples of port types include an NMOS "gate" port, a PMOS "diffusion" port, and a NAND "output" port. Port type counts are represented as a list of leaf nodes under the wire class node. Since zero-value counts at the beginning of the list tend to be numerous and are rarely used by designers, they are further grouped under a "0's"; node.
For example, in the figure below, the second wire class is expanded and we can see its four characteristics, the first three of which are "zero". The first characteristic has a leaf node called "pads180nm_150um:PAD_raw welltapL ports", which means that wires in this class are not attached to the port "welltapL" of the part "PAD_raw" from the library "pads180nm_150um".
The fourth characteristic is "1 = number of pads180nm_150um:PAD_raw padRaw ports". The name suggests that all wires in this class are connected to the "padRaw" ports of 3 instances of parts with type "PAD_raw" from library "pads180nm_150um".
When a wire class node is selected, the right half of the window displays a two-column table (see figure below). Each column corresponds to one of the compared cells and has a list of that cell's wires which belong to the selected wire class. Matched wires are printed in green, the two wires on the same line match each other. Mismatched wires are printed in red in no particular order.
The tree node names contain the first mismatched wires from both lists.
For example, in the above figure, the first wire class has the node name
#1 : {alucontrol[2],...} { } [3]
which has the following meaning:
#1
The sequence number of this class.{alucontrol[2],...}
The first mismatched wire in the first cell's list is called "alucontrol[2]"
The ellipsis after the name suggest that there is more than one wire in the list.{ }
The name of the mismatched wire in the second cell's list (nothing is found).[3]
The number of mismatched wires in one of the two cells, whichever is
bigger. In our example, the schematic cell has 3 mismatched wires
in this class, and the layout has 0 mismatched wires in this
class. The maximum of 3 and 0 is 3, and therefore, the tree node
has "[3]" in its name.
If local partitioning fails to find a mismatch, then NCC reports mismatches found by hash code partitioning under the nodes labeled "Parts (hash code)" and "Wires (hash code)". Unlike their local partitioning counterparts, hash code partitioning classes do not have any characteristics.
It is possible to select more than one class by holding the Control (Command on Macintosh) or the Shift key during selection. In this case, the right side will have multiple rows, one row per class. The figure below shows what is displayed when the three wire classes in the figure above are selected. Up to five classes can be displayed at once. Rows are arranged in the order in which the classes are selected.
Selecting one or more subnodes of a class node is equivalent to selecting the class node itself. This means that no class appears twice in the table on the right. If some node of a type different from Parts, Wires, Parts (hash code), or Wires (hash code) is selected as well, then it has a higher display priority and its contents are displayed instead. For example, if an exports node was selected with the three wire class nodes, then the export table would be displayed on the right.