Guardian-Net Netlist Extractor:
An Example of Specific Device Extraction Using XI-Scripts


Guardian LVS from Silvaco is an efficient, reliable, and diverse package that brings the benefit of high-speed verification to PC-based test environments. Guardian netlist extractor, included with the Guardian suite, is a dynamic module that supports the high-speed extraction of a variety of devices, including MOS transistors, resistors, capacitors, and other standard devices.

The complexity of device geometry has increased dramatically over time. Extremely detailed device makeup, especially in passive devices, is often too complex for accurate parsing by standard netlist extraction software. Silvaco has addressed these challenges with the LISA (Language for Interfacing Silvaco Applications) scripting language and its extension, xi. LISA adds unparalleled customization options and support to complex products. LISA is bundled with the CELEBRITY design and verification package available from Silvaco.

This article provides insights into the extraction of complex devices and offers methods of customizing LISA-based scripts. The first part discusses the definition of devices using the parameterized cells feature of Silvaco’s Expert. The second part introduces the LISA script and presents illustrated instructions for using LISA and xi to extract a final SPICE netlist that is compatible with any SPICE simulator. The final section addresses optional improvements to the script.


Part One: Using Parameterized Cells to Design and Define the Device

Parameterized cells, or P-cells, help increase designer productivity by adding enormous flexibility and efficiency to the design process. While standard cells help the designer to avoid repetitive drawing of identical pieces of layout, P-cells extend this functionality to the specific parameters that define the mask geometry. As a result, P-cells assist in the automation of layout design and help speed-up modification through the revision of P-cell parameters instead of wasting valuable resources by repeatedly redrawing the layout geometry.

Guardian makes extensive use of P-cells to extend custom functionality to non-standard or complex devices. The three steps necessary to successfully define a device are:

  • Create a P-CELL that includes all relevant geometrical parameters (the number of turns in an inductance, for example), and any other parameters that prove useful when calculating a device’s value.
  • Define a P-Cell layer. This layer will serve as the device’s "recognition layer" for later use in custom device definition. This layer is also definable as a Boolean operation that exists between the existing device layers.
  • Define a CUSTOM DEVICE. A "custom device" is typically used in the C-Interpreter module of SmartSpice, but its unique "Y"-symbol syntax format makes it an ideal detector of specific devices in a netlist. Select the Setup > Technology > Device > Setup > "Device Type" menu, and provide three pieces of information:
    • Recognition layer
    • Pin layers
    • Spice model name

Once the new P-cell and its corresponding device are defined, they are ready to receive any combination of instance parameters. At this point, all the defined devices will appear to the Guardian Netlist Extractor as "CUSTOM." Connectivity should be good, and the syntax appears similar to:

Y4 2 0 "pin_name" … "model_name"
* Center of device: x = 1.9U y = 6.1U

This default syntax format is not supported by all SPICE simulators and does not contain any specific device parameters or values. A custom LISA script, when applied, detects all custom device instances, processes the information into useable syntax, and updates the netlist. The following section steps through this process.


Part Two: An Analysis of the LISA Extractor Script

As previously mentioned, a custom device is extracted when indicated by a "Y" symbol in the netlist. The LISA script replaces these lines with correct device description parameters, including syntax, parameters and calculated value. This process flow is illustrated in Figure 1.

The script performs the following tasks:

  • The LISA script detects each line that begins with a "Y" in the Guardian netlist.
  • The script reads the (X,Y) coordinates of the device at each detected line and appends the new information after the device description.
  • The script searches for the P-cell instance located at the detected coordinates within the layout.
  • The script extracts the P-cell instance parameters and, with a suitable formula, calculates the device’s value.
  • The script then replaces each "Y" line with new, syntactically correct that includes the device’s parameters and value. The connectivity information (node names) is retained.

These steps correspond to the following simplified flowchart shown in Figure 1.


Figure 1. Flowchart of a LISA script that replaces a
custom device with the correct device description.


The LISA script language includes all functions needed to implement this flowchart, including layout object search, string manipulation, and P-cell analysis. The script makes particular use of the following functions:

  • These commands are used to read coordinates from the second line of the custom device description (e.g. "Center of device: X = 161.960U Y = 36.010U"):
    • STREAM_CREATE_INPUT opens a file as input
    • STREAM_GET_STRING reads a line within the file
    • STREAM_CLOSE closes the file
  • These commands are used to create a new netlist file:
    • STREAM_CREATE_OUTPUT opens a file as output
    • STREAM_PUT_STRING puts a line in the file
    • STREAM_CLOSE closes the file
  • The SEARCH command is used to locate all instances of the device by means of the coordinates. Since the search area is a region around the center of the device, the search_area is defined as a box around the stored X,Y coordinates. For example:
    • search_area = RECT_CREATE (X-1, Y-1, 2, 2);
    • Pcells_sequence = SEARCH (SEARCH_INSTANCE, {}, search_area, CROSS_RECT, False, SEARCH_ALL);
  • The script places the P-cell parameter sequence for each found instance in the output sequence seq_params by using the .PARAMS layout object component:
    • SEQ_ADD_LAST (seq_params, (Pcells_sequence[1].PARAMS));
  • The script uses these parameters to perform the calculations necessary in order to obtain the value of each device, as seen in this example of a square inductance calculation:
    • L = POW (Nb_turns, 3) * µ0/ Radius
  • The script then writes the revised syntax to the netlist, as shown in this example of a custom inductance device:
    • L4 In Out INDUCT Radius=1e-06um Nb_turns=25 L=5e-008 nH

Once the LISA script is correctly applied, the netlist is ready for analysis and simulation without the need for manual correction.


Part Three: Examples of Cell Layout and Netlist

In order to illustrate this method of extraction, a layout cell was designed (Figure 2) that contains two typical devices (MOS transistors) connected to two specific devices (square inductances).

Figure 2. Layout cell that contains two MOS
transistors connected to two square inductances.


Figure 3 is the unmodified netlist extracted with Guardian Netlist Extractor, and shows the connectivity between the MOS transistors and "custom devices."

Figure 3. Guardian Netlist extracted from the layout of Figure 2.


Finally, Figure 4 is the result of the successful application of the LISA script. All devices are corrected with the correct syntax, and include the necessary parameters ("Pitch" and "Radius") and value ("L") for each inductance.

Figure 4. Final netlist generated using the LISA script.


Part Four: Recommendations

The following suggestions may help to further automate this procedure:

  • It is possible to integrate the Guardian netlist extraction into the LISA script when using Guardian’s batch mode command. While this allows the script to run without previously launching the Guardian application, it is necessary to create the Guardian Project File prior to execution.
    • Command syntax: spawn "path_to_executable" "/e path_to_extraction_setup_file";
    • Example: spawn "C:\\Silvaco \\lib \\ ....\\guardian_extractor.exe" "/e C:\\Silvaco \\lib \\ .... \\mux4.mpr";
  • Add this line to the LISA script in order to automatically display the revised file in Windows Notepad when finished:
    • spawn "C: /WINNT /NOTEPAD.EXE " (file_extracted&".new") /nowait;
  • These and other script commends can be integrated into the GUI of Silvaco’s Expert layout editor with the new "custom menus "feature. For more information see Simulation Standard, Volume 12, Number 3, March 2002.



The design of complicated devices, especially in RF design, requires the adaptation of netlist extraction tools in order accommodate specific shapes. Guardian-Net netlist extractor from Silvaco is flexible and easily accommodates these designs though the use of a LISA script. The adapted netlists are then ready to use with any type of simulator, including SPICE, RF, and others.


Download pdf version of this article