Product Documentation
OrCAD Capture User Guide
Product Version 17.4-2020, June 2020

Creating Design for Simulation in PSpice for TI

A design that is targeted for simulation has parts for which simulation models are available and configured.

When creating designs for simulation, some of the parts you use are for simulation only (simulation stimulus parts like voltage sources), and some of the parts you use have simulation models that only model some of the pins of a real device.

The parts that are to be used for simulation have a SIMULATIONONLY property. You can add this (or any) property to your own custom parts to make them simulation-only.

Adding PSpice Libraries and Parts

The PSpice part libraries (.OLB files) are located in the tools\capture\library\pspice directory, under your main installation directory. The simulation model libraries (.lib files) are located under the tools\pspice\library directory.

 If you wish to add more PSpice part libraries to your design, you can do so by using the Place Part dialog box (choose PlacePart or use the Place Part toolbar button). Then add the library you need by selecting it from the tools\capture\library\pspice sub-directory. The PSpice libraries located in the pspice sub-directory include:

When you select a part in the Place Part dialog box, the PSpice symbol () appears for a part that can be simulated.

You can also add more PSpice Parts using PSpice Part Search (choose Place - PSpice Component - Search).

At minimum, a part that you can simulate has these properties:

Not all parts in the libraries are set up for simulation. For example, connectors are parts destined only for board layout and do not have these simulation properties. The libraries contained in the pspice subfolder are the only ones set up for simulation.

You must use the 0 (zero) ground part in designs intended to be simulated by PSpice. If you have used other ground parts, you can rename them to 0 so that they will be accepted by PSpice. (See Placing PSpice Ground 0 Symbols for PSpice Simulations )

Special simulation-only parts

The PSpice part libraries also include special parts that you can use only for simulation. These include:

Vendor-supplied parts

The PSpice libraries provide an extensive selection of manufacturers' analog and digital parts. Typically, the library name reflects the kind of parts contained in the library and the vendor that provided the models.

Libraries are provided with PSpice:

Standard PSpice libraries

The standard PSpice libraries are installed in the following locations in the installation directory:

To find out more about each model library, read the comments in the .LIB file header.

Part naming conventions

The part names in the PSpice libraries usually reflect the manufacturers' part names. If multiple vendors supply the same part, each part name includes a suffix that indicates the vendor that supplied the model.


To find parts using the part browser:

  1. In Capture, choose PlacePart.
  2. In the Part Name field, type a text string with wildcard characters that approximates the part name that you want to find. Use this syntax:
    <wildcard><part_name_fragment><wildcard>
    where <wildcard> is one of the following:

    * match zero or more characters
    ? match exactly one character

    The parts browser displays only the matching part names.

    This method finds any part contained in the current part libraries configuration, including parts for user-defined models.

To find parts using PSpice Part Search:

You can also search for PSpice parts using PSpice Part Search. For more information, see the Searching and Placing PSpice Parts section.

Passive parts

The PSpice libraries supply several basic parts based on the passive device models built into PSpice. These are summarized in the following table.

To find out more about how to use these parts and define their properties, look up the corresponding PSpice device letter in the Analog Devices chapter in the online PSpice Reference Manual, and then see the Capture Parts sections.

Available PartsDevice TypePSpice Device Letter...
C C_VAR capacitor C
L inductor L
R R_VAR resistor R
XFRM_LINEAR K_LINEAR transformer K and L
T ideal transmission line T
TLOSSY Lossy transmission line T
TnCOUPLED TnCOUPLEDX* KCOUPLEn* coupled transmission line T and K

*For these device types, the PSpice libraries supply several parts. Refer to the online PSpice Reference Manual for the available parts.

Breakout parts

The PSpice libraries supply passive and semiconductor parts with default model definitions that define a basic set of model parameters. This way, you can easily:

These are called breakout parts and are summarized in the following table.

To find out more about how to use these parts and define their properties, look up the corresponding PSpice device letter in the Analog Devices chapter in the online PSpice Reference Manual, and then see the Capture Parts sections.

Breakout PartDevice TypePSpice Device Letter
BBREAK GaAsFET B
CBREAK capacitor C
DBREAKx diode D
JBREAKx* JFET J
KBREAK inductor coupling K
LBREAK inductor L
MBREAKx* MOSFET M
QBREAKx* bipolar transistor Q
RBREAK resistor R
SBREAK voltage-controlled switch S
TBREAK transmission line T
WBREAK current-controlled switch W
XFRM_NONLINEAR transformer K and L
ZBREAKN IGBT Z

