Enhanced LVS Reports in Guardian and Their Inspection

 

1. Introduction

It is well known that analyzing LVS reports is often a difficult and brain-teasing task because the "global" nature of connectivity. Unlike DRC reports, where geometrical violations are usually restricted to two shapes, in LVS one must take into account many "widely separated" elements. In addition, quite often a small netlist error will propagate itself in an avalanche manner. Therefore many efforts are directed to localization of LVS errors in Guardian reports, as well as to means of efficient inspection of these reports.

 

2. Matching Guesses in Guardian

When the Guardian LVS tool finds out that the compared netlists are different, it tries to inform user about possible (potential) matches among unmatched nodes. We will call a record about one potential match a guess record, or matching guess, or simply guess.

When LVS reports about a pair of unmatched nodes as guess? The heuristic behind this is very simple. A pair of unmatched nodes can be matched if there are matched pairs of their neighbors connected to nodes under investigation by terminals of the same type. Let us illustrate this by example. Suppose device MS1 from the schematic netlist is matched to device ML1 from the layout netlist. Their gates are connected to unmatched nets NS001 and NL001 respectively. Then possibly nodes NS001 and NL001 should be matched, and Guardian reports the pair of NS001 and NL001 as matching guess.

An additional condition to reporting an unmatched pair of nodes as guess is the unique way of deducing unmatched neighbors as candidates for match. Suppose two devices MS1 and ML1 are matched and for each of them both their source/drain terminals (NS002, NS003 from schematic, NL002, NL003 from layout) are unmatched nets. It is impractical to enumerate all possible matches: NS002-NL002, NS002-NL003, NS003-NL002, NS003-NL003 and hide "good" guesses in report among all these "weak" guesses. It is especially true for neighbors of matched nets with a large number of connections e.g. power/ground nets, synchronization signal nets.

Matching guess can be deduced from a number of sources. For example, let MS2 and ML2 be two unmatched devices from schematic and layout respectively, and let their gates be connected to a matched pair of nets NS004 and NL004. One of their source/drain terminals NS005 and NL005 are matched also. So we can come to MS2-ML2 guess from two different sources. For a given guess we will call the number of guess "sources" as guess confirmation number. Note here that not every confirmation of guess can generate guess. Actually, some of them can be "weak" guesses.

When the confirmation number for a guess is very close to the overall number of connections for the given node, it is a strong indication that the guess nodes will be matched after error correction. When the confirmation number is small in relationship to overall number of connections, then it is likely to indicate a reason for the matching error.

 

3. Guess Contradictions

Let us consider different neighboring situations for a given guess pair of nodes A (schematic) and B (layout). Suppose C is a neighbor of A and connected to A by terminal of type T.

  1. Node C can be the unmatched node.

  2. Node C is matched to some node D in the second netlist and node D is a neighbor of node B via a terminal of type T. This is exactly the guess confirmation case.

  3. Another situation is that D is not connected to node B by terminal of type T.

Note here that when C is a neighbor of B, we will have 3 symmetrical situations.

Situation 1 cannot give us much information about our guess. The current version of Guardian does not try to investigate "guesses of second level". Situation 2 is a confirmation of guess under consideration. And if some neighbor of one node of the guess pair gives us situation 3, then we will call it a guess contradiction.

Let us illustrate guess contradiction by a couple of examples.

Below are excerpts from an LVS unmatch report:

...

DISCREPANCIES AND POTENTIAL MATCHES:

neighboring stats legend:

overall connections netlist #1/netlist #2 -

unmatched connections #1/#2 -

matched connections contradict to guess #1/#2 -

guess confirmations

 

L0: N: top:130 . . . . . . . . . . . >>

top:249

stats: 288/4 - 0/0 - 284/0 - 4

 

L0: N: top:130 . . . . . . . . . . . >>

top:248

stats: 288/286 - 0/0 - 4/2 - 284

...

 

The third pair of numbers in this report shows the number of contradictions to the guess. For the first listed guess (top:130 ? top:249) there are 4 confirmations and 284/0 contradictions. That means there are 284 matching neighbors of net top:130 which are a contradiction to the reported guess. In this case all these contradictions are confirmations for another guess (top:130-top:248). On the contrary, 4 confirmations for the first guess are contradictions to guess number two (coming from schematic netlist node). There are 2 more contradictions to the second guess. Guardian did not report the corresponding guess record because it is a "weak" guess for some pair (xxx-top:248).

To further investigate the reason of discrepancies, an LVS user possibly needs an exact list of contradictions for more probable guess (top:130-top:248 in the above example). When it is impractical to list all contradictions after each guess, we believe it is a good idea to report contradictions when the number of contradictions is very small in comparison with the overall number of connections. For the example shown above the report continuation will look like:

...

L0: N: top:130 . . . . . . . . >>

top:248

stats: 388/386 - 0/0 - 4/2 - 384

contradictions to this guess listed:

#1[g] top:M30 . . . . . .. . . >>

($)top:M793

#2[sd] top:M31 . . . . . . . . >>

($)top:M258

#2[sd] top:M30 .. . . . . . . . >>

($)top:M793

#1[g] top:M31 .. . . . . . . . >>

($)top:M258

#1[sd] top:M43 .. . . . . . . . >>

($)top:M254

#1[sd] top:M42 .. . . . . . . . >>

($)top:M792

...

Every contradiction record has a prefix with information about the reason of a contradiction. For example, the first contradiction record prefix #1[g] means that the matching pair M30-M793 comes under consideration because device M30 in the first netlist (#1) is connected by gate ([g]) terminal to net 130. It is possible to further investigate the connectivity information for these devices by the Node Walker tool, called by double clicking on a node name in the unmatched report.

 

4. Smart Editor

