Substrate Noise Analysis Tool User’s Guide Nisha Checka May 5, 2006

advertisement
Substrate Noise Analysis Tool User’s Guide
Nisha Checka
May 5, 2006
1
Platform Support
2
Download
SNAT can be downloaded from the following password protected website.
http://www-mtl.mit.edu/researchgroups/icsystems/subnoise
SNAT is available free to MARCO and DARPA researchers. Please refer to the website for information on obtaining access to SNAT.
3
Requirements
An HSPICE license is required to run SNAT. SNAT uses HSPICE in the library characterization
to extract current profiles. In addition, HSPICE is used to solve the simplified macromodel netlist.
If the starting circuit is extremely complex (i.e 100K gates or greater), the resultant macromodel
netlist can be quite large. In this case, Nanosim can be used to solve the netlist.
A Nanosim license is also required. Nanosim is used to extract capacitance data at each node of
all standard cells. If the user provides the capacitance of each node of each standard cell, then
Nanosim is not required.
If the circuit input description is a verilog/VHDL description, then the description must be synthesized so that a listing of the standard cells used in the design is available. SNAT will need this
information to complete the simulation.
SNAT is compatible with Cadence and just about any layout tool. A Cadence license is not required.
If, however, the user wishes to generate a substrate model from a layout, an extraction function
must be available to correlate the relevant nodes of the substrate model with the designed circuit.
4
Overview
The simulation of large digital systems to predict the substrate noise performance is a computationally complex task. Full transistor level SPICE simulations yield the most accurate results;
however, the technique is impractical for most circuits as the run-time increases rapidly with circuit complexity. For typical circuits, full transistor level simulations take on the order of weeks to
simulate a few clock cycles and most often do not converge.
It has been demonstrated that abstracting the noise behavior into an equivalent linear noise macromodel greatly improves simulation speed without much expense in accuracy. SNAT uses a macromodelling based approach.
Figure 1 shows a high level block diagram. SNAT requires two inputs: a circuit description and a
technology description. Refer to Section 5.1 for more information on the valid input files. SNAT
decomposes the circuit into equivalent noise macromodels. The noise macromodels together with
the event model for each node in the circuit are used to construct the noise signature. The noise
1
signature is then simulated with the substrate model and power grid (optional) to compute the
substrate noise profile. The outputs are a time domain representation and noise spectrum.
Technology Information
Circuit Description
Decompose
into noise
macromodels
Noise injection
pattern
Event
model
Noise Information
Figure 1: Flow of Substrate Noise Analysis Tool.
5
5.1
Usage
Input Files
SNAT works with a broad spectrum of information for both the circuit and technology descriptions.
This allows SNAT to be used at any stage in the design cycle. The different input descriptions that
SNAT can work with are detailed in Figure 2 and Figure 3.
Circuit Description
SNAT works by trading off accuracy for speed. The more descriptive the input file (i.e. SPICE
netlist with extracted parasitics), the better the noise modeling is, and as a result, the more
accurate the result is. However, more elements are required to accurately model the noises sources,
consequently the run time is longer. Figure 2 details the various circuit description granularity
levels.
Short Run Time
Least Descriptive
Long Run Time
Most Descriptive
Increasing Accuracy
Gate level netlist
SPICE netlist
SPICE netlist
w/parasitics
Figure 2: Circuit Description Granularity Levels.
If the input file is a verilog/VHDL netlist, the verilog/VHDL simulator is used to generate the event
model. This information is typically generated during the regular design phase. The the rise/fall
times of the signals predicted by the simulation will be less accurate than a SPICE simulation. The
verilog/VHDL netlist
must
then be synthesized so that SNAT canLong
generate
Short
Run Time
Run Time the equivalent noise
Least
Descriptive
Most
Descriptive
macromodels. The synthesized netlist and the event model are required for SNAT to generate the
Increasing Accuracy
Substrate resistivity
(no layout)
SNAT generated
2 resistivity
Substrate
(w/ contacts layout)
SNAT generated
Substrate doping
profile (full layout)
SubstrateStorm
noise signature.
If the input file is a SPICE netlist, SPICE or Nanosim or some equivalent SPICE-level simulator
can be used to generate
the event model. The SPICE netlist andLong
event
model are then used by
Short Run Time
Run Time
Least noise
Descriptive
Most Descriptive
SNAT to generate the
signature.
Increasing Accuracy
Technology Description
Gate level netlist
SPICE netlist
SPICE netlist
SNAT is not meant to be used for accurate substrate modeling. w/parasitics
Several tools are available for
this function. Cadence’s SubstrateStorm is one such tool. It requires a layout and the substrate
doping profile to generate the substrate model. For final verification simulations, it is recommended
that the user generate the substrate model using an external tool. The resultant netlist can be
incorporated into SNAT. If, however, a full substrate doping profile is not available or if a faster
run time is desired, SNAT can be used to generate the substrate model. Refer to Figure 3 for a
listing of the various technology description granularity levels.
Short Run Time
Least Descriptive
Long Run Time
Most Descriptive
Increasing Accuracy
Substrate resistivity
(no layout)
SNAT generated
Substrate resistivity
(w/ contacts layout)
SNAT generated
Substrate doping
profile (full layout)
SubstrateStorm
Figure 3: Technology Description Granularity Levels.
To generate the substrate model from a layout using SNAT, the input SPICE netlist must be generated using the extract function in Cadence or an equivalent layout editor. This is required so
that the SNAT can match the substrate nodes of the various devices in the design to the layout.
The layout must be in CIF format. GDS2 is a binary format and as a result is unable to be read
by SNAT. The underlying substrate resistivity must be entered in the layout configuration file.
If no layout information is available, a bound on the die size must be entered so that SNAT can
generate a very coarse model.
5.2
Configuration Files
BSIM model file
‘technologyname’.char
‘technologyname’.v
‘technologyname’.cdl
5.3
Library Characterization
The first step in the noise simulation is to perform a library characterization. The user must
provide four files that describe the library. The first is the model file that contains the BSIM
3
models of the devices. The second is a technology characterization file. The name of the file must
be ‘technologyname’.char. This file contains information about the technology such as the power
supply voltage. The format of the file must be as follows:
vdd,segmenttime,steptime,rlat,cwell
path to BSIM model file
Sample files are included with the SNAT download. In addition, sample files can be found in the
Example section of this document. segmenttime corresponds to the time span for the extracted
current profiles in nanoseconds. If you’re unsure as to what value to set this, set it high and then
reduce if the file sizes are too large.
steptime is the time step used in spice simulations. This should be based on the operating frequencies of interest. If the simulation is to be run over a long time span, a small time step will
result in a long simulating time. However, if the time step is set too large, then the accuracy of the
simulation will suffer.
rlat is the lateral resistance of the substrate.
cwell is the capacitance of the nwell.
The third file is a verilog file containing a verilog description of all the standard cells. The naming
convention of this file must be ‘technologyname’.v where ‘technologyname’ is the name of the technology. The last file is a SPICE description of all the standard cells. The name of this file must be
‘technologyname’.cdl.
Two additional files must be provided that describe the characterization. These two files, cap.list
and rt.orig, describe the rise and fall times and capacitance values over which the library will
be characterized. cap.list contains 12 capacitances values (in fF) over which each cell will be
characterized. A nominal list is provided with the download but can be changed by the user. These
nominal values are appropriate for a 0.18µm technology. These values should scale down with decreasing technology node.
rt.orig contains 11 rise/fall time values (in ns) over which each cell will be characterized. A nominal file is provided with download and can be changed by the user. These values will depend on
the frequencies of interest and are appropriate for high frequency operation in a 0.18µm technology.
The purpose of the library characterization is to extract the noise behavior of the standard cells.
This step need only be performed once per technology library. To run the library characterization,
type the following line at the prompt. Replace ‘technologyname’ with the name of the technology.
SNAT % libchar ‘technologyname’
For example, for the TSMC 0.18 µm technology, the technology name is tsmc18. To run the library
characterization, the following line executes the characterization.
SNAT % libchar tsmc18
4
The entire standard cell library is characterized during this step and takes roughly 18 hours to
characterize 471 standard cells on a dual processor 1.2 GHz SunFire 280r machine. If the user
wishes to reperform the library characterization or delete the results, SNAT must be reinitialized.
To do so, run the following command:
SNAT % reinit
5.4
Noise Simulation
For the actual noise simulation, SNAT is run with two command line arguments. The main input
is the circuit description:
SNAT % snat ‘circuitdescription’.‘fileextension’ ‘technologydescription’
If the input file is a SPICE netlist, the file extension must be sp. If the input file is a verilog or
VHDL netlist, the file extension will be v and vhd respectively. The file extension is limited to
these formats and must follow this convention. SNAT invokes the correct netlist parser based on
the file extension. An example command for a SPICE netlist is as follows:
SNAT % snat mycct.sp tsmc18
The second command line option describes the library. It must be the same as the library name
used during characterization.
When SNAT is invoked, the user is prompted to supply substrate model information as well as
other run-time parameters. When first invoked, SNAT chooses the appropriate netlist parser and
constructs the skeleton of the individual macromodels. It then generates the event model. The
user is then prompted to enter the substrate type:
What type of substrate is used (e.g. epi, nonepi, soi)?
The options are epi, non-epi, and SOI. The substrate model depends on the substrate type. If
an epi substrate is used, a common substrate node is assumed. For non-epi and SOI substrates,
a more complex model is required. If the user selects an epi substrate, SNAT requires values for
resistivities of both the epi layer and the bulk in Ωcm:
Enter the resistivity of the epi layer (ohmcm):
Enter the resistivity of the bulk (ohmcm):
If the user selects either a non-epi substrate or SOI, SNAT asks for information on the substrate
model.
Do you have a substrate model (y/n)?
If the user has a substrate model, SNAT prompts for the path to that model. If the user does not
already have a substrate model, SNAT will be used to generate the model. SNAT can generate the
model using one of two methods. First, if a layout is available, SNAT generates the model from
the layout. In the layout file, the bulk nodes of the devices should be labeled with the following
convention:
5
‘instancenumber’_‘cellname’_bulk‘devicenumber’
For example, the bulk node of the device M2 in instance X2 of a NAND gate should be labeled as
follows:
X2_NAND_bulkM2
The only layout format that SNAT is able to accept is a .cif file. GDS files can easily be converted
to CIF format using any layout program. SNAT prompts the user for the path to the layout file.
SNAT requires also requires the value of the substrate resistivity to generate the substrate model.
Finally, if a layout is not available, SNAT generates a coarse substrate model from the die size
and substrate resistivity information. The user must enter the die length and width in the units of
microns.
SNAT generates the substrate model that is used to interconnect the substrate nodes of the individual macromodels based on the user-supplied information. The last step in the simulation is the
incorporation of a power grid.
Do you have a model for the power grid (y/n)?
If the user has a power grid, SNAT prompts the user to enter the path:
Enter the filename:
After the power grid information has been entered, information on the package parasitics must be
provided. SNAT requires values of the resistance (Ω), inductance (nH), and capacitance (pF) of
the package.
Package parasitics, Rpar (ohm):
Lpar (nH):
Cpar (pF):
Finally, the user can choose whether to use the isolation plug-in. Currently, the plug-in only works
with guard ring isolation. In order to determine the isolation provided by the guard ring, key
parameters of the structure must be entered. First, the guard ring type affects the isolation. The
possible types are an n+ guard ring, a p+ guard ring, and a dual n+/p+ guard ring. If a single
guard ring is used, the width of the guard ring must be entered. this denoted by w in Figure 4(a).
If the dual guard ring is used, the width of the individual rings (w1 and w2 ) must be entered as
well as the spacing. This is denoted by sg in Figure 4(b). The user must also enter the spacing
between the active circuitry and the innermost ring. This distance is usually defined as being the
distance between the center of the active circuits to the innermost ring. This is denoted by s in
Figures 4(a) and 4(b). The length and width of the structure must be entered. This is denoted by
ltot and wtot in Figures 4(a) and 4(b). Finally, to determine the substrate noise profile as a result
of the guard ring, a sensing location must be defined. This location is fixed along the center axis
of the active circuits. Refer to Figures 4(a) and 4(b) for all relevant guard ring parameters.
6
Unused silicon area
tot
Dual n+/p+
guard rings
Single n+ or
p+ guard ring
tot
w1
Active
circuits
tot
Active
circuits
Sense
location
tot
Unused silicon area
Unused silicon area
Sense
location
w2
g
(a) Single guard ring (n+ or p+).
(b) Dual guard ring (n+ and p+).
DualFigure
n+/p+ 4: Guard ring geometries and parameters.
guard rings
tot
6
Example
w1
This section runs through a sample
SNAT simulation.
6.1
Active
Files circuits
tot
Sense
location
Sample files are included in the Example directory of the download. The Example directory has
seven files. A description of each of these files is given below. This sample library was designed in
a 0.18-µm technology and includes three standard cells.
Unused silicon area
w2
sample.char
Description: contains
g library characterization information such as power supply voltage, segment
length, time step, lateral resistance of the substrate, capacitance of the n-well, and the path to the
BSIM models.
File:
1.8,3,5e-12,5,50e-15
~/SNAT/Example/modelfile.l
sample.cdl
Description: contains SPICE descriptions of standard cells.
File:
.subckt XOR2X1 Y A B
M0 net29 net21 net37 VDD P l=0.18u w=0.792u
M1 net29 A net38 VDD P l=0.18u w=0.792u
M2 net29 A net37 VSS N l=0.18u w=0.528u
M3 net29 net21 net38 VSS N l=0.18u w=0.528u
M4 Y net29 VSS VSS N l=0.18u w=0.66u
7
M5 VDD net29 Y VDD P l=0.18u w=0.99u
M6 net21 A VSS VSS N l=0.18u w=0.33u
M7 VDD A net21 VDD P l=0.18u w=0.462u
M8 net37 net38 VSS VSS N l=0.18u w=0.528u
M9 VDD net38 net37 VDD P l=0.18u w=0.792u
M10 net38 B VSS VSS N l=0.18u w=1.32u
M11 VDD B net38 VDD P l=0.18u w=1.804u
.ends XOR2X1
*.SCALE meter
.GLOBAL GND VSS VDD
.subckt CLKBUFXL Y A
M0 Y net7 VSS VSS N l=0.18u
M1 VDD net7 Y VDD P l=0.18u
M2 net7 A VSS VSS N l=0.18u
M3 VDD A net7 VDD P l=0.18u
.ends CLKBUFXL
*.SCALE meter
.GLOBAL GND VSS VDD
w=0.32u
w=1.02u
w=0.32u
w=0.32u
.subckt INVX1 Y A
M0 Y A VSS VSS N l=0.18u w=0.66u
M1 VDD A Y VDD P l=0.18u w=0.99u
.ends INVX1
*.SCALE meter
.GLOBAL GND VSS VDD
sample.v
Description: contains verilog descriptions of standard cells.
File:
‘celldefine
module XOR2X1 (Y, A, B);
output Y;
input A, B;
xor I0(Y, A, B);
endmodule // XOR2X1
‘timescale 1ns/10ps
‘celldefine
module CLKBUFXL (Y, A);
output Y;
input A;
buf I0(Y, A);
endmodule // CLKBUFXL
‘timescale 1ns/10ps
8
‘celldefine
module INVX1 (Y, A);
output Y;
input A;
not I0(Y, A);
endmodule // INVX1 ‘endcelldefine
modelfile.l
Description: contains BSIM models.
multicell.sp
Description: example SPICE circuit netlist to be simulated by SNAT.
pgmodel.sp
Description: example power grid model for multicell.sp.
submodel.sp
Description: example externally generated substrate model for multicell.sp.
cifconv.table
Description: CIF names for diffusion, p implant, and n well layers. The second column represents
the CIF name for the corresponding layer in the first column. For example, if the CIF name for
the diffusion layer is L1. The first line says DIFF L1. This file is only required if using SNAT to
generate a substrate model from a layout.
6.2
Running SNAT
First, copy the files sample.char, sample.v, and sample.cdl to the home directory.
SNAT % cp Example/sample.* .
The first step is to run the library characterization on the library sample. This will characterize
the three cells in the library.
SNAT % libchar sample
When the library characterization is finished, the message Library Characterization Finished
is displayed. The library characterization data can be used for all designs that use this library.
If the user wishes to re-perform the library characterization or delete the library characterization
results, SNAT must be re-initialized. Use the following command to reinitialize SNAT:
SNAT % reinit
The next step is to perform the actual substrate noise simulation. For this example, the SPICE
netlist described in multicell.sp will be simulated for its substrate noise performance. To invoke
the simulation, use the following command:
9
SNAT % snat multicell.sp sample
The user will be prompted to enter more information to complete the simulation. SNAT generates
a macromodel-based equivalent circuit netlist with the format ‘originalspice’ snat.sp. For
this example, the file is called multicell snat.sp. All the different simulation possibilities will be
discussed in this section.
If a simulation has been run previously, SNAT can reuse that event model. This is particularly
useful if the user wishes to see the effect of substrate type and layout granularity levels on the
simulation results without changing the circuit netlist itself. If, however, the topology of the circuit
has changed or the input has changed, then the simulation must be re-run. If SNAT detects that a
simulation has been run previously, it asks the user whether he or she wishes to use the same event
model. Reusing the event model can save a considerable amount for very large designs.
Has the event model changed since the last simulation (y/n)? y
The user will not be asked this question, if this is the first time the simulation is being run.
Epi Substrate
First the user is prompted to enter the substrate type.
What type of substrate is used (e.g. epi, nonepi, soi)? epi
Type epi and press enter. The user is then prompted for the resistivity of the epi layer in units of
Ωcm. Enter 10 and press enter. The user must then enter the resistivity of the bulk in Ωcm. Enter
.001 and press enter.
Enter the resistivity of the epi layer (ohmcm): 10
Enter the resistivity of the bulk (ohmcm): .001
The user is then prompted for a power grid model. If no power grid is available, then common
power supply nodes are assumed. A sample power grid model is provided in the Example directory. We will run the simulation with this sample model. At the prompt, enter y. Then, enter
Example/pgmodel.sp as the path to the power grid model.
Do you have a model for the power grid (y/n)? y
Enter the filename: Example/pgmodel.sp
To complete the base simulation, a model for the package must be entered. SNAT requires the
resistance, inductance, and capacitance of the package. For this example, we will assume a simple
bond wire connection. Enter 3 Ω, 2 nH, and 10 pF for Rpar , Lpar , and Cpar respectively.
Package parasitics, Rpar (ohm): 2
Lpar (nH): 3
Cpar (pF): 10
Finally, SNAT prompts the user to use the isolation plug-in. Guard rings are ineffective for epi
substrates so we will skip using guard rings for this example.
10
Would you like to use the isolation plug-in (y/n)? n
From the entered information, SNAT performs the simulation. The output can be viewed using
any waveform viewer such as Awaves.
Non-epi/SOI substrates with an externally generated substrate model
At the substrate type prompt, enter nonepi. This section is the same for SOI also.
What type of substrate is used (e.g. epi, nonepi, soi)? nonepi
This example demonstrates simulation with an externally generated substrate model. When asked
if a substrate model is available, enter y.
Do you have a substrate model (y/n)? y
Then, enter the path to the substrate model. The sample substrate model is provided in the
Example directory and is called submodel.sp.
Enter the filename: Example/submodel.sp
The user is now prompted for a power grid model. Since the epi simulation above shows how to
incorporate a power grid model, we will skip it here.
Do you have a model for the power grid (y/n)? n
Enter the same bond wire parasitics as above.
Package parasitics, Rpar (ohm): 2
Lpar (nH): 3
Cpar (pF): 10
We will use the isolation plug-in in the last example.
Would you like to use the isolation plug-in (y/n)? n
Non-epi/SOI substrates with a SNAT-generated model from layout
At the substrate type prompt, enter nonepi. This section is the same for SOI also.
What type of substrate is used (e.g. epi, nonepi, soi)? nonepi
This example uses SNAT to generate the substrate model from a layout. When asked if a substrate
model is available, enter n.
Do you have a substrate model (y/n)? n
A layout is available so enter y when prompted. A sample layout file is provided in Example/multicell.cif.
Enter this filename when asked.
Do you have a layout (y/n)? y
Enter the layout file (filename.cif): Example/multicell.cif
11
To construct the model, SNAT needs to know the underlying substrate resistivity. A standard
non-epi substrate has a resistivity between 10-15 Ωcm. Enter 12.5 as the resistivity.
Enter the substrate resistivity (ohmcm): 12.5
We will again skip the power grid model. Enter the same bond wire parasitics:
Do you have a model for the power grid (y/n)? n
Package parasitics, Rpar (ohm): 2
Lpar (nH): 3
Cpar (pF): 10
We’ll skip the isolation plug-in for now.
Would you like to use the isolation plug-in (y/n)? n
Non-epi/SOI substrates with a SNAT-generated model and no layout
At the substrate type prompt, enter nonepi. This section is the same for SOI also.
What type of substrate is used (e.g. epi, nonepi, soi)? nonepi
This example uses SNAT to generate the substrate model knowing only the die size. When asked
if a substrate model is available, enter n.
Do you have a substrate model (y/n)? n
There is no layout available so enter n when prompted.
Do you have a layout (y/n)? n
To construct the model, SNAT needs to know the underlying substrate resistivity. Enter 12.5 as
the resistivity. The die size must be entered to generate the coarse model. Enter 100 as both the
length and width in microns.
Enter the substrate resistivity (ohmcm): 12.5
Enter die length (um): 100
Enter die width (um): 100
We’ll skip the power grid and enter the same bond wire parasitics. We will again skip the power
grid model. Enter the same bond wire parasitics:
Do you have a model for the power grid (y/n)? n
Package parasitics, Rpar (ohm): 2
Lpar (nH): 3
Cpar (pF): 10
12
We will now demonstrate the isolation plug-in. SNAT currently works with guard ring isolation.
SNAT informs the user of this fact and asks if the user wishes to continue. Figures 4(a) and 4(b)
are useful to refer to when entering the guard ring parameters.
The first piece of information that is required is the guard ring type. This example will use a dual
n+/p+ guard ring. For a single n+ or p+ guard ring, the values in Figure 4(a) are entered.
Enter the guard ring type (n+,p+,n+p+): n+p+
Next, the various guard ring geometries must be entered. In parentheses, the label corresponding
to either Figures 4(a) or 4(b) are listed. d is the distance between the center of the active circuits
and the sensing location.
Enter the guard ring type (n+,p+,n+p+): n+p+
Enter the width of the n+ guard ring (w1) (um): 10
Enter the width of the p+ guard ring (w2) (um): 10
Enter the space between the n+ and p+ rings (s_g) (um): 5
Enter the distance between active circuitry and the innermost guard
ring (d) (um): 50
Enter the length of the ring structure (l_tot) (um): 100
Enter the width of the ring structure (w_tot) (um): 100
Enter the distance to the sense location (d) (um): 100
Finally, information on the biasing of the guard ring must be provided. Does the guard ring have
dedicated supplies? For this example, both the n+ and p+ guard ring have dedicated supplies.
Is there a dedicated guard ring VDD (y/n)? y
Is there a dedicated guard ring GND (y/n)? y
The sensing location is labeled sense in the SNAT-generated netlist.
13
Download