Preparing a Circuit for Simulation in ADS
This topic describes a variety of items that can be added to an ADS schematic to prepare it for circuit simulation. You should be familiar with this process and with working in projects before continuing here.
The process for creating a schematic-selecting and placing components, editing component parameters, and wiring-is described in the Schematic Capture and Layout documentation and in the Advanced Design System Quick Start.
Refer to the following topics for details on using simulation-specific items:
- Using Current Probes describes how to specify the points in a circuit where you can measure and save current values.
- Naming Nodes describes how to specify the circuit nodes where you can measure and save voltages.
- Using NodeSet and NodeSetByName Components describes how to apply best guess voltage and resistance values at points in a circuit to set starting DC values.
- Highlighting Nodes describes how to highlight nodes to quickly locate a point in a circuit.
- Using Constants, Variables, and Functions shows how to use variables and equations to assign values to parameters.
- Applying Measurements shows how to use pre-defined measurements in a schematic, which are evaluated during a simulation and whose results are saved to view in the Data Display.
- Using Simulation Templates shows how to use predefined circuit and simulation setups to simplify creating your design.
- Using Simulation Instrument Components shows how to simplify the simulation process by connecting your design to components that represent instruments and run a simulation.
Using Current Probes
Current probes are added to a schematic to collect current data at that point in the circuit. You can place as many probes as you want in a schematic. Current probes are found on the Probe Components palette.
Current probes have parameters that you may want to edit, but it is not necessary. You may want to rename the probe to something meaningful, since the name is used to name the data collected with the probe.
Note
Current probes (I_Probe components) must be placed so that the arrow on the probe points in the direction of (positive) current flow. To flip a probe horizontally, choose Edit > Rotate/Mirror > Mirror About Y .
Naming Nodes
To collect voltage data at nodes of interest, you label the nodes on the schematic.
There are two types of nodes: global nodes and named nodes .
By placing a GlobalNode component on a sub-level or top-level schematic of a design ( Insert > Global Node ), you can select and edit the name of a node that will maintain the same identity throughout the entire hierarchy of designs. This means the nodes with the same name as the global node name in other designs are all electrically connected. This facilitates the interconnection of boards, IC chips, and connectors.
A named node can be applied to any schematic, but it is specific to that schematic only.
To specify a global node:
- Choose Insert > Global Node and place the component on the schematic. Double-click to display the dialog box for entering a name.
- Type a name in the Enter global node name field. Click Add . On this design and lower-level designs, it will be considered the same node.
- To make an existing named node a global node, select it from Node Name List and click Add.
To name a node:
- Choose Insert > Wire/Pin Label .
- In the dialog box appears, type the desired name and click the node on the schematic that you want to associate with that name.
Note
In general, voltage and current data is in phasor representation, so the voltage values at named nodes are peak voltage.
- You can repeat this for other nodes, or click Done to dismiss the dialog box.
Note
By placing an exclamation mark (!) at the end of node name, it becomes a global node for compatibility with Cadence formats. This should be used only if Cadence compatibility is required.
Using NodeSet and NodeSetByName Components
The following sections provide details on the components NodeSet and NodeSetByName, which are available in all simulation palettes.
Using NodeSet or NodeSetByName to Facilitate a Simulation
By placing a NodeSet or NodeSetByName component at strategic places in a circuit, you can instruct the DC simulator to begin its analysis at a given best-guess voltage. It is also possible to enter values for connection resistance.
These node set components can be used in any analysis, but are especially useful for:
- Circuits that are bi-stable, such as flip-flops or ring oscillators, to force it to a known high or low state rather than letting the DC solver find the meta-stable state halfway between high and low.
- Circuits that are isolated from DC by blocking capacitors.
NodeSet and NodeSetByName work in a two-stage process. In the first stage, these elements attach the specified voltage source with a series resistor to the specified node(s) to force a value. A DC solution for the entire circuit is then calculated. In the second stage, the forcing source and resistor are removed and the DC solution is refined, using the previous DC solution as an initial guess.
If you choose to use a NodeSetByName component, you can specify a name to facilitate the retrieval of voltage data in the dataset.
Note that if you specify both a DC Initial Guess File and a nodeset component, the former takes precedence.
NodeSet Fields
Following are details on the fields in the dialog box for the NodeSet component.
Instance Name Displays and edits the name of the component.
Select Parameter Selects a voltage or resistance for editing. V (volts) is an estimated initial node voltage. R is connection resistance.
Add adds a voltage or resistance to the Select Parameter field.
Cut deletes a voltage or resistance from the Select Parameter field.
Paste copies a voltage or resistance that has been cut and places it in the Select Parameter field.
Parameter Entry Mode Select standard or file-based data.
Optimization/Statistics/DOE Setup Opens a dialog box providing for the entry of parameters related to optimization and statistics.
Display parameter on schematic Displays or hides a selected node on the schematic.
NodeSetByName Fields
Following are details on the fields in the dialog box for the NodeSetByName component.
Instance Name Displays and edits the name of the component.
Select Parameter Selects a node name for editing. This name is associated with an initial voltage V and a connection resistance R.
Add adds a node name from the Edit Node Name field to the Select Parameter field.
Cut deletes a node name from the Select Parameter field.
Paste copies a node name that has been cut and places it in the Select Parameter field.
Select a Node Name: Selects a node name for editing, or for adding to the Select Parameter field.
Node Name List: Type in a node name.
Volt The initial voltage guess associated with the node name. Use this field to edit the voltage.
Res The connection resistance associated with the node name. Use this field to edit the resistance.
Display parameter on schematic Displays or hides a selected node name on the schematic.
Highlighting Nodes
Highlighting nodes can help you identify specific points in a schematic or subnetwork. To do this, choose Simulate > Highlight Node . This opens a window that lists all nodes (such as named connections, wires, pins, and ports) in a circuit and in all of its subcircuits. Click a node in the list and it will be highlighted on the schematic.
Highlighting nodes can help in troubleshooting a simulation problem. If problems are encountered at a node during simulation, the error and node name will appear in the Simulation/Synthesis Messages window. By using the highlight node feature you can quickly zoom in on the problem area.
Clearing Highlights
There are two ways to clear all highlights:
- In the Highlight Node window, click Clear . This clears all highlights that have been set.
- In the Schematic window, choose View > Clear Highlighting.
Hint
The highlight color can be changed through Options > Preferences > Display > Highlight .
Using Constants, Variables, and Functions
Advanced Design System contains built-in global constants, variables, and functions that can be used in a schematic. You can use them:
- With the VarEqn component
- With components whose parameters can be defined using equations. (For a selected parameter, the Equation Editor button will appear in the component editing dialog box.)
These can simplify schematic design. For example, you can set a variable named Frequency to a specific value, then use the variable wherever the frequency needs to be specified in the schematic. If you want to change the frequency, you do so in one place.
For more information on how to use VarEqn, refer to the VarEqn component help.
Note
You can use the conditional statement if/then/else/endif in variable definitions and component equations. Be sure to include the endif .
Many of the projects in the Examples directory use variables. One example that includes many variable definitions plus conditional statements is NADC_PA.dsn_ in RF_Board/NADC_PA_prj .
Lists of constants, variables, and functions are next.
Pre-Defined Constants
The pre-defined built-in constants available for use in an equation are:
Constant |
Value |
Description |
---|---|---|
e |
2.718 282 ... |
e |
ln10 |
2.302 585 ... |
ln(10) |
c0 |
2.997 924 58 e+08 m/s |
speed of light |
e0 |
8.854 188 ... e-12 F/m |
vacuum permittivity (1/(u0*c0*c0) |
u0 |
1.256 637 ... e-06 H/m |
vacuum permeability (4*pi*1e-7) |
boltzmann |
1.380 658 e-23 J/K |
Boltzmann's constant |
qelectron |
1.602 177 33 e-19 C |
charge of an electron |
planck |
6.626 075 5 e-34 J*s |
Planck's constant |
pi |
3.141 593 ... |
pi |
Pre-Defined Variables
The pre-defined, built-in variables for use in an equation are:
Variable |
Default Value |
Description |
---|---|---|
time |
0 s |
analysis time |
timestep |
1 s |
analysis time step |
freq |
1 e+006 Hz |
analysis frequency for linear and multi-tone simulations such as Harmonic Balance and Circuit Envelope |
temp |
25 C |
analysis temperature; set by Options Temp |
tnom |
25 C |
default nominal temperature for models; set by Options Tnom |
_freq1 through _freq12 |
1 e+0006 Hz |
fundamental frequencies defined for multi-tone simulations such as Harmonic Balance and Circuit Envelope |
Pre-Defined Functions
Function arguments have the following designations.
Complex |
Real |
Strings |
---|---|---|
x, y |
r, r0, r1, rx, ry, lower_bound, upper_bound |
s, s1, s2 |
In general, the functions return a complex number, unless it is a string operator as noted. A function that returns a real value effectively has a zero value imaginary term.
Function | Description |
---|---|
cos(x) | cosine function, x is in radians |
cot(x) | cotangent function, x is in radians |
conj(x) | complex-conjugate function |
cosh(x) | hyperbolic cosine function |
coth(x) | hyperbolic cotangent function |
exp(x) | exponential function |
imag(x) | imaginary-part function |
log(x) | log base 10 function |
ln(x) | natural log function |
mag(x) | magnitude function |
phase(x) | phase (in degrees) function |
phasedeg(x) | phase (in degrees) function |
phaserad(x) | phase (in radians) function |
real(x) | real-part function |
sin(x) | sine function, x is in radians |
sinh(x) | hyperbolic sine function |
sqrt(x) | square root function |
tan(x) | tangent function, x is in radians |
tanh(x) | hyperbolic tangent function |
abs(rx) | absolute value function |
arcsinh(rx) | arcsinh function |
arctan(rx) | arctan function, returns radians |
atan2(rx, ry) | arctangent function (two real arguments), returns radians |
complex(rx, ry) | real-to-complex conversion function |
db(rx) | decibel function, 20 log10(x) |
dbpolar(rx, ry) | (dB,angle)-to-rectangular conversion function, rx=mag in dB, ry=angle, degrees |
dbmtow(rx) | convert dBm to watts |
deg(rx) | radian-to-degree conversion function |
int(rx) | convert-to-integer function |
jn(r0, r1) | bessel function |
max(rx, ry) | maximum function |
min(rx, ry) | minimum function |
polar(rx, ry) | polar-to-rectangular conversion function, rx=magnitude, ry=angle, degrees |
rad(rx) | degree-to-radian conversion function |
sgn(rx) | signum function |
sinc(rx) | sin(x)/x function |
sprintf(...) | formatted print utility; returns a string |
example:
x = 2 y = 14 z = sprintf( "%i.%i", x, y) results in the string "2.14" sprintf follows standard C programming syntax |
|
strcat(...) | string concatenation utility; returns a string |
example:
s1 = "my cat" s2 = " is frisky" s3 = strcat( s1, s2) results in the string "my cat is frisky" |
The Effect of Expressions on Units
Due to the way that the simulator processes expressions, the following expression is considered valid by the ADS simulator: F = 1.0 M M. This value is interpreted by the simulator as: F = 1.0 * 1.0e6 * 1.0e6. This situation can occur when a variable is defined with units and the variable is then used as a component parameter that also has a units field. Although valid, such an expression usually does not specify the intended value.
The behavior of the Edit Component Parameters dialog is designed so that a parameter value, initially specified as a number followed by a scale factor, is changed to a non-numeric value, and the scale factor setting is automatically set to None . This scale factor setting can be changed manually, if desired.
Applying Measurements
Measurements are pre-defined expressions that make it easy to make common calculations such as VSWR or signal-to-noise ratio. Measurements are available from the simulation palettes and have two purposes:
- They can be used on the schematic, in conjunction with simulations, to process the results of a simulation.
- They can be used in Data Display equations to process the results of a simulation and display various relationships graphically.
To create your own measurement, use the MeasEqn component. For details about measurements, refer to Simulator Expressions and Measurement Expressions documentation.
To add a measurement to a schematic:
- Select a measurement from the simulation palette and place it on the schematic.
- You can modify the measurement to customize it or change the name. Click the Help button in the dialog box for details about the measurement.
- You can select the measurement for output for a specific analysis. This has the effect of restricting evaluation to that analysis only (if more exist), as well as saving the result after each analysis iteration (e.g. each time point, or frequency point), instead of after all iterations, thus using less memory for intermediary data.
To view the results after running the simulation:
- Open a Data Display window and select a plot and place it in the window.
- The name of the measurement will appear in the list of variables. Select it to add it to the plot and click OK.
Measurements can also be used in Data Display equations to perform additional processing after a simulation. For information on how to use measurements in Data Display equations, see Data Display.
Quantities Measurements Can Reference
Measurements can reference:
- Any simulation outputs (voltages, currents, S-parameters) from the current circuit level and levels below using full hierarchical names (refer to Simulation Output Names).
- Other measurements and variable equations. Measurement equations and variable equations follow the same nested scoping rules: measurement equations can reference other measurement and variable equations at the current or higher levels. Note that measurement and variable equations cannot share the same name (see Naming Conventions).
- Existing data in datasets produced by previous simulations or imported via the Data File Tool. The full circuit path of the saved simulation output is always required. Using the same syntax used for data displays to reference an existing dataset entry, preface the measurement name with the dataset name.
Example
MeasEqn1 = Vout |
accesses node Vout in the current circuit |
---|---|
MeasEqn2 = saved_dataset.DC1.DC.Vout |
accesses node Vout , generated by analysis DC1 in the dataset saved_dataset.ds |
Simulation Output Names
To successfully use measurement equations, you must understand the full names associated with simulation outputs. Each simulation output has a unique name. A measurement may refer to such an output by using its unique name, or a condensed version of it. The full unique name of a simulation output is described in the following illustration.
where:
- analysis_path is a concatenated string of the full circuit names of all the simulations driving the analysis. For example, a single top-level DC analysis called DC1 on the design results in the analysis path DC1.DC . If a top-level sweep analysis called Sweep1 drives that DC analysis, then the circuit path is Sweep1.DC1.DC. The .DC suffix is specific to the DC analysis. Major suffixes are as follows:
DC
.DC
AC
.AC
AC noise
.NC
Harmonic Balance, P2D, XDB, Envelope, LSSP
.HB
Harmonic Balance noise
.HB_NOISE
Transient
.TRAN
- circuit_path is the path of the simulation output (node voltage, current, etc.) with respect to the circuit level of the measurement that references it. For example:
MeasEqn1 = Vout
may reference a node voltage Vout at the current level (hence no path), while
MeasEqn2 = X1.Vout
may reference a node voltage Vout in the subcircuit X1 of the current level (hence the circuit path is X1.)
Unlike node voltages and currents, S-, Y-, Z-parameters and the corresponding delays require no circuit path. - name is the name of the simulation output (e.g. Vout for a node voltage, _I_Probe1.i_ for the current through current probe _I_Probe1_ , S for scattering parameters).
The circuit path and the name are required for proper reference. The analysis path is optional, and may be used in the case where a design contains multiple analyses to differentiate between same-name outputs. The analysis path need not be complete. For example, the node voltage Vout generated through the DC analysis DC1 may be referenced by a same-level measurement as follows:
MeasEqn1 = Vout
MeasEqn2 = DC.Vout
MeasEqn3 = DC1.DC.Vout
but not MeasEqn4 = DC1.Vout
The same resolution rules used for a data display apply here to analysis outputs.
Using Simulation Templates
A number of templates are available to facilitate setting up common simulations. Copy these to a directory where you have write permission.
To use a simulation template:
- Choose Insert > Template .
- From the dialog box that appears, select the desired simulation type and click OK . Place the template in the Schematic window and modify it as required.
Simulation Template Descriptions
Template |
Description |
---|---|
BJT_curve_tracer |
This simulation uses a swept current source for the base current and a swept voltage source for the collector voltage, to simulate the DC collector current versus collector-emitter voltage curves of a BJT. |
ConvPulseRespT |
This simulation uses nonlinear, time-domain analysis to simulate the pulse response of a network. The pulse response can be the reflection from a network or transmission line or the transmission of the signal through the network or transmission line. Also, coupling of the pulse signal from one line to another can be simulated. If the circuit contains distributed elements, then convolution will be used during the simulation. The reflected and transmitted signals may be shown. |
ConvStepRespT |
This simulation uses nonlinear, time-domain analysis to simulate the step response of a network. The step response can be the reflection from a network or transmission line or the transmission of the signal through the network or transmission line. Also, coupling of the step signal from one line to another can be simulated. If the circuit contains distributed elements, then convolution will be used during the simulation. The reflected and transmitted signals may be shown. |
DC_BJT_T |
This generates the same I-V curves as the BJT_curve_tracer, except that the sources and simulation controllers are packaged up into a subcircuit. |
DC_FET_T |
This generates the same I-V curves as the FET_curve_tracer, except that the sources and simulation controllers are packaged up into a subcircuit. |
FET_curve_tracer |
This uses swept voltage sources for the gate and drain voltages, to simulate the DC drain current versus drain-source voltage curves of a FET. |
HB1Tone |
This simulation generates the output power, power gain, harmonic distortion, and the output spectrum, when the test signal is a sinusoid at one power and frequency. |
HB1ToneSwptFreq |
This simulation generates the frequency-dependent output power, power gain, harmonic distortion, and the output spectrum, when the test signal is a sinusoid at one power and is swept over frequency. |
HB1ToneSwptPwr |
This simulation generates the output power, power gain, harmonic distortion, output spectrum, and gain compression, when the test signal is a swept-power sinusoid at one frequency. |
HB2Tone |
This simulation generates the output power, power gain, output spectrum, and third- and fifth-order intermodulation distortion points (input- and output-referred) when the test signals are two sinusoids of the same power. |
HB2ToneSwptPwr |
This simulation generates the output power, power gain, output spectrum, and third- and fifth-order intermodulation distortion points (input- and output-referred), as well as the intermodulation distortion levels when the test signals are two sinusoids and their power is swept. |
LinearPulseRespT |
This simulation uses linear, swept-frequency AC analysis to simulate the time-domain pulse response of a network. The pulse response can be the reflection from a network or transmission line or the transmission of the signal through the network or transmission line. Also, coupling of the pulse signal from one line to another can be simulated. The reflected and transmitted signals may be shown. |
LinearStepRespT |
This simulation uses linear, swept-frequency AC analysis to simulate the time-domain step response of a network. The step response can be the reflection from a network or transmission line or the transmission of the signal through the network or transmission line. Also, coupling of the step signal from one line to another can be simulated. The reflected and transmitted signals may be shown. |
MixConvGainNF |
This simulates the conversion gain and noise figure of a mixer. |
MixTOI |
This simulates the output spectrum, output power, conversion gain, and third-order intercept points of a mixer. |
S_Params |
This simulates the S-parameters of any two-port network, and generates Smith chart plots for S11 and S22, and polar plots for S21 and S12. The Smith charts include a circle of constant VSWR, whose value you may set. |
S_Params_DC |
This simulates the S-parameters of any two-port network, and generates Smith chart plots for S11 and S22, and polar plots for S21 and S12. The Smith charts include a circle of constant VSWR, whose value you may set. In addition, it generates zoomed plots of S11 and S21, over a reduced frequency range. A DC simulation is also run. |
SP_BJT_T |
This is a two-port vector network analyzer equivalent with biasing for a BJT. It sweeps the base current and collector-emitter voltage, and simulates the S-parameters of the device at each bias point, at one analysis frequency. |
SP_DiffT |
This simulates the S-parameters of any two-port network, but the test ports are ungrounded. This allows the simulation of differential-mode S-parameters. |
SP_FET_T |
This is a two-port vector network analyzer equivalent with biasing for a FET. It sweeps the gate-source and drain-source voltages, and simulates the S-parameters of the device at each bias point, at one analysis frequency. |
SP_NWA_4PortBiasLogT |
This simulates the S-parameters of any four-port network, but plots the data assuming you want to compare two sets of two-port S-parameters. It generates Smith chart plots for S11 and S33, and S22 and S44, and polar plots for S21 and S43, and S34 and S12. The Smith chart plots show circles of constant VSWR. |
SP_NWA_4PortBiasT |
This simulates the S-parameters of any four-port network, but plots the data assuming you want to compare two sets of two-port S-parameters. It generates Smith chart plots for S11 and S33, and S22 and S44, and polar plots for S21 and S43, and S34 and S12. The Smith chart plots show circles of constant VSWR. |
SP_NWA_4PortLogT |
This simulates the S-parameters of any four-port network, but plots the data assuming you want to compare two sets of two-port S-parameters. It generates Smith chart plots for S11 and S33, and S22 and S44, and polar plots for S21 and S43, and S34 and S12. The Smith chart plots show circles of constant VSWR. |
SP_NWA_4PortT |
This simulates the S-parameters of any four-port network, but plots the data assuming you want to compare two sets of two-port S-parameters. It generates Smith chart plots for S11 and S33, and S22 and S44, and polar plots for S21 and S43, and S34 and S12. The Smith chart plots show circles of constant VSWR. |
SP_NWA_LogT |
This simulates the S-parameters of any two-port network, and generates Smith chart plots for S11 and S22, and rectangular plots for dB(S21) and dB(S12). It is identical to the SP_NWA_T template, except that a log frequency sweep is used. |
SP_NWA_T |
This simulates the S-parameters of any two-port network, and generates Smith chart plots for S11 and S22, and rectangular plots for dB(S21) and dB(S12). A two-port vector network analyzer equivalent instrument is used. In addition, it generates zoomed plots of S11 and S21, over a reduced frequency range. Also, plots showing available gain and stability circles may be created. |
Sparams_wNoise |
This simulates the S-parameters and noise figure of any two-port network, and generates Smith chart plots for S11 and S22, and rectangular plots for dB(S21) and dB(S12). The Smith charts include a circle of constant VSWR, whose value you may set. In addition, it generates zoomed plots of S11 and S21, over a reduced frequency range. Also, plots showing available gain, noise figure, and stability circles are created. |
S_ParamsLargeSignal |
This simulates the S-parameters of any two-port network, as a function of frequency, and input signal power. The S-parameters are computed as the ratios of the incident and reflected waves at the fundamental frequency. The Rollett stability factor, K and the group delay are also computed from the S-parameters. This template is particularly useful for computing the output reflection coefficient of a device when it is being driven by a large input signal. Note that this template does not use a LSSP simulation controller. Instead it uses harmonic balance combined with small-signal mixer mode. |
Using Simulation Instrument Components
Simulation instrument components provide a method for symbolically connecting your circuit to an instrument. You connect your design to components that represent various instruments and run the simulation.
The instruments are set up as curve tracers, TDRs, and network analyzers. There are two or more of each type of instrument-each one is designed for a particular simulation or measurement. They are located on the Component Palette, under Simulation-Instrument. For details on each component, see Simulation Instruments.
To use a simulation instrument:
- Create your design.
- From the Component Palette, choose Simulation-Instrument . Select the appropriate instrument and place it on your schematic.
- Connect the ports of your design to the instrument connectors.
- Set the instrument parameters.
- Run the simulation.