This section describes a new Guardian SmartEditor used for editing and viewing netlists and report files.

It has the following features:

  • Editing of Windows/DOS, UNIX and Macintosh text files
  • Highlighting syntax of netlists
  • Printing support
  • Fixed fonts support
  • Auto indent
  • Dynamic loading and unloading of file information

SmartEditor views and edits Windows/DOS, UNIX or Macintosh text files. The editor has a system of dynamic loading file information.

At the file opening stage SmartEditor stores only the information about positions of text lines in file.

The text lines are not stored in the memory and are loaded only if you edit or view them.

When you process huge files and the available memory size becomes not enough, SmartEditor unloads unseen lines of the file and load the ones that you edit or view at the moment.

This system allows you to edit multi-megabyte files.

Main commands performed by SmartEditor are in "File" and "Edit" menus (see Figure 1).

 

Figure 1. SmartEditor interface.

 

SmartEditor allows the user to create new documents and open existing ones by means of "File" menu.

"Save" command of "File" menu is used to save the active document to its current name and directory.

When a document is saved for the first time, SmartEditor will display the "Save As" dialog box, so that you can name your document. Choose the "Save As" command, if you want to change the name of an existing document before saving.

Commands in the bottom of "File" menu are used for printing support.

"Page Setup" and "Print Setup" commands allow you to select a printer and specify the size and orientation of pages to be printed, their margins, paper source.

"Print" command prints a document by means of Print dialog box, where the range of pages, the number of copies and other printer setup options can be specified.

"Print Preview" command is used to display the active document as it would appear when printed.

The print preview toolbar in print preview window offers these options:

  • View either one or two pages at a time
  • Move forward and back through the document
  • Zoom in and out of pages
  • Initiate a print job

The set of commands in the "Edit" menu allows you to edit the active document.

Operations of editing can be performed in both insert and overstrike modes.

The insert/overstrike mode is changed with the INSERT key and the overstrike mode is indicated in the status bar.

SmartEditor provides automatic line indentation in insert mode, i.e. it automatically indents a line to match the indentation of the previous line. If you select a block of text and press 'Tab' key.

SmartEditor provides block indentation.

"Undo" command is used to reverse the last edit command, including "Redo".

It is unavailable when there is nothing to undo. Command name is changed, depending on what the last action was. The following Undo command types are possible:

  • Undo Typing
  • Undo Backspace
  • Undo Indent
  • Undo Drag And Drop
  • Undo Replace
  • Undo Auto Indent
  • Undo Paste
  • Undo Delete Selection
  • Undo Cut
  • Undo Delete

SmartEditor supports multiple steps of undo. Repeated "Undo" commands will attempt to step backwards through the previous commands and undo one at a time.

"Redo" command cancels the last "Undo" command.

The same types are allowed for "Redo" command. The "Undo" and "Redo" commands can be performed by buttons in the Guardian toolbar.

Next group of commands in the "Edit" menu permit the user to delete data from a document, copy data to the clipboard and paste data from the clipboard.

SmartEditor contains tools for finding a text string in a document and replacing text . The "Find" command from the "Edit" menu is used to specify a search string and the search criteria, such as whether or not to match case.

You can find each occurrence of a combination of any characters, including uppercase and lowercase characters, whole words, or parts of words. You can search the document both above and below the cursor position.

The Commands "Find Next" and "Find Previous" are used to find next and previous occurrence of the text, correspondingly.

"Replace" command allows you to find a given text string in the current window and replaces it with different text. As before, you can replace each occurrence of a combination of any characters, including uppercase and lowercase characters, whole words, or parts of words.

You can replace only an occurrence of the search text or all occurrences at once and can perform replacement in whole document or limit it to the selected area.

The Find and Replace commands are performed by the corresponding buttons in the Guardian toolbar.

The "Go To" command opens the Goto Line dialog box. This dialog box allows you to jump quickly to a line of the current document. If the line number is greater than the number of lines in the file, the cursor is positioned at the end of the file. You can use "+" or "-" to move relative to the current location. For example, -5 will move backward five lines. The information of cursor position is indicated in the status bar.

To prevent accidental changes in a document you can use the "Read Only" command that toggles the state of the read only status of the file. Information about read only status is indicated in the status bar.

SmartEditor allows you to set a bookmark to mark a line in a file.

Once a bookmark has been set at a line, you may use menu or toolbar buttons to move to that line. "Toggle Bookmark" command toggles the bookmark on the line.

"Next Bookmark" and "Previous Bookmark" commands allow users to move to the next and previous bookmarks from current position in a file accordingly.

The "Clear All Bookmarks" command removes all bookmarks.

Bookmark tools are used when you choose the option "Netlist File Highlighting" in "Action upon Double Click" dialog box after you double-click on a name of a device instance or a net in match or unmatch report.

The corresponding Spice file will be open and each line containing this node name will have a bookmark. This node name will be highlighted with a blue color.

You can find the next or previous node name by "Next Bookmark" and "Previous Bookmark" commands in "Edit" menu or corresponding buttons in Guardian toolbar.

SmartEditor performs parsing and syntax highlighting of netlists; in other words it has an ability to recognize some elements of netlists and display them in different colors. SmartEditor provides support Spice format and the following groups of elements have different colors:

  • Spice commands
  • Names of transistors
  • Names of diodes, resistors, capacitors, inductors and user-defined elements
  • Names of subcircuit instances
  • Line comments of two types (line with '*' symbol in the first position and a part of the line starting from ';' symbol)
  • Device and subcircuit parameters that have the prefixes 'L=', 'W=', 'R=', 'C=', 'AREA=', 'PARAMS:' and multiplicity factor with the prefix 'M='
  • Names of nodes when you perform netlist file highlighting as stated above