* For this device type, the PSpice libraries supply several breakout parts. Refer to the online PSpice Reference Manual for the available parts.

Behavioral parts

Behavioral parts allow you to define how a block of circuitry should work without having to define each discrete component.

Analog behavioral parts

These parts use analog behavioral modeling (ABM) to define each part's behavior as a mathematical expression or lookup table. The PSpice libraries provide ABM parts that operate as math functions, limiters, Chebyshev filters, integrators, differentiators, and others that you can customize for specific expressions and lookup tables. You can also create your own ABM parts.

Digital behavioral parts

These parts use special behavioral primitives to define each part's functional and timing behavior. These primitives are:

LOGICEXP to define logic expressions
PINDLY to define pin-to-pin delays
CONSTRAINT to define constraint checks


Many of the digital parts provided in the PSpice libraries are modeled using these primitives. You can also create your own digital behavioral parts using these primitives.

Defining Part Properties Needed for Simulation

If you want to use a part for simulation, then your part should have the PSPICETEMPLATE property defined for it:

You can also add other simulation-specific properties for digital parts: IO_LEVEL, MNTYMXDLY, and PSPICEDEFAULTNET.

Here are the things to check when editing part properties:

For examples of how to use the property, see PSPICETEMPLATE examples.

Editing simulation properties

To edit a property needed for simulation

  1. In the schematic page editor, select the part to edit.
  2. From the Edit menu, choose Properties to display the Parts spreadsheet of the Property Editor.
  3. Click on the cell of the column you want to change, or click the New button to add a property (and type the property name in the Name field).
  4. If needed, type a value in the Value text box.
  5. Click Apply to update the design, then close the spreadsheet.

PSPICETEMPLATE property

The PSPICETEMPLATE property defines the PSpice syntax for the part's netlist entry. When creating a netlist, Capture substitutes actual values from the circuit into the appropriate places in the PSPICETEMPLATE syntax, then saves the translated statement to the netlist file.

Any part that you want to simulate must have a defined PSPICETEMPLATE property. These rules apply:

PSPICETEMPLATE syntax

The PSPICETEMPLATE contains:

Regular characters in template

Regular characters include the following:

An identifier is a collection of regular characters of the form:

alphabetic character [any other regular character]*.

Property names in templates

Property names are preceded by a special character as follows:

