|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
The Virtuoso® UltraSim™ simulator recognizes SPICE, Spectre®, Verilog®-A, and structural Verilog netlist files. This chapter describes the syntax rules, elements, and command cards supported by the Virtuoso UltraSim simulator, and also describes the known limitations.
The following netlist file formats are supported:
Note: Cadence recommends using either the Spectre or HSPICE languages exclusively in a netlist file.
If the netlist file is in Spectre format, you need to set the -spectre command line option or add the .scs extension to your top-level netlist file. In this case, the Virtuoso UltraSim simulator behaves the same as Spectre, and applies Spectre naming conventions and case sensitivity to:
The Virtuoso UltraSim simulator also uses Spectre default values for model and simulation setup.
All of the Virtuoso UltraSim simulator options are available in Spectre syntax format, so you can define the options in a Spectre netlist file. The most common Virtuoso UltraSim simulator option is usim_opt. The Spectre syntax is located under the Spectre Syntax heading in each Virtuoso UltraSim option section.
usim_opt sim_mode=ms speed=6 postl=2
usim_opt sim_mode=a inst=i1.i2.vco1
usim_pa chk1 subckt inst=[i1.i2] time_window=[1u 5u]
dcheck chk1 vmos model=[tt] inst=[i1.*] vgsu=1.0 vgsl=0.5 probe=1
usim_report resistor type=distr rmin=0 rmax=20
If you simulate a design that uses HSPICE format in the netlist file, you need to use Virtuoso UltraSim format without the -spectre command line option or .scs extension. In this case, the Virtuoso UltraSim simulator behaves the same as HSPICE, and applies HSPICE naming conventions and case insensitivity to:
The Virtuoso UltraSim simulator also uses HSPICE default values for model and simulation setup.
All of the Virtuoso UltraSim simulator options are available in SPICE syntax format, so you can define the options in a HSPICE netlist file. The most common Virtuoso UltraSim simulator option is .usim_opt. SPICE syntax is located under the SPICE Syntax heading of each Virtuoso UltraSim option section.
.usim_opt sim_mode=ms speed=6 postl=2
.usim_opt sim_mode=a inst=x1.x2.vco1
.usim_pa chk1 subckt inst=[x1.x2] time_window=[1u 5u]
.dcheck chk1 vmos model=[tt] inst=[x1.*] vgsu=1.0 vgsl=0.5 probe=1
.usim_report resistor type=distr rmin=0 rmax=20
Table 2-1 compares Virtuoso UltraSim simulator option syntax rules for HSPICE and Spectre netlist files.
ultrasim file |
ultrasim -spectre file |
||||||||||||
|
All files with a .scs extension are assumed to be in Spectre format and all other files are assumed to be in HSPICE format. If files contain Spectre syntax, but do not use the .scs extension, they need to contain |
|||||||||||||
|
HSPICE Netlist and Models: |
Spectre Netlist and Models: |
||||||||||||
|
HSPICE Analysis and Options: |
Spectre Analysis and Options: |
||||||||||||
|
Verilog-A: .hdl Virtuoso UltraSim Structural Verilog: .vlog_include |
Verilog-A: ahdl_include Virtuoso UltraSim Structural Verilog: vlog_include |
||||||||||||
|
Virtuoso UltraSim Vector Stimuli: |
Virtuoso UltraSim Vector Stimuli: |
||||||||||||
|
Virtuoso UltraSim Options and Analyses: |
Virtuoso UltraSim Options and Analyses: |
||||||||||||
|
In some cases, a mix of the Spectre and HSPICE languages is required. For example, when a design uses Spectre format in the netlist file and the device models are only available in HSPICE format. Since HSPICE does not support using mixed languages in a netlist file, the Virtuoso UltraSim/Spectre -spectre command can be used to simulate the mixed format file.
Note: Use the simulator lang=spectre|spice command to switch between the Spectre and HSPICE languages in the netlist file.
simulator lang=spice lookup=spectre
.model nmos1 nmos level=49 version = 3.1 ...
In this example, the lang=spectre|spice command defines the language rules for the section of the netlist file that follows the statement until the next lang=spectre|spice command is issued or the end of the file is reached.
The lookup=spectre portion of the simulator=spice command specifies that all node, device, and instance names follow the Spectre naming convention. This is necessary for proper mapping between nodes, devices, and instances in the Spectre and HSPICE sections of the netlist file.
The Virtuoso UltraSim simulator allows you to use wildcards (*) in the .probe, .lprobe, .ic, .nodeset, and save statements, as well as in all of the Virtuoso UltraSim scopes, options, and checking features.
The following rules apply to wildcards:
|
A single asterisk (*) matches any string, including an empty string and a hierarchical delimiter |
|
A question mark (?) matches any single character, including a hierarchical delimiter |
|
.probe v(*) matches all signals on all levels (for example, vdd, x1.net5, x1.x2.sa, and x1.x2.x3.net7). |
|
.probe v(*) depth=2 matches all signals in the top two levels (for example, vdd, x1.net5, but not x1.x2.sa). |
|
.probe v(*t) matches all top level signals ending with t (for example, vnet, m_t, senst, but not x1.net). |
|
.probe v(*.*t) matches all signals on all levels ending with t (for example, vnet, m_t, x1.net, and x1.x2.x3.at). |
|
.probe v(net?8) matches all signals on all levels (for example, net08, net88, and net.io8). |
|
save * depth=2 saves all node voltages on the top level and one level below (for example, net12, i1.net28, and x1.net9, but not x1.x2net8). |
To activate the Verilog parser, use the Virtuoso UltraSim simulator -vlog option in the command line (for more information, refer to "Command Line Format" ). You can also include Verilog files by using the vlog_include statement(s).
The Virtuoso UltraSim simulator reads the structural Verilog file file.v. The keywords are supply0 and supply1. The supply0 keyword must be set to the ground node used in the Verilog subcircuit and supply1 must be set to the power supply node. If insensitive=yes, the Verilog netlist file is parsed case insensitive. If insensitive=no, it is parsed case sensitive. The default value is no.
Note: If the name of a module called by SPICE contains uppercase letters (for example, top_MODULE), then set insensitive=yes to use the vlog_include statement.
The Virtuoso UltraSim simulator does not support the following structural Verilog features:
|
trireg, triand, trior, tri0, tri1, wand, and wor nets |
The Virtuoso UltraSim simulator resolves bus signals into individual signals when reading Verilog netlist files. The bus notation can be set using the buschar option and either <> or [].
The simulator also supports bus node mapping in structural Verilog. When instantiating the Verilog module in an analog netlist file, port mapping can only be based on the order of the signal name definitions. The bus node in the Verilog netlist file is expanded in the analog netlist file. When invoking an analog cell in a Verilog netlist file, port mapping can be based on the order of the signal definitions or names. For name mapping, the bus notation in the analog netlist file can be set using the vlog_buschar option.
The Virtuoso UltraSim simulator can read a compressed top-level netlist or included files (.include, .lib, .vec, .vcd, spf, and spef). The compressed netlist or included file needs to be compressed using gzip (.gz file extension).
Note: A compressed included file can be nested within another compressed file.
is a compressed circuit.sp file called circuit.sp.gz. A compressed model.gz file is nested within the circuit.sp file:
For a detailed list and description of the related Spectre constructs, refer to the Spectre Classic Simulator, Spectre Accelerated Parallel Simulator (APS), and Spectre Extensive Partitioning Simulator (XPS) User Guide.
|
MOSFET: bsim3v3, bsim4, sp32, b3soipd, bsimsoi (versions 2.23 and higher, including version 4.0), bsim1, bsim2, bsim3, bta silicon-on-insulator (btasoi), enz-krummenacher-vittoz (ekv), mos0, mos1, mos2, mos3, mos6, mos7, mos8, high-voltage mos (hvmos), poly thin film transistor (psitft), alpha thin film transistor (atft), and ldmos. |
Note: For more information about the sp32 model, refer to the "Surface Potential Based Compact MOSFET Model (spmos)" chapter in the Virtuoso Simulator Components and Device Models Reference.
|
BJT: bipolar junction transistor (bjt), bht, hetero-junction bipolar transistor (hbt), vertical bipolar inter-company (vbic), mextram (bjt503 and bjt504) |
|
Diode: diode |
|
JFET: junction field effect transistor (jfet) |
Virtuoso UltraSim device models are implemented using the Cadence compiled-model interface (CMI). You can also implement proprietary device models with CMI. For more information about installing and compiling device models using CMI, refer to Appendix C, "Using Compiled-Model Interface" in the Spectre Classic Simulator, Spectre Accelerated Parallel Simulator (APS), and Spectre Extensive Partitioning Simulator (XPS) User Guide.
Verilog-A behavioral models can be applied to Spectre netlist files using the ahdl_include statement, and in HSPICE netlist files using .hdl.
Verilog-A behavioral language is used to model the behavior of analog design blocks. The Virtuoso UltraSim simulator supports Verilog-A behavioral language formats and provides a parser which is compatible with the Spectre simulator parser. Refer to the Cadence Verilog-A Language Reference for more information about supported language constructs.
The Virtuoso UltraSim simulator does not support the following Verilog-A features:
The Virtuoso UltraSim simulator syntax rules are similar to HSPICE syntax rules.
|
The maximum length of a word, such as name, is 1024 characters. |
|
The following characters are not allowed in any name: {}, (), ", `, =, ;, : |
|
Commands and instances can be continued across multiple lines by using the + sign in the beginning of each continuation line. Names, parameters, and arguments cannot be continued across multiple lines. |
|
Virtuoso RelXpert reliability simulator commands start with the *relxpert: prefix. Virtuoso RelXpert command cards can be continued across multiple lines by using the + continuation character (that is, *relxpert: +). |
Note: You need to include a space after the colon (:) in the *relxpert: prefix.
|
Comment lines must begin with an * or $ sign. Comments can be written in a new line, or after the end of an instance or command on the same line. |
|
Virtuoso UltraSim simulator can recognize abbreviated names for SPICE commands, as long as the abbreviated name yields a unique command. For example, .tr or .tra can be recognized as .tran. |
The .t command does not work because .temp card also begins with .t.
The following unit prefix symbols can be applied to any numerical quantities:
The Virtuoso UltraSim simulator supports the following HSPICE devices and elements:
|
nc, nb, ne |
|||||||
|
Substrate terminal node name; can also be set in a BJT model with the bulk or nsub parameters. |
|||||||
|
area = area_val |
|||||||
|
areab = areab_val |
|||||||
|
areac = areac_val |
|||||||
|
m = mval |
Multiplier to indicate how many elements are in parallel.
Note: The multiplier is different from the m parameter. where m=5 in the .subckt statement is the m parameter definition and 'm+2' is an expression that is dependent on the m parameter in the subcircuit. The m located to the left of the equal (=) sign is a multiplier that is evaluated at 7 (5+2) to indicate seven resistors with a value of 100 ohms are in parallel.
|
||||||
|
dtemp = dtemp_val |
defines a npn BJT q001 with its collector, base, and emitter connected to nodes c, b, and a, respectively.
defines a pnp BJT q002 with its collector, base, emitter, and substrate connected to nodes 5, 8, 19, and 6, respectively, and has an emitter factor of 1.5.
If the instance parameter tags (such as c, tc1, and tc2) are not used, the arguments must be arranged in the same order as shown in the first syntax statement (see above). Otherwise, the instance arguments can appear in any order. In the second syntax statement, capacitance is determined by a polynomial function to be c = c0 + c1 * v + c2 * v *v + ..., where v is the voltage across the capacitor.
defines a capacitor connected to nodes 1 and 0, with a capacitance of 5e-15 farad.
c002 1 0 `1.5e-12*v(5)*time' tc1 = 0.001 tc2 = 0
defines a capacitor connected to nodes 1 and 0, with a capacitance depending on the voltage of node 5 and time.
c003 1 0 poly 1 0.5 scale = 1e-12
defines a capacitor connected to node 1 and 0 with a capacitance determined by
c = [1 + 0.5 v (1,0) ] * le-12
defines five capacitors in parallel, measuring 10 picofarads, and connected to nodes 1 and 0.
defines a cccs F001, connected to nodes 1 and 0 with a current value of I(F001)=5*I(VC). The current gain is 5, maximum current is limited to 3 amps, and minimum current is limited to -3 amps.
defines a polynomial cccs F002, connected to nodes 1 and 0, and with a current value of I(F002)=1e-3+1.3e-3*I(VC).
F003 1 0 delay VC td=7n scale=2
defines a delayed cccs F003, connected to nodes 1 and 0.
H001 1 0 VC 10 max=+10 min=-10
defines a ccvs H001, connected to nodes 1 and 0, with a voltage value of V(H001)=10*I(VC). The current to voltage gain is 5, maximum voltage is limited to 10 volts, and minimum voltage is limited to -10 volts.
Defines a diode with terminal connections, model, and geometries. The [area,pj] or [w,l] format can be used to specify the diode area. Other instance parameters have the same meaning for both formats. Initial conditions are ignored for diode elements. Diode model levels 1-3 are supported by the Virtuoso UltraSim simulator. The diode capacitance is modeled as an equivalent linear capacitor between the terminals.
The diodes supported by the simulator are listed below.
|
n+, n- |
|
|
area = area_val |
Area of diode without units for level=1 and m2 for level=3 (default = 1.0). Default value can be overridden from diode model. If unspecified, it is calculated from the width and length specifications: area = l*w. |
|
pj = pj_val |
Periphery of junction without units for level=1 and in meters for level=3 (default = 0.0). Default value can be overridden from diode model. If unspecified, it is calculated from the width and length specifications: pj = 2*(l+w). |
|
w = wval |
|
|
l = lval |
|
|
wp = wp_val |
|
|
lp = lp_val |
|
|
wm = wm_val |
|
|
lm = lm_val |
|
|
dtemp = dtemp_val |
|
defines a diode named d001 connected between nodes p and n. The diode model is diode1.
defines a diode named d002 connected between nodes 5 and 10. The diode model is diode2 and the PN junction area is 1.5.
Defines a voltage or current source. The direct current (DC) or one form of the transient functions is required, and only one form of the transient functions is allowed for each source. If a DC and a transient function coexist, the DC function is ignored even in a DC analysis. See "Supported HSPICE Sources" for a description of these source functions.
|
n+, n- |
|
|
A form of transient function (see "Supported HSPICE Sources" for details) |
|
|
m = m_val |
defines a voltage source between nodes 5 and 0 with a constant voltage of 4.5.
v002 in gnd pulse( 0 4.5 100n 2n 2.5n 20n 25n )
defines a pulse voltage source between nodes in and gnd.
defines a current source between nodes 4 and 0 with a constant current 0.001A.
The JFET and MESFET models supported by the simulator are listed below.
|
Note: Arguments must begin with J. |
|
|
Area multiplying factor in units of square meters (default=1.0). |
|
|
Sets initial condition to off for this element in DC analysis (default=on). |
|
|
ic=vdsval, vgsval |
Initial internal drain source voltage (vds) and gate source voltage (vgs). |
|
Multiplier used to simulate multiple JFETs and MESFETs in parallel. Setting m affects all currents, capacitances, and resistances (default=1.0). |
|
|
The difference between the element temperature and the circuit temperature in Celsius (default=0.0) |
J001 ndrain ngate nsource jfet
defines a JFET with the name J001 that has its drain, gate, and source connected to nodes ndrain, ngate, and nsource, respectively.
Defines a JFET with the name J002 that has its drain, gate, and source connected to nodes nd, ng, and ns, and the area is 100 microns.
Defines the lossless transmission line.
|
in, out |
|
|
ref_in, ref_out |
|
|
z0 = z0val |
|
|
td = tdval |
|
|
l = length |
T1 1 r1 2 r2 z0 = 100 td = 1n l = 1
Defines a lossless transmission line connected to nodes 1 and 2, and reference nodes r1 and r2. The transmission line is one meter long, with an impedance of 100 ohms and a delay of 1 ns per meter.
Defines the multi-conductor lossy frequency-dependent transmission line or W-element.
|
Number of signal conductors, excluding the reference conductor |
|
|
Name of the resistance, inductance, conductance, and capacitance (RLGC) model |
|
w1 1 r1 2 r2 rlgcmodel=t1_model n=1 l=0.5
.model t1_model w modeltype=rlgc n=1
+ Lo = 3e-7 Co = 1e-10 Ro = 10 Go = 0 Rs = 1e-03 Gd = 1e-13
w1 is a lossy transmission line connected to nodes 1 and 2, and reference nodes r1 and r2. It has a length of 0.5 m and its electrical characteristic is specified by the RLGC model t1_model.
w2 1 2 3 r1 4 5 6 r2 rlgcmodel=t3_model n=3 l=0.2
.model t3_model w modeltype=rlgc n=3
w2 is a three-conductor lossy transmission line with a length of 0.2 m. Its electrical characteristic is specified by the RLGC matrix model t3_model.
w3 1 2 3 r1 4 5 6 r2 rlgcfile = tline.dat n=3 l=0.1
Format of the model file tline.dat:
* The first number specifies the number of conductors.
specifies the electrical characteristics of the w3 lossy transmission line by the external model file tline.dat.
The second syntax is used in conjunction with .options wl, which changes the order so that width appears before length. The second syntax requires the instance parameters to be listed in the order given above. If more than six instance parameters are listed, an error is issued by the Virtuoso UltraSim simulator.
The MOSFET models supported by the simulator are listed below.
|
BSIM3v3 versions 3.0, 3.1, 3.2, 3.21, 3.22, 3.23, 3.24, and 3.30 |
|
|
ndrain, ngate, nsource |
Drain, gate, and source terminals of the MOS transistor, respectively. |
|
Bulk terminal node name; set in a MOS model with parameter bulk. |
|
|
l = length |
|
|
w = width |
|
|
ad = ad_val |
|
|
as = as_val |
|
|
pd = pd_val |
|
|
ps = ps_val |
|
|
nrd = nrd_val |
|
|
nrs = nrs_val |
|
|
rdc = rdc_val |
|
|
rsc = rsc_val |
|
|
m = mval |
Multiplier to simulate multiple MOSFETs in parallel (default=1). |
|
dtemp = dtemp_val |
|
|
geo = geo_val |
Source/drain sharing selector for MOS model parameter value acm = 3 (default = 0.0). |
defines a MOS transistor with name m001 and model name nmos. The drain, gate, and source are connected to nodes 1, 2, and 3, respectively. The bulk terminal is defined in the N-channel metal oxide semiconductor (NMOS) model, or the default value 0 is used. l and w are chosen as default values in this case.
m002 a b c d nmos l = 0.2u w = 1u
defines a MOS transistor with the name m002 and model name nmos. The drain, gate, source, and bulk are connected to nodes a, b, c, and d, respectively. l is 0.2 microns and w is 1 micron.
Defines a mutual inductor, where Lyy and Lzz are inductors. Other HSPICE mutual inductor formats are not supported.
|
Lyy, Lzz |
|
|
k = coupling |
Coefficient of mutual coupling. k is a unitless number with a magnitude greater than 0 and less than or equal to 1. If k is negative, the direction of coupling is reversed. |
Defines a mutual inductor with a coefficient of 0.1 between inductor L1 and inductor L2.
Defines a linear resistor or wire element. If a resistor model is specified, the resistance value is optional. If the instance parameter tags (r, tc1, and tc2) are not used, the values must be ordered as shown above.
defines a resistor named r001 with 50 ohms resistance connected between nodes 1 and 0.
r002 x y 150 tc1 = 0.001 tc2 = 0
defines a 150 ohm resistor r002 between nodes x and y with temperature coefficient tc1 and tc2.
defines a resistor connected to nodes 1 and 2, with a resistance depending on voltage deference between nodes 5 and 6 in the given expression.
Defines a linear inductor, where n1 and n2 are the terminals. Other HSPICE self inductor formats and instance parameters are not supported.
|
n1, n2 |
|
|
l = lval |
|
|
tc1 = val |
|
|
tc2 = val |
|
|
scale = val |
Scaling factors; scales inductance by its value (default = 1.0) |
|
ic = val |
Initial current through an inductor (this value is used as the DC operating point current when uic is specified in the .tran statement, and can be overwritten with an .ic statement) |
|
dtemp = val |
Temperature difference between the element and the circuit in Celsius (default = 0.0) |
|
r = val |
defines an inductor named L001 with an inductance of 5e-6 Henry connected between nodes 1 and 0.
L002 x y 1.5e-6 tc1 = 0.001 tc2 = 0
defines an inductor named L002 with an inductance of 1.5e-6 Henry between nodes x and y. The temperature coefficients are 0.001 and 0.
Defines voltage-controlled current sources (VCCSs), voltage-controlled resistors (VCRs), and voltage-controlled capacitors (VCCAPs) in behavioral, linear, piece-wise linear, poly, and delay forms. In the behavioral function, the equation can contain terms of node voltages. In linear form, the output value is estimated with `[v(in+)-v(in-)]' multiplied by transfactor or transconductance, followed by the scale and temperature adjustment, before confined with the abs, min, and max parameters. In the piece-wise linear function, at least two pairs of voltage-current (or voltage-resistance, voltage-capacitance) points are required.
|
n+, n- |
|
|
in+, in- |
|
|
vcr, vccap, vccs |
Keywords for the voltage-controlled resistor, capacitor, and current source elements. Note: vcr, vccap, and vccs are reserved words that cannot be used as node names. |
|
cur = 'equation' |
Current of the controlled element flowing from n+ to n-. It can be |
|
max = val |
|
|
min = val |
|
|
scale = val |
Scaling factor; scales current by its value (default = 1.0). |
|
m = val |
|
|
tc1 = val |
|
|
tc2 = val |
|
|
ic = val |
|
|
delta = val |
|
|
Voltage drops between the controlling nodes in+ and in-. They must be in ascending order. |
|
The npwl and ppwl functions are used to interchange the n+ and n- nodes, but use the same transfer function.
For the in- node connected to n+, if v(n+,n-) < 0, then the controlling voltage is v(in+,in-). Otherwise, the controlling voltage is v(in+,n-).
For the in- node connected to n-, if v(n+,n-) > 0, then the controlling voltage is v(in+,in-). Otherwise, the controlling voltage is v(in+,n+).
For the in- node, connected to n+, if v(n+,n-) > 0, then the controlling voltage is v(in+,in-). Otherwise, the controlling voltage is v(in+,n-).
For the in- node, connected to n-, if v(n+,n-) < 0, then the controlling voltage is v(in+,in-). Otherwise, the controlling voltage is v(in+,n+).
Note: If the in- node does not connect to either n+ or n-, the Virtuoso UltraSim simulator changes npwl and ppwl to pwl.
G1 1 2 cur = '3.0*sin(v(7)/2)+v(6)^2'
defines a VCCS connected to nodes 1 and 2, with its current dependent on the voltage of nodes 6 and 7 in the given form.
G2 1 2 vccs 5 0 0.5 max = 5 min = 0 m = 2 ic = 0
defines a VCCS connected to nodes 1 and 2. Its current is initialized as 0, and is half of the voltage at node 5. The current is also confined within 0 and 5 amps. The output current is multiplied by 2.
G3 1 2 vccs pwl(1) 5 0 delta = 0.2 0, 0 0.5,1 1.5,1.5 scale = 1.e-3
defines a VCCS connected to nodes 1 and 2, its current controlled by the voltage at node 5. The current is calculated in a piece-wise linear function with a smoothing parameter of 0.2, and is scaled by 1.e-3 upon output.
Gres 1 2 vcr pwl(1) 5 4 m = 3 0,0 1,1k 2,1.5k 3,1.8k 4,2.0k 5,2.0k ic = 1k
defines a VCR connected to nodes 1 and 2, with its resistance dependent on the voltage difference between nodes 5 and 4 in a piece-wise linear form. The initial resistance is 1k. The output resistance is decreased by 2/3.
Gcap 1 2 vccap pwl(1) 5 4 m = 3 scale = 1.e-12 0,0 1,10 2,15 3,18 4,20 5,20 ic = 10
defines a VCCAP connected to nodes 1 and 2, with its capacitance dependent on the voltage difference between nodes 5 and 4 in a piece-wise linear form. The initial capacitance is set to 10 p after being scaled with 1e-12. The output capacitance is increased by a factor of 3.
Gnmos d s vcr npwl(1) g s m =3 0,5g 1,5meg 2,5k 3,1k 5,50
tells the Virtuoso UltraSim simulator to model the source-drain resistor of the n-channel MOSFET which is used as a switch. Based on the npwl function, the resistor value (Gnmos) does not change when changing the position of the d and s nodes.
Defines six forms of voltage-controlled voltage sources (VCVSs): Behavioral, linear, piece-wise linear, polynomial, delay element, and Laplace. In behavioral form, the equation can contain terms of node voltages. In linear form, the output value is estimated using `gain*[v(in+)-v(in-)]', followed by the multiplication of scale and temperature adjustment, before being confined by the abs, min, and max parameters. In the piece-wise linear function, at least two pairs of voltage points are required.
|
n+, n- |
|
|
in+, in- |
|
|
vol = 'equation' |
|
|
max = val |
|
|
min = val |
|
|
scale = val |
Scaling factor; scales voltage by its value (default = 1.0). |
|
tc1 = val |
|
|
tc2 = val |
|
|
ic = val |
|
|
delta = val |
|
|
x1... |
|
|
y1... |
|
|
p0, p1, ... |
|
|
Sets the number of data points to be used in delay simulations. |
|
|
k0, k1, ..., d0, d1, ... |
E1 1 2 vol = '3.0*sin(v(7)/2)+v(6)^2'
defines a VCVS that is connected to nodes 1 and 2, with its voltage dependent on nodes 6 and 7 in the given expression.
E2 1 2 vcvs 5 0 0.5 max = 5 min = 0 ic = 0
defines a VCVS that is connected to nodes 1 and 2. Its voltage is initialized to be 0, and is half of the voltage of node 5. The final voltage is confined within 0 and 5 volts.
E3 1 2 vcvs pwl(1) 5 0 delta = 0.2 0, 0 0.5,1 1.5,1.5
defines a VCVS that is connected to nodes 1 and 2, with its voltage dependent on the voltage of node 5. The voltage is calculated in a piece-wise linear function with a smoothing parameter delta = 0.2.
E4 out 0 laplace in 0 0.0,0.0,0.0,1.0 / 1.0,2.0,2.0,3.0
defines a VCVS where the voltage v(out,0) is controlled by the voltage v(in,0) using the Laplace function.
|
dc=dc_voltage |
|
|
dc=dc_current |
Declares a voltage source named V1 with a DC voltage of 5 volts.
I1 1 0 exp(-0.05m 0.05m 5n 25n 10n 20n)
Defines a current source named i1 that connects to node 1 and ground with an exponential waveform, which has an initial current of -0.05 mA at t=0, and a final current of 0.05 mA. At t=5ns, the waveform rises exponentially from -0.05 mA to 0.05 mA with a time constant of 25 ns. At t=10 ns, it starts dropping to -0.05 mA again, with a time constant of 20 ns.
|
t1 v1 t2 v2 ... |
|
|
r = repeat_time |
Repeats the waveform indefinitely starting from the repeat_time time point. |
|
td = delay |
v001 1 0 pwl( 0 5 9n 5 10n 0 12n 0 13n 5 15n 5 r = 9n)
Defines a voltage source named v001 that connects to node 1 and ground with a PWL waveform from 0 n to 15 n, continually repeating from 9 n to 15 n.
This function resembles the PWL function, except that some voltage values can be replaced by a keyword z, which stands for the high-impedance state. In this state, the voltage source is disconnected from the time point (with keyword z) to the following time point (with non-z state).
v002 1 0 pwlz ( 0 Z 9n 5v 10n 0 12n 0 13n Z 15n 5v )
Defines a voltage source that connects to node 1 and ground with a PWLZ waveform from 9 ns to 13 ns, and from 15 ns to the end of simulation.
|
The time from the beginning of the transient to the first onset of the ramp (default = 0) |
|
v001 1 0 pulse (0 5 0 1n 1n 5n 10n)
Defines a voltage source named v001 that connects nodes 1 and 0. The pulse waveform swings between 0 and 5 volts. The waveform has no initial delay, and has the rise and fall times as 1 ns. The total pulse width is 5 ns with a 10 ns period.
|
Voltage or current root mean square (RMS) amplitude in volts or amps. |
|
i001 1 0 sin(0.01m 0.1m 1.0e8 5n 1.e7 90)
defines a current source named i001 that connects to node 1 and ground with a sin waveform, and has an amplitude value of 0.1 mA, an offset of 0.01 mA, a 100 MHz frequency, a time delay of 5 ns, a damping factor of 1.e7, and a phase delay of 90 degrees.
The pattern function defines a bit string (b-string) or a series of b-strings and consists of four states, 1, 0, m, and z, which represent the high, low, middle voltage or current, and high impedance states, respectively.
|
High voltage or current value of the pattern source in volts or amps. |
|||||||||
|
Low voltage or current value of pattern source in volts or amps. |
|||||||||
|
Delay time in seconds from the beginning of the transient to the first ramp occurrence. |
|||||||||
|
Time spent at each 0, 1, m, or z pattern value in seconds. |
|||||||||
|
Defines a bit string consisting of 1, 0, m, or z. The first alphabetic character must be b.
|
|||||||||
|
Defines a series of b-strings. Each component is a b-string. rb and r can be used for each b-string. Note: Brackets [] must be used. |
|||||||||
Note: The value of rb cannot be a parameter. |
|||||||||
|
Keyword to specify how many times to repeat the b-string or the components.
Note: The value of r cannot be a parameter. |
v1 1 0 pat (5 0 0n 1n 1n 5n b01000 r=1 rb=2 bm10z)
tells the Virtuoso UltraSim simulator to define an independent pattern voltage source named v1 with a first b-string 01000 that executes once and repeats once from the second bit 1, and then the second b-string m10z executes once (that is, the whole bit pattern is 010001000m10z). The high voltage 1 is 5 volts, low voltage 0 is 0 volts, middle voltage m is 2.5 volts, rise and fall times are both 1 ns, and each bit sample time is 5 ns.
.param high = 1.5 low = 0 td=0 tr=10n tf=20n tsample=60n
V2 1 0 pat(high low td tr tf tsample
+ [b01000 r=1 rb=2 bm10z] RB=2 R=2)
tells the simulator to define an independent pattern voltage source named v2 with a whole bit pattern of 01000 1000 m10z m10z m10z.
This statement is designed for repeating simulations under different conditions: Altered parameters, temperatures, models, circuit topology (different elements and subcircuit definitions), and analysis statements. Multiple .alter statements can be used in a netlist file, which is divided into several sections. The part before the first .alter statement is called the main block. Subsequent .alter statements and those between .alter and .end are referred to as alter blocks. When simulating an alter block, the information in the alter block is added to the main block, where conditions with identical names (for example, parameters, elements, subcircuits, and models) are replaced with those in the alter block. Analysis statements are treated in the same way.
The output from a sequence of altered simulations is distinguished by the number appended to the end of the filename, labeling the order in which they are generated. For example, the files from measures are named with .mt0, .mt1, and so forth. All the others skip the 0 for the first simulation, and appear as .fsdb, .trn, .dsn, .nact, .pa, .ta, .vecerr, and .veclog.
V0 (net5 0) vsource type=pulse val0=0.0 val1=1 period=40n rise=10p \
C0 (cnode 0) capacitor c=cValue
the first simulation is run at 25 C and the second simulation is run at 50 C.
Use to connect node1 and node2.
Note: Both nodes must be at the same level of the design.
|
node1, node2 |
Tells the simulator to connect the vdd and vdd! nodes. If probed, the nodes are retained in the waveform file.
This statement allows you to perform data-driven analysis in which parameter values can be modified in different simulations. This statement is used in conjunction with an analysis statement (for example, .tran) with a keyword data = name.
The Virtuoso UltraSim simulator only supports an inline format for the .data statement.
|
param1, param2, ... |
Specifies the parameter names used in the netlist file (the names must be declared in a .param statement) |
|
val11, val21, ... |
.tran 1ns 1us sweep data = allpars
Tells the Virtuoso UltraSim simulator to perform two separate simulations with the two pairs of parameters: res and cap.
This statement specifies the end of a library definition.
Tells the Virtuoso UltraSim simulator to define nodes vdd and gnd as global nodes.
For more information about wildcards, see "Wildcard Rules".
|
Specifies the depth in the circuit hierarchy that a wildcard name applies to. This parameter is only available when the * wildcard is used in the output variable. If set to 1, only the nodes at the current level are applied (default value is infinity). |
.ic v(n1) = 0.5 v(n2) = 1.5 subckt=inv
Tells the Virtuoso UltraSim simulator to initialize node n1 to 0.5 V and node n2 to 1.5 V in all instances of subcircuit inv.
This statement inserts the contents of the file into the netlist file.
Note: [filepath]filename can be enclosed by single or double quotation marks.
Tells the Virtuoso UltraSim simulator to insert the options.txt file into the netlist file.
This statement is used to read common statements, such as device models, from a library file.
|
Note: The [libpath] library_name can be enclosed with single or double quotation marks. |
|
Tells the Virtuoso UltraSim simulator to read the tt section from the models.lib library file.
For more information about wildcards, see "Wildcard Rules".
Note: The .nodeset statement can be used to enhance convergence in DC analysis. If the node value is set close to the actual DC operating point, convergence can be enhanced.
.nodeset v(n1) = 0.5 v(n2) = 1.5
The initial starting point for the operating point calculation is 0.5 V for n1 and 1.5 V for n2. The final operating point for both nodes may be slightly different since .nodeset is only used at the first iteration.
The .op command is used to perform an operating point analysis. The Virtuoso UltraSim simulator reports all node voltages in an .ic file. If multiple time points are specified, the Virtuoso UltraSim simulator saves the node voltages in the following order: The first time point in an .ic0 file and the second point in an .ic1 file.
The Virtuoso UltraSim simulator can print the operating point analysis in the following formats: ASCII, PSF ASCII, and PSF binary (default is ASCII). To specify PSF ASCII, use usim_opt wf_format=psfascii. To specify PSF binary, use usim_opt wf_format=psf.
|
|
|
You can use the gzip option to compress large output files such as .ic0 and .voltage.op generated by the .op command. |
|
Specifies the report format and uses the following keywords: all, current, or voltage.
The information is saved in an ASCII voltage.op file. If PSF format is specified, the file name is tran_voltage_op.tran_op.
The information is saved in an ASCII all.op file. If PSF format is specified, the file name is tran_all_op.tran_op. Refer to the Virtuoso UltraSim Waveform Interface Reference for more details on PSF files.
The information is saved in an ASCII current.op file. If PSF format is specified, the file name is tran_current_op.tran_op. |
|||||||
|
Specifies the time at which the report is printed. This argument is placed directly after the all, current, and voltage arguments in the .op command. |
|||||||
|
gzip=0|1 |
Specifies whether the .op command should compress the output files.
|
.op voltage .5ns current 1.0ns 2.0ns gzip=1
Tells the Virtuoso UltraSim simulator to calculate the operating point at 0.5 ns and print the .op information in voltage format. The operating points are also calculated at 1.0 ns and 2.0 ns and printed in current format. The simulator also generates a gzip-compressed output file.
Note: If you use .op [format] [time1] [time2], the format at time2 is the same as time1.
This statement defines a set of SPICE options. The Virtuoso UltraSim simulator recognizes dcap, defad, defas, defl, defnrd, defnrs, defpd, defps, defw, gmin, parhier, scale, scalm, search, and wl as arguments to this statement.
This statement defines parameters and user-defined functions.
These statements specify the beginning of a subcircuit definition. The subcircuit can have zero ports when all the nodes used in the subcircuit definition are declared global. A subcircuit definition can contain elements, subcircuit calls, nested subcircuit definitions, as well as simulation output statements (see "Supported SPICE Format Simulation Output Statements" ). Parameters can be declared within subcircuit definitions, on a .subckt or .macro command, or on a subcircuit call. Multipliers are also supported on subcircuits (for example, m = 2).
.subckt inv in out w = wval l = lval
m1 out in vdd vdd pmos w = vval*3 l = lval*2
m2 out in gnd gnd nmos w = wval l = lval
x1 n1 n2 inv w = 1e-06 l = 2.5e-07
Defines a subcircuit named inv that has two ports and takes two parameters, w and l. It is instantiated by a call named x1, which passes in values for w and l.
This statement defines the values of temperature used in the simulations.
Tells the Virtuoso UltraSim simulator to perform simulations for three temperature values: 0, 50, and 100.
If uic is specified, the Virtuoso UltraSim simulator sets the node voltages as defined by .ic statements (or by the ic = parameters in various element statements) and sets unspecified nodes to 0 volts instead of solving the quiescent operating point. The DC operating points of unspecified nodes are set to 0 volts. In a SPICE netlist file, specifying uic has the same effect on the simulation as setting usim_opt dc=0.
.tran 1e-12 1e-08 start = 0 sweep vcc lin 5 2.0 3.0
tells the Virtuoso UltraSim simulator to perform a transient analysis from 0 ns to 10 ns in steps of 1 ps. Additionally, vcc is swept linearly for five values from 2.0 to 3.0.
.tran 1ns 1us sweep data = allpars
tells the simulator to perform a transient analysis from 0 ns to 1 us in steps of 1 ns. Additionally, the dataset allpars is used for performing the sweep.
These statements set up logic probes on nodes for the specified output quantity. The results are sent to a waveform output file. These statements can contain hierarchical names and wildcards for nodes or elements, and can be embedded within the scope of a subcircuit (for more information about wildcards, see "Wildcard Rules" ).
The threshold voltages for .lprint/.lprobe can also be set using the vl and vh options. See "Threshold Voltages for Digital Signal Printing and Measurements" for more information.
Note: Output variables can only be simple output variables.
|
ov1, ov2 |
Specifies the simple output variables and uses v(node_name) format. The name can be hierarchical and contain wildcards (for example, x?1.*.n*). |
||||||
|
low = value |
Specifies the voltage threshold for the logic 0 (zero) state. The 0 (logic low) state is probed if the node voltage is less than or equal to low. If the node voltage is between low and high, the X state is probed. If not specified, the global parameter value vl is assigned. |
||||||
|
high = value |
Specifies the voltage threshold for the logic 1 (one) state. The 1 (logic high) state is probed if the node voltage is higher than or equal to high. If the node voltage is between low and high, the X state is probed. If not specified, the global parameter value vh is assigned. |
||||||
|
depth = value |
|||||||
|
subckt = name |
|||||||
|
exclude = pn1, pn2 |
|||||||
|
Defines the content of nodes probed with wildcard probing.
|
.lprobe low = 0.5 high = 4.5 v(n1)
the voltage on node n1 is converted to logic values using the low and high thresholds, and then output to the waveform output file.
.lprobe low = 0.5 high = 4.5 v(*) v(BUF.n1) depth = 2 subckt = INV
the logic states are probed for all the nodes within the subcircuit named INV and one level below in the circuit hierarchy. In this case, the reported names of BUF are appended with the circuit call path from the top level to INV. This is equivalent to the situation where the statement `.lprobe tran v(*) depth = 2' is in the subcircuit definition of INV in the netlist file.
.lprobe tran v(*) subckt=VCO preserve=all
RC reduction is constrained to preserve all nodes in VCO. Voltage probing is performed for all nodes in VCO, including internal nodes that are only connected to resistors and capacitors.
.lprobe tran v(*) exclude=net* exclude=bl*
probes all node voltages except the voltages for nodes matching the pattern net* and bl*. The high and low threshold voltage is set by global parameters vh and vl, respectively.
.lprobe low = 0.5 high = 4.5 v(*) exclude=*$*
.lprint low = 0.5 high = 4.5 v(*) exclude=*$*
the voltage on all nodes is converted to logic values using the low and high thresholds, and then output to the waveform output file. Nodes containing the $ symbol are excluded.
The Virtuoso UltraSim simulator supports .malias, an option used to create an alias name for a model. To create an alias, specify the following in the netlist file:
.malias model_name=alias_name1 <alias_name2 ... >
You can use alias_name1 ... the same way as the model_name.
Note: This option is only supported at the top level of the netlist file.
This statement defines the measurement that is performed for propagation, delay, rise time, fall time, average voltage, peak-to-peak voltage, and minimum and maximum voltage over a specified period, and over a number of other user-defined variables. The measurement can be used for power analysis on elements or subcircuits (see Examples).
The continuous measurement feature of the Virtuoso UltraSim simulator can be enabled by specifying the tran_cont option in the .measure statement. This type of measure performs the specified measurement continuously until the simulation ends. A measure output file named cont_<meas_name>.mtx is generated and reports the continuous measurement results.
The .measure statement can also be embedded within a subcircuit definition in the netlist file. The measure name is appended with the call path name from the top-level to the instances of the subcircuit. The .measure statement can also be used to perform the measurement of all output variables, including expression probes already defined in the .probe expr() statement.
Note: Any signal used in .meas is automatically saved in the waveform file.
|
Specifies the transient analysis for the measurement Note: The Virtuoso Ultrasim simulator only supports measurement of transient analysis. |
|||||||||||||
|
|||||||||||||
.measure tran avg1 avg v(1) from = 0ns to = 1us
.measure tran Q2 integ I(out) from = 0ns to = 1us
tells the simulator to calculate the integral of I(out) from 0 ns to 1us, evaluating the result with variable Q2.
.measure tran rms3 rms v(out) from = 0ns to = 1us
tells the simulator to calculate the RMS of the voltage on node out from 0 ns to 1 0ns, evaluating the result with variable rms3.
.measure tran rout pp par('v(out)/i(out)')
tells the simulator to calculate the peak-to-peak value of the output resistance at node out, evaluating the result with variable rout.
Used for current and power analysis on elements or subcircuits.
.measure tran current max x0(xtop.x23.out) from=0ns to=1us
the maximum current of port out of instance xtop.x23 is measured from 0 ns to 1 us, excluding all other lower hierarchical subcircuit ports.
.measure tran power max `v(xtop.x23.out) * x0(xtop.x23.out)` from=0ns to=1us
the maximum power of port out of instance xtop.x23 is measured 0 ns to 1 us, excluding all other lower hierarchical subcircuit ports.
.measure tran current max x(xtop.x23.out) from=0ns to=1us
the maximum current of port out of instance xtop.x23 and all instances below is measured.
.measure tran power max `v(xtop.x23.out) * x(xtop.x23.out)` from=0ns to=1us
the maximum power of port out of instance xtop.x23 and all instances below is measured.
.measure tran power_avg avg `v(1) * i1(r1)` from=0ns to=1us
the average power on element r1, from 0 ns to 1 us, is measured in the circuit.
.measure tran energy integ ` v(xtop.x23.out) * x(xtop.x23.out)` from=0ns to=10us
the integral power (total energy) of port out of instance xtop.x23 and all instances below is measured.
Note: The from/to pair, at, and td arguments cannot be specified together with the same .measure statement.
|
Specifies the transient analysis for the measurement. Note: The Virtuoso Ultrasim simulator only supports measurement of transient analysis. |
|
|
Specifies the when and find functions. |
|
|
Number of rising edges the target signal achieves r times (the measurement is executed). |
|
|
Number of falling edges the target signal achieves f times (the measurement is executed). |
|
|
Total number of rising and falling edges the target signal achieves c times (the measurement is executed). Crossing can be rise or fall. |
|
|
Last cross, fall, or rise event (measurement is executed the last time the find or when condition is true). Note: last is a reserved keyword and cannot be used as a parameter name in .measure statements. |
|
.measure tran find1 find v(1) at = 0ns
.measure tran find2 find v(1) when v(2) = 2.5 rise = 1
.measure tran when1 v(1) = 2.5 cross = 1
.measure tran when2 v(1) = v(2) cross = 1
.measure tran_cont cont_find3 find v(1) when v(2) = 2.5 rise = 1
.measure tran_cont cont_when3 v(1) = 2.5 cross = 1
.measure tran_cont cont_when4 v(1) = v(2) cross = 1
This format is specified together with other measures. `expr' can contain the names of other measures, but cannot contain node voltages or element currents.
Note: Since `expr' is a function of previous measurement results, it cannot be a function of node voltage or branch current.
.measure tran avg1 avg v(1) from = 0ns to = 1us
.measure tran avg2 avg v(1) from = 2ns to = 3us
.measure tran avg12 param = 'avg1+avg2'
the measure avg12 returns the sum of the values from avg1 and avg2.
.measure tran avg01 avg v(in) from = 0 to = 1e-08
.measure tran time1 when v(1) = 2.5 cross = 1
.measure tran delay1 trig at = 'time1' targ v(t4) val = '0.5*(avg01+0.0112)'
rise = 1
the measure delay1 is calculated based on the results of time1 and avg.
. measure tran meas_name trig … targ …
|
Specifies the transient analysis for the measurement. Note: The Virtuoso Ultrasim simulator only supports measurement of transient analysis. |
|
|
Name of the output variable that triggers the measurement. If the target is reached before the trigger activates, .measure reports a negative value. |
|
|
Value of trig_var or targ_var. |
|
|
Time the measurement starts. The simulator counts the number of cross, rise, or fall events that occur after the td value. Default=0.0. |
|
|
Number of rise, fall, or cross events the target signal achieves f times (the measurement is executed). |
|
|
Special case for trigger specification of measurement start time. The value can be a real time or a measurement result from a previous .measure statement. |
.measure tran delay1 trig v(1) val = 0.5 rise = 1 targ v(2) val = 0.5 fall =1
.measure tran_cont delay2 trig v(1) val = 0.5 rise =1 targ v(2) val = 0.5 fall =1
tells the Virtuoso UltraSim simulator to measure the delay from time point v(1), when its value is 0.5 volts on the first rising edge, to time point v(2) when its values is 0.5 volts on the first falling edge.
The second .measure statement continuously reports the delay between v(1) and v(2) until the simulation ends. The additional output file is cont_delay2.mt0.
.measure tran delay1 trig at=1ns targ v(2) val = 0.5 fall = 1
tells the simulator to measure the delay from 1 ns to time point v(2) when its value is 0.5 volts on the first falling edge.
For more information about wildcards, see "Wildcard Rules".
For .print, the Virtuoso UltraSim simulator creates a circuit.print# output file for each simulation run (# starts at 0). The file includes all data for printed variables, with an x in the first column indicating where the .print output data starts, followed by a y indicating where the data ends.
The statements also support the following:
Note: Nonexistent netlist file part names are ignored (warning message with names is printed).
|
ov1, ov2 ... |
|
||||||||||||
|
|||||||||||||
|
depth=value |
|||||||||||||
|
subckt=name |
|||||||||||||
|
net=name |
|||||||||||||
|
exclude=pn1, pn2 |
|||||||||||||
|
Defines the content of nodes probed with wildcard probing.
Note: To apply .preserve=all globally to all .probe statements in a netlist, set the probe_preserve option to all (see probe_preserve Option). |
.print v(n1) i1(m1) vdiff = v(n2,n3) expr1 = par(`v(n1)+2*v(n2)')
tells the Virtuoso UltraSim simulator to print the voltage at node n1 and the current i1 for element M1. The voltage difference between nodes n2 and n3 is printed and assigned to vdiff. In addition, an expression of voltages at nodes n1 and n2 is printed and assigned to expr1.
.print tran v(*) i(r1) depth = 2 subckt = VCO
tells the simulator to print the voltages for all nodes in the subcircuit named VCO and one level below in the circuit hierarchy. Also printed is the current of the resistor r1 for all the instances of the subcircuit VCO. The reported names of r1 are appended with the circuit call path from the top level to VCO. This is equivalent to the situation where the statement .print tran v(*) i(r1) depth = 2 is written in the subcircuit definition of VCO in the netlist file.
.print tran X(xtop1.block1.in) X0(xtop1.block1.in)
tells the simulator to report currents for instance block1, which is instantiated in top level block xtop. X() and returns the current into the subcircuit port in, including all lower hierarchical subcircuit ports. X0() only returns the current into the subcircuit port and excludes all other lower hierarchical subcircuit contributions.
.print tran x0(xtop.x23.xinv.out)
tells the simulator to print the current of port out of instance xtop.x23.xinv, excluding all other lower hierarchical subcircuit ports.
Note: To print the subcircuit instance port current, use the format specified in this example.
tells the simulator to print the current of ports for instance xtop and all instances below.
.probe tran v(*) subckt=VCO preserve=all
RC reduction is constrained to preserve all nodes in VCO. Voltages are probed for all nodes in VCO, including internal nodes that are only connected to resistors and capacitors.
.probe tran v(*) exclude=net* exclude=bl* depth=2
probes all node voltages of the top level and one hierarchy below, except for the voltages of nodes matching the pattern net* and bl*.
.probe tran v1(x1.x3.mp1) v2(x3.xp.mp4)
probes the drain of x1.x3.mp1 and gate of x3.xp.mp4.
.probe tran out(IO.ANA.VREG) ps3(IO.ANA.VREG) all(IO.ANA.C*)
probes the voltage of port out and the value of the internal variable ps3 for the verilogA instance IO.ANA.VREG, as well as all the port voltages and internal variable values for verilogA instances that match the name IO.ANA.C*.
.probe v(X0/XINV1/XN0/M0:GATE@m2) net=x1/x0/xinv1/a
probes the voltage of the finger device's node X0/XINV1/XN0/M0:GATE@m2, which is defined in the DSPF file.
.probe i1(R1) net=x1/x0/xinv1/a
probes the current of parasitic resistor R1 on net x1/x0/xinv1/a in a SPEF file.
probes all the voltages of all the subnodes of all nets in DSPF/SPEF file.
This option is used to control printout width. The default value is 80, with up to four variables per line in the printout file. If the number of variables in the .print statement exceeds four, then the first four variables are printed in the same line and the rest are printed on the next line. If co = 132 is set, wide printout format is applied, allowing up to eight variables in a line.
Similar to the co option, .width is used to define the printout width of the output file (default is 80). out is the keyword used for printout width.
The print time interval is determined by the .tran statement step time. If the netlist file contains Spectre® .tran options, then the step and outputstart arguments in the Spectre .tran option statement determine the print time step and the first print time point, respectively.
The ingold option controls the numerical format of the printout (default value is 0) and is specified with the .option statement. The engineering notation, in contrast to exponential format, provides two to three extra significant digits and aligns data columns to facilitate comparison.
|
ingold=0 |
||
|
ingold=1 |
||
|
ingold=2 |
The measdgt option formats the printed numbers in the .measure output files (such as .meas0 and .mt0). x is used to specify the number of digits displayed to the right of the decimal point. The typical value of x is between 1 and 7 (default is 4). You can use .option measdgt with .option ingold to control the output data format.
Virtuoso UltraSim simulator format (preferred):
The numdgt option formats the printed number in the .print, .ic0, and voltage.op output files. The x variable is used to specify the number of significant digits. The typical value of x is between 1 and 7 (default is 5). You can use .option numdgt and .option ingold to control the output data format. Using this option does not affect the accuracy of the simulation.
The Virtuoso UltraSim simulator supports the following SPICE format expressions:
|
Returns the square root of the absolute value of x: sqrt(-x) = -sqrt(|x|) |
|||
|
Returns the value of x raised to the integer part of y: x(integer part of y) |
|||
|
Returns the absolute value of x, raised to the y power, with the sign of x: (sign of x)|x|y |
|||
|
Returns the natural logarithm of the absolute value of x, with the sign of x: (sign of x)log(|x|) |
|||
|
Returns the base 10 logarithm of the absolute value of x, with the sign of x: (sign of x)log10(|x|) |
|||
|
Returns the absolute value of x, with the sign of y:(sign of y)|x| |
|||
The Virtuoso UltraSim simulator supports the following constants.
Note: Constants are only valid in Spectre mode.
The Virtuoso UltraSim simulator supports the following operators.
|
Returns 1 if the left operand is less than the right operand (otherwise returns 0) |
||
|
Returns 1 if the left operand is greater than the right operand (otherwise returns 0) |
||
|
Returns 1 if the left operand is less than or equal to the right operand (otherwise returns 0) |
||
|
Returns 1 if the left operand is greater than or equal to the right operand (otherwise returns 0) |
||
|
Returns 1 if the operands are not equal (otherwise returns 0) |
||
|
Returns 1 if either or both operands are not zero (returns 0 only if both operands are zero) |
||
|
If cond is true, evaluates expr1 (if false, evaluates expr2) |