Contents
Preface
Licensing for Spectre
Using License Queuing
Suspending and Resuming Licenses
Related Documents for Spectre
Third Party Tools
Typographic and Syntax Conventions
References
Introducing the Virtuoso Spectre Circuit Simulator
Spectre Turbo and RC Reduction
Spectre Turbo
Parasitic Reduction
Improvements over SPICE
Improved Capacity
Improved Accuracy
Improved Speed
Improved Reliability
Improved Models
Spectre Usability Features and Customer Service
Analog HDL
RF Capabilities
Mixed-Signal Simulation
Environments
Getting Started with the Virtuoso Spectre Circuit Simulator
Using the Example and Displaying Results
Sample Schematic
Sample Netlist
Elements of a Spectre Netlist
Instructions for a Spectre Simulation Run
Following Simulation Progress
Screen Printout
Viewing Your Output
Starting WaveScan
Plotting Signals
Changing the Trace Color
Learning More about ViVA
SPICE Compatibility
Support for SPICE Netlists
Spectre Netlists
Netlist Statements
Netlist Conventions
Basic Syntax Rules
Spectre Language Modes
Creating Component and Node Names
Escaping Special Characters in Names
Duplicate Specification of Parameters
Instance Statements
Formatting the Instance Statement
Examples of Instance Statements
Basic Instance Statement Rules
Identical Components or Subcircuits in Parallel
Analysis Statements
Basic Formatting of Analysis Statements
Examples of Analysis Statements
Basic Analysis Rules
Control Statements
Formatting the Control Statement
Examples of Control Statements
Model Statements
Formatting the model Statement
Creating a Model Alias
Examples of model Statements
Basic model Statement Rules
Input Data from Multiple Files
Syntax for Including Files
Formatting the include Statement
Rules for Using the include Statement
Example of include Statement Use
Reading Piecewise Linear (PWL) Vector Values from a File
Using Library Statements
Multidisciplinary Modeling
Setting Tolerances with the quantity Statement
Inherited Connections
Parameter Specification and Modeling Features
Instance (Component or Analysis) Parameters
Types of Parameter Values
Parameter Dimension
Parameter Ranges
Help on Parameters
Scaling Numerical Literals
Parameters Statement
Circuit and Subcircuit Parameters
Parameter Declaration
Parameter Inheritance
Parameter Referencing
Altering/Sweeping Parameters
Expressions
Behavioral Expressions
Built-in Constants
User-Defined Functions
Predefined Netlist Parameters
Subcircuits
Formatting Subcircuit Definitions
A Subcircuit Definition Example
Subcircuit Example
Rules to Remember
Calling Subcircuits
Modifying Subcircuit Parameter Values
Checking for Invalid Parameter Values
Inline Subcircuits
Modeling Parasitics
Parameterized Models
Inline Subcircuits Containing Only Inline model Statements
Process Modeling Using Inline Subcircuits
Binning
Auto Model Selection
Conditional Instances
Scaling Physical Dimensions of Components and Device Model Technology
Multi-Technology Simulation
Modeling for Signal Integrity
N-Port Modeling
N-Port Example
Creating an S-Parameter File Automatically
Creating an S, Y, or Z-Parameter File Manually
Reading the S, Y or Z-Parameter File
Improving the Modeling Capability of the N-Port
S-Parameter File Format Translator
Standard Scattering Parameter Modeling and Mixed-Mode Scattering Parameter Modeling
Transmission Line Modeling
Constant RLGC Matrices
Frequency-Dependent RLGC Data
2-D Field Solver Geometry and Material Information
S-Parameter Data
TLINE Parameters
Input/Output Buffer Modeling Using IBIS
IBIS Translator Model
Example of an IBIS Component Subcircuit
Analyses
Types of Analyses
Analysis Parameters
Probes in Analyses
Multiple Analyses
Multiple Analyses in a Subcircuit
Example
DC Analysis
Selecting a Continuation Method
AC Analysis
Transient Analysis
Sweeping Parameters During Transient Analysis
Balancing Accuracy and Speed
The errpreset Parameter
Setting the Integration Method
Improving Transient Analysis Convergence
Controlling the Amount of Output Data
Calculating Transient Noise
Performing Small-Signal Analyses during a Transient Analysis
Pole Zero Analysis
Syntax
Example 1
Example 2
Example 3
Example 4
Output Log File
Other Analyses (sens, fourier, dcmatch, and stb)
Sensitivity Analysis
Fourier Analysis
DC Match Analysis
Stability Analysis
Advanced Analyses (sweep and montecarlo)
Sweep Analysis
Monte Carlo Analysis
Special Analysis (Hot-Electron Degradation)
Hot-Electron Degradation Analysis
Output Options for Hot-Electron Degradation Analysis
Example of Hot-Electron Degradation
Control Statements
The alter and altergroup Statements
Changing Parameter Values for Components
Changing Parameter Values for Models
Further Examples of Changing Component Parameter Values
Changing Parameter Values for Circuits
The assert Statement
The check Statement
The checklimit Statement
Examples
The ic and nodeset Statements
Setting Initial Conditions for All Transient Analyses
Supplying Solution Estimates to Increase Speed
Specifying State Information for Individual Analyses
The info Statement
Specifying the Parameters You Want to Save
Specifying the Output Destination
Examples of the info Statement
Printing the Node Capacitance Table
The options Statement
options Statement Format
options Statement Example
Setting Tolerances
Additional options Statement Settings You Might Need to Adjust
The paramset Statement
The save Statement
Saving Signals for Individual Nodes and Components
Saving Groups of Signals
Using Wildcards in the Save Statement
The print Statement
Examples
The set Statement
The shell Statement
The statistics Statement
Specifying Output Options
Signals as Output
Saving all AHDL Variables
Listing Parameter Values as Output
Specifying the Parameters You Want to Save
Specifying the Output Destination
Examples of the info Statement
Preparing Output for Viewing
Output Formats Supported by the Spectre Simulator
Defining Output File Formats
Accessing Output Files
How the Spectre Simulator Creates Names for Output Directories and Files
Filenames for SPICE Input Files
Specifying Your Own Names for Directories
Running a Simulation
Running Spectre in 64-Bit
Starting Simulations
Specifying Simulation Options
Using License Queuing
Suspending and Resuming Licenses
Determining Whether a Simulation Was Successful
Checking Simulation Status
Interrupting a Simulation
Recovering from Transient Analysis Terminations
Creating Saved State Files
Creating checkpoint Files
Creating Recovery Files from the Command Line
Setting Recovery File Specifications for a Single Analysis
Restarting a Transient Analysis
Output Directory after Recovery
Controlling Command Line Defaults
Examining the Spectre Simulator Defaults
Setting Your Own Defaults
References for Additional Information about Specific Defaults
Overriding Defaults
Encryption
Encrypting a Netlist
What You can Encrypt
Encrypted Information During Simulation
Protected Device
Protected Node
Protected Global and Netlist Parameters
Protected Subcircuit Parameters
Protected Model Parameters
Multiple Name Spaces
Time-Saving Techniques
Specifying Efficient Starting Points
Reducing the Number of Simulation Runs
Adjusting Speed and Accuracy
Saving Time by Starting Analyses from Previous Solutions
Saving Time by Specifying State Information
Setting Initial Conditions for All Transient Analyses
Supplying Solution Estimates to Increase Speed
Specifying State Information for Individual Analyses
Saving Time by Modifying Parameters during a Simulation
Changing Circuit or Component Parameter Values
Modifying Initial Settings of the State of the Simulator
Saving Time by Selecting a Continuation Method
Managing Files
About Virtuoso Spectre Filename Specification
Creating Filenames That Help You Manage Data
Creating Filenames by Modifying Input Filenames
Description of Spectre Predefined Percent Codes
Customizing Percent Codes
Creating Filenames from Parts of Input Filenames
Identifying Problems and Troubleshooting
Error Conditions
Invalid Parameter Values That Terminate the Program
Singular Matrices
Internal Error Messages
Time Is Not Strictly Increasing
Spectre Warning Messages
P-N Junction Warning Messages
Tolerances Might Be Set Too Tight
Parameter Is Unusually Large or Small
gmin Is Large Enough to Noticeably Affect the DC Solution
Minimum Timestep Used
Syntax Errors
Topology Messages
Model Parameter Values Clamped
Invalid Parameter Warnings
Redefine Primitives Messages
Initial Condition Messages
Output Messages
Customizing Error and Warning Messages
Selecting Limits for Parameter Value Warning Messages
Selecting Limits for Operating Region Warnings
Range Checking on Subcircuit Parameters
Formatting the paramtest Component
Controlling Program-Generated Messages
Specifying Log File Options
Correcting Convergence Problems
Correcting DC Convergence Problems
Correcting Transient Analysis Convergence Problems
Correcting Accuracy Problems
Suggestions for Improving DC Analysis Accuracy
Suggestions for Improving Transient Analysis Accuracy
Example Circuits
Notes on the BSIM3v3 Model
Spectre Syntax
SPICE BSIM 3v3 Model
Spectre BSIM 3v3 Model
Ring Oscillator Spectre Deck for Inverter Ring with No Fanouts (inverter_ring.sp)
Ring Oscillator Spectre Deck for Two-Input NAND Ring with No Fanouts (nand2_ring.sp)
Ring Oscillator Spectre Deck for Three-Input NAND Ring with No Fanouts (nand3_ring.sp)
Ring Oscillator Spectre Deck for Two-Input NOR Ring with No Fanouts (nor2_ring.sp)
Ring Oscillator Spectre Deck for Three-Input NOR Ring with No Fanouts (nor3_ring.sp)
Opamp Circuit (opamp.cir)
Opamp Circuit 2 (opamp1.cir)
Original Open-Loop Opamp (openloop.sp)
Modified Open-Loop Opamp (openloop1.sp)
Example Model Directory (q35d4h5.modsp)
Using Compiled-Model Interface
Installing Compiled-Model Interface (CMI)
Configuration File
Configuration File Format
Precedence for the CMI Configuration File
Configuration File Example
CMI Versioning
Netlist Compiled Functions (NCF)
Loading a Plug-in
Using a NCF in a Spectre Netlist
Creating a Plug-in
Installing a NCF
Modifing the Default Behavior of a NCF
ncfSetNumArgs( ncfHandle_t, int, int )
ncfSetDLLFunctionV1( ncfHandle_t, ncfFunctionV1Ptr_t )
Attaching Arbitrary Data to a NCF
Index