There are three different comparison modes, which can be selected with the notebook tabs at the top of the panel. The Per-Cell Objects mode will compare objects directly: box-to-box, poly-to-poly, etc. A difference will be recorded if an object does not have an identical counterpart in the other cell. In this mode only, there is provision for comparing the properties of the cells, objects and instances. In other modes, properties are ignored.
The Per-Cell Geometry mode will first convert the geometry to trapezoids, then compare the coverage of the trapezoid lists. Only differences in the actual dark-area will be reported. Both of these modes apply only to the geometry within a cell. The third mode, Flat Geometry, will compare the geometry after (logically) flattening the hierarchy. More detail will be provided below.
The lower half of the panel provides input areas for parameters that are used in any mode. The top two groups provide the sources to be compared. The Source entries can contain the name of a layout file in any of the supported formats, or the name of a Cell Hierarchy Digest (CHD) in memory. If left blank, the source is taken as the main database. Both Source entries may be blank in Per-Cell Objects mode, in order to compare cells in memory (in the current symbol table). The second Source entry can be left empty in any but the Flat Geometry mode, in which case the cells to compare must exist in memory, in the current symbol table. The top (left pointing) Source is the ``reference'' when the list of cells to compare is generated, so there is an asymmetry that should be kept in mind, which will be further discussed below.
If a file name is given as a source, a temporary CHD is created for use during the comparison, and is destroyed when the operation completes. Thus, when doing repeated comparisons, it is more efficient to create a CHD first, and reference this CHD for comparisons.
The actual list of cells to compare is generated from entries in the Cells and Equiv entry areas by logic to be described. These entry areas, if not blank, should contain space-separated cell names.
In many cases, there is only one list of cells to compare, and each cell is sought in both sources. If a cell is found in one source and not the other, this will appear in the log file, but is not considered to be an error. The cells list in this case is always given in the Cells entry.
If an Equiv list is given, there must be exactly the same number of entries given in the Cells list. The cells in the two lists will be compared term-by-term, in order. This is how one can compare cells with differing names. In all other cases, the Equiv list should be left blank. It is an error if Equiv entries are given with Cells blank, or if the list lengths differ. However, the Equiv list is ignored if in a per-cell comparison mode and Recurse Into Hierarchy is checked.
The interpretation of a blank Cells list depends on the comparison mode. If in flat comparison mode, or in a per-cell mode and the Recurse Into Hierarchy button is set, then the assumed cell list contains only the default cell from the top (left pointing) source. If this was a CHD name, the default cell is the one configured into the CHD, or the first top-level cell found in the source file. In the other cases, a blank Cells list is interpreted as all cells found in the top (left pointing) source.
In the special case that neither a left or right source is specified, then the Cells and Equiv lists can not be empty, and the names are cells in memory to compare.
In the per-cell modes with Recurse Into Hierarchy set, each entry in the Cells list is hierarchically expanded to a full list of the cells under the given cell, and these names are merged into a new list that contains no duplicates. If no Cells list was given, per the discussion above, the cell list is effectively the hierarchy of the default cell from the first source.
Below the source groups is a provision for layer-filtering. This is active when one of Layers Only or Skip Layers is pressed. The list contains space-separated layer names. With Layers Only active, only objects on the listed layers will be compared. With the Skip Layers button pressed (which deactivates Layers Only and vice-versa), only layers not listed will be considered. If neither button pressed, or if the layer list is empty, all layers will be considered.
During comparison, differences are recorded in an output file. By default, geometric differences are saved in a CIF-like format, providing lists of objects that appear in one cell but not the other. If the Differ Only check box is active, the geometric information is not written to the file, only the information that the cells differ.
The maximum number of differences that are recorded can be set with the Maximum Differences input area. If 0, then there is no limit. Otherwise, when the limit is reached, the comparison will terminate. It is usually advisable to set a limit, as an error in the source specification can potentially produce enormous output.
Pressing the Go button initiates comparison. When the job finishes, the user is given the option of viewing the log file. The log file is always named diff.log and is created in the current directory. An existing file of the same name is moved to a new name with a .bak extension added. The !diffcells command can be used to create cells from the log file for visualizing the differences.
The Dismiss button retires the panel. All entries are persistent, meaning that the panel will contain the same entered content the next time it appears.