SIMULATING FULL-CUSTOM DESIGNS

This tutorial will guide you through the procedure of extracting the netlist from the buffer cell you created in Tutorial 4, and then simulating it with Accusim.

Netlist Extraction from a Layout Cell

Recall the buffer cell you created in Tutorial 4:

Before beginning, make sure the following conditions hold:

  1. the cell must be surrounded by a green outline, the fp1 layer, from the IC Graph palette.

  2. all the ports of the cell must be named and identified as input/output, and signal/power.

To do netlist extraction:

  1. Select the IC Extract(M) pallete from the IC Palletes window .

  2. Select Lumped (adequate for relatively small cells) from the pallete.

  3. In the resulting dialog box select "Yes" at the Netlist button, and then enter a name for the netlist file. For example, the netlist name in this case might be buffer.sp. Also, enter GND as the Ground name. Note that the default format for the netlist is HSPICE. Click OK and the produced netlist will be saved in your Working Directory.

  4. Take a look at the netlist. Notice the subcircuit definition:

    .subckt buffer GND IN OUT VDD

    The first argument is the name of the layout cell, and the following args are the input/output ports (including VDD and GND). This subcircuit statement defines the interface of the layout cell.

    The body of the subcircuit is comprised of a list of device descriptions for the transistors that make up the cell. Each transistor description includes:

    Below that you find the list of parasitic capacitances inherent to the subcircuit. For bigger cells w/ longer interconnections you would also find some resistive parasitics.

We are done with the extraction process and with IC Station. Before we can simulate the netlist with Accusim, however, we need to map the netlist to a logic symbol using Design Architect.

Logic Symbol for the Extracted Subcircuit

We now have to create a logic symbol on which to map the extracted subcircuit:

  1. Start Design Architect (da).

  2. Select Open Symbol, and specify a name for the logic symbol (e.g., buffer_sym).

  3. Use the Add Rectangle and Add Pin buttons, in order to draw something like this. Specifically:

Logic Design to be Simulated

Now we have to create a schematic for the circuit that will be simulated with Accusim. Still in Design Architect:

  1. Create a schematic, i.e., select Open Sheet.

  2. Instantiate the logic symbol that you created in the previous step (buffer_sym), and draw a schematic something like this

  3. After you are done with this editing, Check, Save, and Close this schematic.

Of course, the logic diagram need not be so simplistic. It could include arbitrarily many symbols (mapped to the same or different layout-extracted subcircuits) and transistors from the sdl library (as in Tutorial 5).

NOTE: It seems that Accusim does not like busses and signal names that are `bus-like' (e.g. A(1), A(2), etc). If your design includes busses, use individual signals instead, and instead of giving the signal names in parenthesis, use something like A_1, A_2, etc.

Viewpoint

Use sdl_prep (see Tutorial 5) to create an accusim viewpoint for your schematic.

Accusim Simulation

You are (finally!) ready for the Accusim simulation:

  1. At a command prompt, cd into the directory that contains your schematic and viewpoint and type:

      accusim sdl

    where sdl is the name of the viewpoint created by sdl_prep.

  2. Unfortunately, we have still not found an easy way to map the port order in the subcircuit that is extracted from the layout, to the pin order in the logic symbol that is mapped to this subcircuit. To solve this problem, you must do the following:
  3. Select File -> Auxiliary Files -> Load Netlist File. In the resulting dialog box, use the navigator to select the netlist buffer.sp.

  4. Select File -> Auxiliary Files -> Load Model Library. In the resulting dialog box, type in $PROJ_PARTS_cs755/fets.mod.

Now you can setup Accusim for a Transient simulation, add the traces, apply some forces, and run the simulations, as described in Tutorial 5.