[ @ | ? | ~ | # | & ]<identifier>

The schematic page editor processes the property according to the special character as shown in the following table.

Syntax* Replacement
@<id> Value of <id>. Error if no <id> property or if no value assigned.
&<id> Value of <id>, if <id> is defined.
?<id>s...s Text between s...s separators, if <id> is defined.
?<id>s...ss...s Text between the first s...s separators, if <id> is defined, else the second s...s clause.
~<id>s...s Text between s...s separators, if <id> is undefined.
~<id> s...ss...s Text between the first s...s separators, if <id> is undefined, else the second s...s clause.
#<id>s...s Text between s...s separators, if <id> is defined, but delete rest of template if <id> is undefined.

*s is a separator character.

Separator characters include commas (,), periods (.), semi-colons (;), forward slashes (/), and vertical bars ( | ). You must always use the same character to specify an opening-closing pair of separators.


You can use different separator characters to nest conditional property clauses.

The caret (^) character in templates

The schematic page editor replaces the caret (^) character with the complete hierarchical path to the device being netlisted.

The new line (\n) character sequence in templates

The part editor replaces the new line (\n) character sequence with a new line. Using newline character sequence (\n), you can specify a multiline netlist entry from a one-line template.

The percentage (%) character and pin names in templates

Pin names are denoted as follows:

%<pin name>

where pin name is one or more regular characters.

The schematic page editor replaces the %<pin name> clause in the template with the name of the net connected to that pin.

The end of the pin name is marked with a separator. To avoid name conflicts in PSpice, the schematic page editor translates the following characters contained in pin names.

Pin name characterReplacement
< l (L)
> g
= e
\XXX\ XXXbar

To include a literal percentage (%) character into the netlist output, type the percentage symbol twice (%%) in the template.

Recommended scheme for netlist templates

Templates for devices in the part library start with a PSpice device letter, followed by the hierarchical path, and then the reference designator (REFDES) property. We recommend that you adopt this scheme when defining your own netlist templates.

PSPICETEMPLATE examples

Simple resistor (R) template

The R part has two pins (1 and 2) and two required properties, REFDES and VALUE.

The template for the resistor is:

R^@REFDES %1 %2 @VALUE

A sample translation of the template is:

R_R23 abc def 1k

where REFDES equals R23, VALUE equals 1k, and R is connected to nets abc and def.

Voltage source with optional AC and DC specifications (VAC) template

The VAC part has two properties, AC and DC, and two pins, + and -.

The template is:

V^@REFDES %+ %- ?DC|DC=@DC| ?AC|AC=@AC|

A sample translation of the template is:

V_V6 vp vm DC=5v

where REFDES equals V6, VSRC is connected to nodes vp and vm, DC is set to 5v, and AC is undefined.

Another sample translation of the template is:

V_V6 vp vm DC=5v AC=1v

where, in addition to the settings for the previous translation, AC is set to 1v.

Parameterized subcircuit call (X) template

This example supposes a subcircuit Z that has two pins (a and b) and a subcircuit parameter G, where G defaults to 1000 when no value is supplied.

To allow the parameter to be changed on the schematic page, treat G as property in the template.

The template is:

X^@REFDES %a %b Z PARAMS: ?G|G=@G|

~G|G=1000|

An equivalent template (using the if...else form) is:

X^@REFDES %a %b Z PARAMS: ?G|G=@G||G=1000|

A sample translation of the template is:

X_U33 101 102 Z PARAMS: G=1024

where REFDES equals U33, G is set to 1024, and the subcircuit connects to nets 101 and 102.

Another sample translation of the template is:

X_U33 101 102 Z PARAMS: G=1000

where the settings of the previous translation apply except that G is undefined.

Digital stimulus parts with variable width pins template

For a digital stimulus device template (such as that for a DIGSTIM part), a pin name can be preceded by an asterisk (*) character. This signifies that the pin can be connected to a bus and the width of the pin is set to be equal to the width of the bus.

The template is:

U^@REFDES STIM(%#PIN, 0) %*PIN

\n+ STIMULUS=@STIMULUS

where #PIN refers to a variable width pin.

A sample translation of the template is:

U_U1 STIM(4,0) 5PIN1 %PIN2 %PIN3 %PIN4

+ STIMULUS=mystim

where the stimulus is connected to a four-input bus, a[0-3].

Pin callout in subcircuit templates

The number and sequence of pins named in a template for a subcircuit must agree with the definition of the subcircuit itself--that is, the node names listed in the .SUBCKT statement, which heads the definition of a subcircuit. These are the pinouts of the subcircuit.

IO_LEVEL property

The IO_LEVEL property defines the level of interface subcircuit model PSpice must use for a digital part that is connected to an analog part.

If you are creating a digital part, you need to

  1. Add the IO_LEVEL property to the part and assign a value shown in the table below.

    ValueInterface subcircuit (level)
    0 circuit-wide default
    1 AtoD1 and DtoA1
    2 AtoD2 and DtoA2
    3 AtoD3 and DtoA3
    4 AtoD4 and DtoA4
  2. Use this property in the property definition (IO_LEVEL is also a subcircuit parameter used in calls for digital subcircuits).

MNTYMXDLY property

The MNTYMXDLY property defines the digital propagation delay level that PSpice must use for a digital part.

If you are creating a digital part, you need to do the following

  1. Add the MNTYMXDLY property to the part and assign a value shown in the table below.

    ValuePropagation delay
    0 circuit-wide default
    1 minimum
    2 typical
    3  maximum
    4 worst-case (min/max)
  2. Use this property in the property definition (MNTYMXDLY is also a subcircuit parameter used in calls for digital subcircuits).

PSPICEDEFAULTNET property

The PSPICEDEFAULTNET pin property defines the net name to which a power or ground (invisible) pin is connected.

For example, if the power and ground pins on a digital part are connected to the digital nets $G_DPWR and $G_DGND, respectively, then the properties are defined as follows:

PSPICEDEFAULTNET=$G_DPWR

PSPICEDEFAULTNET=$G_DGND

If you are creating a digital part, you need to do the following

  1. For each power pin, create a PSPICEDEFAULTNET property and assign the name of the digital net to which the pin is connected.
  2. Use the appropriate pin name in the property definition.

Guidelines and Best Practices for Specifying Values for Part Properties

Note the following when specifying values for part properties:

Placing PSpice Ground 0 Symbols for PSpice Simulations

For PSpice analog simulation to run, your design must have a PSpice ground (0) symbol. The CAPSYM.OLB, which is the default library in Capture, includes the PSpice ground (0) symbol. Use the 0 symbol to place a PSpice ground 0 symbol in your design.

To select the 0 symbol:

  1. Choose Place – Ground (or use the Place Ground toolbar button). The Place Ground dialog box appears.
  2. Select the CAPSYM part library from the Libraries list (if it is not already selected).

    You can also place the 0 symbol from the Source part library. To do this, add the Source part library to the Libraries list using the Add Library button; SOURCE.OLB is located in the \TOOLS\CAPTURE\LIBRARY\PSPICE subdirectory under your installation directory.

  3. Select the 0 symbol (if not already selected).
  4. Click OK to place the PSpice ground 0 symbol.

    Alternatively:

    - You can place any ground symbol, open the Property Editor, and change its name to 0.

    - You can place PSpice ground 0 symbol from PSpice Component quick pick, that is, Place - PSpice Component - PSpice Ground.

While generating the PSpice netlist, if Capture does not find a PSpice ground (0) symbol in your design, then a warning message is flagged in the Session Log. You may ignore the warning, if the design will be used for running the digital PSpice simulation. However, for running analog simulation, the design must have at least one PSpice ground 0 symbol.

 If you are starting a new analog PSpice design, then it is recommended that you use the PSpice project template, AnalogGNDSymbol.opj. This project by default has the PSpice ground 0 symbol needed for your analog designs.

Using the FLOAT Property for Unconnected Pins

When preparing a circuit for simulation with PSpice, it is important that all pins for all parts are connected properly. If a pin is meant to remain unconnected intentionally, you need to use the PSpice pin property FLOAT, rather than a No Connect symbol. Otherwise, the circuit may not netlist correctly for PSpice.

The pin property FLOAT may have one of the following three values:

ValueDescription
Error The pin will not netlist. An error message will be returned when the PSpice simulation netlist is generated. Use Error when you want to be reminded that this pin is a "no connect" and should be treated in a special way. Error is the default value.
RtoGND The pin is connected to a virtual resistor, whose opposite pin is tied to GND. The resistor has a value of 1/GMIN. This value allows the simulation netlist to be created and allows PSpice to perform the analysis. The virtual resistor will not be processed as part of a layout netlist or appear in a BOM.
UniqueNet The pin, when left unconnected, is attached to a unique node when the PSpice simulation netlist is generated. Use UniqueNet when you want the pin to remain unconnected but correspond to the Probe data associated with its part.

The FLOAT property can either be defined in the part editor when creating a new part, or you can edit a pin on an existing part using the property editor.

To define the FLOAT property using the property editor

  1. In Capture, double-click on the pin to open the property editor spreadsheet.
  2. Click on the Pins tab.
  3. Click New Property and type FLOAT (upper case) in the Name text box.
  4. Type the property value you want to use, then click OK.
  5. Click Apply or close the spreadsheet to have the changes take effect.

Using Global Parameters and Expressions

In addition to literal values, you can use global parameters and expressions to represent numeric values in your circuit design.

Global parameters

A global parameter is like a programming variable that represents a numeric value by name.

Once you have defined a parameter (declared its name and given it a value), you can use it to represent circuit values anywhere in the schematic; this applies to any hierarchical level.

Some ways that you can use parameters are as follows:

When multiple parts are set to the same value, global parameters provide a convenient way to change all their values for "what-if" analyses.

For example, if two independent sources have a value defined by the parameter VSUPPLY, then you can change both sources to 10 volts by assigning the value once to VSUPPLY.

Declaring and using a global parameter

To use a global parameter in your design, you need to:

To declare a global parameter

  1. Place a PARAM part in your design.
  2. Double-click the PARAM part to display the Parts spreadsheet.
  3. Do the following for each global parameter:

For example, to declare the global parameter VSUPPLY that will set the value of an independent voltage source to 14 volts, place the PARAM part, and then create a new property named VSUPPLY with a value of 14V.

To use the global parameter in your circuit

  1. Find the numeric value that you want to replace: a component, model parameter, or other property value.
  2. Replace the value with the name of the global parameter using the following syntax:
    { global_parameter_name }
    The curly braces tell PSpice to evaluate the parameter and use its value.

    To avoid errors, always include parameter variable name in curly braces when it is assigned to the parameter/property on the part.

Expressions

PSpice evaluates the expression to a single value every time:

An example of this would be a parameter that changes with each step of a DC sweep or parametric analysis.

Specifying expressions

To use an expression in your circuit

  1. Find the numeric or boolean value you want to replace: a component value, model parameter value, other property value, or logic in an IF function test.
  2. Replace the value with an expression using the following syntax:
    { expression }
    where {expression} can contain any of the following:

The curly braces tell PSpice to evaluate the expression and use its value.

Operator classOperatorOperation
arithmetic


+ addition or string concatenation

- subtraction

* multiplication

/ division

** exponentiation
logical


~ unary NOT

| boolean OR

^ boolean XOR

& boolean AND
relational*


== equality test

!= non-equality test

> greater than test

>= greater than or equal to test

< less than test

<= less than or equal to test

*Logical and relational operators are used within the IF() function; for digital parts, logical operators are used in Boolean expressions.

Defining Stimuli

To simulate your circuit, you need to connect one or more source parts that describe the input signal that the circuit must respond to .

The PSpice libraries supply several source parts that are described in the tables that follow. These parts depend on:

Analog stimuli

Analog stimuli include both voltage and current sources. The following table shows the part names for voltage sources.

InputPart for voltage
DC bias VDC or VSRC
AC magnitude and phase VAC or VSRC
exponential VEXP
periodic pulse VPULSE
piecewise-linear VPWL
piecewise-linear that repeats forever VPWL_RE_FOREVER or VPWL_F_RE_FOREVER
piecewise-linear that repeats n times VPWL_N_TIMES or VPWL_F_N_TIMES*
frequency-modulated sine wave VSFFM
sine wave VSIN

*VPWL_F_RE_FOREVER and VPWL_F_N_TIMES are file-based parts; the stimulus specification is saved in a file and adheres to the PSpice netlist syntax.

To determine the part name for an equivalent current source, in the table of voltage source parts, replace the first V in the part name with I. For example, the current source equivalent to VDC is IDC, to VAC is IAC, to VEXP is IEXP, and so on.


If you want to specify multiple stimulus types

If you want to run more than one analysis type, including a transient analysis, then you need to use either of the following:

Using time-based stimulus parts with AC and DC properties

The time-based stimulus parts that you can use to define a transient, DC, and/or AC input signal are listed below.

VEXP IEXP
VPULSE IPULSE
VPWL IPWL
VPWL_F_RE_FOREVER IPWL_F_RE_FOREVER
VPWL_F_N_TIMES IPWL_F_N_TIMES
VPWL_RE_FOREVER IPWL_RE_FOREVER
VPWL_RE_N_TIMES IPWL_RE_N_TIMES
VSFFM ISFFM
VSIN ISIN

In addition to the transient properties, each of these parts also has a DC and AC property. When you use one of these parts, you must define all of the transient properties. However, it is common to leave DC and/or AC undefined (blank). When you give them a value, the syntax you need to use is as follows.

PropertySyntax
DC DC_value[units]
AC magnitude_value[units] [phase_value]

For the meaning of transient source properties, refer to the I/V (independent current and voltage source) device type syntax in the Analog Devices chapter in the online PSpice Reference Guide.

Using VSRC or ISRC parts

The VSRC and ISRC parts have one property for each analysis type: DC, AC, and TRAN. You can set any or all of them using PSpice netlist syntax. When you give them a value, the syntax you need to use is as follows.

PropertySyntax
DC DC_value[units]
AC magnitude_value[units] [phase_value]
TRAN time-based_type (parameters)

where time-based_type is EXP, PULSE, PWL, SFFM, or SIN, and the parameters depend on the time-based_type.

Digital stimuli

InputPart
For transient analyses
DIGSTIMn signal or bus (any width)
DIGCLOCK clock signal
STIM1 1-bit signal
STIM4 4-bit bus
STIM8 8-bit bus
STIM16 16-bit bus
FILESTIMn file-based signal or bus (any width)