Product Documentation
Spectre Classic Simulator, Spectre APS, Spectre X, Spectre XPS, Spectre FMC Analysis, and Legato Reliability Solution User Guide
Product Version 23.1, September 2023


Contents

Preface

Licensing

License Requirement for Spectre FMC
Legato Reliability Solution License
License Checkout Order
Using License Queuing
Suspending and Resuming Licenses

Related Documents for Spectre

Third Party Tools

Typographic and Syntax Conventions

References

1

Introducing the Spectre Circuit Simulator

Spectre Usability Features and Customer Service

Variation Analysis

Supported Features

Analog HDL

AHDL Linter

RF Capabilities

2

Getting Started with the 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 Virtuoso Visualization and Analysis XL
Plotting Signals
Changing the Trace Color
Learning More about Virtuoso Visualization and Analysis XL

3

The Spectre APS Circuit Simulator

Starting Spectre APS Simulations

Getting More Performance from Spectre APS Simulation

Specifying Multithreading Options

Simulation Diagnostics

Spectre Mixed-Signal Design Simulation

Starting an Spectre MS Simulation Run
Adjusting MS Speed and Accuracy
Digital Partitioning and Virtual Power Nodes
Spectre MS DC Operating Point Calculation
Spectre MS Current Accuracy
Handling Macro Device Models
Spectre MS Postlayout Simulation
Spectre MS Partitioning Report

4

The Spectre XPS Circuit Simulator

Starting Spectre XPS Simulation Run

Reviewing the Log File

Spectre XPS cktpreset Mode Information
File Reading and Parsing Related Information
Output and IC/Nodeset Related Information
Options to Control Warning/Error Messages in Spectre XPS
Transient Simulation Information

Output Files

Using the Command-Line Option -outdir
Using the Command-Line Option -outname

Multithreading Support

Spectre XPS Options

Options Related to Circuit Partitioning
Options Related to RC
Options Related to Models
Option Related to SRAM Bitcell
Options to Control Error Tolerance
Option to Report DC Non-Convergence
Options to Control Waveform and Output

Post-layout simulation

Spectre XPS SRAM Simulation

XPS SRAM Timing Simulation
XPS SRAM Power Simulation
XPS SRAM Postlayout Simulation
XPS SRAM Leakage Current Simulation
Handling SRAM Designs at Advanced Technology Nodes

Spectre XPS DRAM Simulation

Spectre XPS DRAM Postlayout Simulation
Starting an XPS DRAM Simulation Run
Overall Accuracy/Performance Tuning Strategy in Spectre XPS
High Accuracy Mode
Function Verification Mode
Accuracy for Analog Block in DRAM Simulation

Spectre XPS Flash Simulation

Adjusting Speed and Accuracy of Spectre XPS Flash Memory Simulation
Starting a Spectre XPS Flash Memory Simulation
Flash Memory Postlayout Simulation

5

The Spectre X Circuit Simulator

License Requirements for Spectre X

Using the Spectre X +preset Option

Dynamically Changing Parameters in Spectre X

Migrating from Spectre APS

Using the Spectre X +xdp Option

Using GPU with Spectre X

License Requirements for GPU
Use Model

6

Spectre FMC Analysis

Technology and Overview
Use Model and Applications
Setup to Enhance the Performance of a Fast Monte Carlo Simulation
Post-Process Fast Monte Carlo Data

7

SPICE Compatibility

Support for SPICE Netlists

Simulation Flow Compatible Options

Options to Specify the Output Format
Options to Specify the Hierarchy Delimiter
Options to Control Duplicated Subcircuits, Measures, Instances, and Parameters
Option to not Save the Waveform
Option to Enable or Disable the Safe Operation Area (SOA) Check

PSpice Netlist and Device Model Support

8

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
Creating an alias for a Subcircuit
Examples of model Statements
Using analogmodel for Model Passing (analogmodel)
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

Structural Verilog

Multidisciplinary Modeling

Setting Tolerances with the quantity Statement

Inherited Connections

9

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
Enabling/Disabling Noise in Subcircuits
Conditional Subcircuits

Inline Subcircuits

Modeling Parasitics
Parameterized Models
Inline Subcircuits Containing Only Inline model Statements
Process Modeling Using Inline Subcircuits

Component Model

Binning

Auto Model Selection
Conditional Instances

Scaling Physical Dimensions of Components and Device Model Technology

Multi-Technology Simulation

Specifying cmin

10

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

11

Analyses

Types of Analyses

Analysis Parameters

Specifying Parameter Defaults in a File

Probes in Analyses

Multiple Analyses

Multiple Analyses in a Subcircuit

Example

DC Analysis

Selecting a Continuation Method
Enabling Fast DC Simulation

AC Analysis

S-Parameter 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
Performing DCMatch Analysis during a Transient Analysis
Generating EMIR Output During Transient Analysis
Performing Event-Triggered Analysis During Transient Analysis

Fault Analysis

Analog Test Overview
Application of Fault Analysis
Fault Analysis Technology
Fault List
Creating a Fault List
Layout-Based Fault Generation
Use Model of faultlayer
Use Model Examples of a Layout-Based Fault Simulation
Fault Universe Details Saved from Fault Generation

Fault Generation Based on Circuit Activity Analysis

Fault Generation for Design Hierarchy Extraction
Fault Selection and Sampling
Weighted Random Sampling
Uniform Random Sampling
Weighted Sorted Sampling
Confidence Interval Sampling
Benchmark Test of Fault Sampling, Simulation, and Confidence Interval Estimation
Defect Detection Using Weighted Likelihood
Fault Sampling Output and Confidence Interval Calculation
Applying Fault Weighting and Sampling in Fault Simulation
Assert Checking
Enabling Asserts for Fault Simulation
Verilog-A Asserts
Defining Fault Times
Specifying Event-Triggered Fault Times
Stopping Fault Simulation Automatically
Files Generated for Fault Simulation
Fault Table File
Assert Violation Database

Spectre Direct Fault Analysis

Spectre Transient Fault Analysis
spectre_ddmrpt Command-Line Options
spectre_fsrpt Command-Line Options

Pole Zero Analysis

Syntax
Example 1
Example 2
Example 3
Example 4
Output Log File

Loopfinder Analysis

Syntax
Output of the Loopfinder Analysis

Other Analyses (sens, fourier, dcmatch, and stb)

Sensitivity Analysis
Fourier Analysis
DC Match Analysis
ACMatch Analysis
Stability Analysis

Sweep Analysis

Monte Carlo Analysis

Spectre Reliability Analysis

Reliability Simulation Block
Reliability Analysis with Spectre X Distributed Simulation
Reliability Control Statements Reference
accuracy ( *relxpert: .accuracy )
age ( *relxpert: .age )
agelevel_only ( *relxpert: .agelevel_only )
aging_analysis_name
check_neg_aging (*relxpert: .check_neg_aging)
degradation_check (*relxpert: .degradation_check)
degradation_check_exception (*relxpert: .degradation_check_exception)
degradation_check_output (*relxpert: .degradation_check_output)
degsort (*relxpert: .degsort)
deg_ratio (*relxpert: .deg_ratio)
deltad ( *relxpert: .deltad )
dumpagemodel (*relxpert: .dumpagemodel)
enable_bias_runaway (*relxpert .enable_bias_runaway)
enable_negative_age (*relxpert .enable_negative_age)
enable_tmi_uri
gradual_aging_agepoint (*relxpert: .agepoint)
gradual_aging_agestep (*relxpert: .agestep)
idmethod ( *relxpert: .idmethod )
igatemethod (*relxpert: .igatemethod)
isubmethod (*relxpert: .isubmethod)
macrodevice (*relxpert: .macrodevice)
maskdev ( *relxpert: .maskdev )
minage ( *relxpert: .minage )
opmethod (*relxpert: .opmethod )
output_inst_param (*relxpert: .output_inst_param)
output_she_power (*relxpert: .output_she_power)
reset_analysis_param
output_device_degrad ( *relxpert: .output_device_degrad )
output_subckt_degrad
preset (*relxpert: .preset)
rel_mode (*relxpert: .rel_mode)
relx_tran ( *relxpert: .relx_tran )
report_model_param (*relxpert: .report_model_param )
simmode
tmi_aging_mode (*relxpert: .tmi_aging_mode)
tmi_she_mindtemp (*relxpert: .tmi_she_mindtemp)
uri_lib ( *relxpert: .uri_lib )
vdsmethod
Aging Monte Carlo Analysis
User-Defined Reliability Models
Measuring the Reliability Analysis

Thermal Nodes

External Thermal Node
Internal Thermal Node

SpectreThermal Analysis

Spectre Thermal Analysis Technology, Product, and Flow Overview
Thermal Control Files
Trench Structure Support
Cauer and Foster Model Support in Package File
Getting Started with Spectre Thermal Analysis
Generating the Thermal Analysis Database and Plotting the Results

12

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 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
Printing the Capacitance Values of Nets
Printing the Terminal Capacitance Values of MOSFETs

The options Statement

options Statement Format
options Statement Example
Performing Parasitic Reduction
Setting Tolerances
Specifying Hierarchical Delimiters
Additional options Statement Settings You Might Need to Adjust
Simulation Config file Support
Computing the Constant Current
Computing the Drain Saturation Voltage Based on Output Conductance

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

13

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

14

Running a Simulation

Running Spectre in 64-Bit

Starting Simulations

Specifying Simulation Options
Using License Queuing
Suspending a Simulation Automatically When Disk Space is Low
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

15

AHDL Linter Checks

About the AHDL Linter Feature

Using the AHDL Linter Feature

Identifying AHDL Linter Messages

Static AHDL Linter Message
Dynamic AHDL Linter Message

Filtering AHDL Linter Messages

Using the ahdlhelp Utility

16

Device and Circuit Checks

Device Checks

The assert Statement
The check Statement
The checklimit Statement
Global Options

Circuit Checks

Circuit Check Scoping
Specifying the Output Format for the Checker Violation Report
Circuit Check SpiceVision PRO Integration
MonteCarlo Sweep and Alter Support in Dynamic Checks
Changing Default Value of Parameters
Circuit Check Syntax
Dynamic Checks
Static Checks
Static Stack Count
Workshop

17

Postlayout Simulation

Performance Improvement

EMIR Analysis

Spectre EMIR Technology, Product, and Flow Overview
Getting Started with Spectre EMIR Analysis
Establishing an Accuracy Reference and Correlating EMIR Accuracy
Optimizing EMIR Analysis for Accuracy and Performance
Power Gate Support
Handling the Complexity of DSPF/SPEF files
Advanced Analyses
Advanced EMIR Features
Event Triggered EMIR Analysis
Other Features

Spectre EMIR Analysis Using Voltus-XFi

Simplified Use Model for the Iteration Method
Enhanced Distribution of EMIR Analysis

Parasitic Backannotation of DSPF/SPEF/DPF Files

Postlayout Simulation Methodologies
Parasitic Backannotation - Concept
Control Options for Parasitic Backannotation Flow
Parasitic Backannotation Report
Some Common Error and Warning Messages Related to Parasitic Backannotation

18

Encryption

New key for 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
Displaying Messages Generated From an Encrypted Block

19

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

20

Managing Files

About 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

21

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
Log File 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

Packaging a Test Case for Shipment to Cadence

Example

A

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)

B

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

Checking the CMI Shared Library

C

Netlist Compiled Functions (NCF)

Loading a Plug-in

Using a NCF in a Spectre Netlist

Creating a Plug-in

Installing a NCF

Modifying the Default Behavior of a NCF

ncfSetNumArgs( ncfHandle_t, int, int )
ncfSetDLLFunctionV1( ncfHandle_t, ncfFunctionV1Ptr_t )

Attaching Arbitrary Data to a NCF

D

Digital Vector File Format

General Definition

Options for Digital Vector

vector_chk_zstate
vector_chk_xstate

Vector Patterns

radix
sig_type
io
vname
hier
tunit
chk_ignore
chk_window
enable
period
mask

Signal Characteristics

Timing
idelay
odelay
tdelay
slope
tfall
trise
Voltage Threshold
vih
vil
voh
vol
avoh
avol
vref
vth
Driving Ability
hlz
outz
triz

Tabular Data

Absolute Time Mode
Period Time Mode
Valid Values

Vector Signal States

Input
Output

Example of a Digital Vector File

Frequently Asked Questions

Can I replace the bidirectional signal with an input and output vector?
How do I verify the input stimuli?
How do I verify the vector check?

E

Verilog Value Change Dump Stimuli

Processing the Value Change Dump File

VCD Commands

VCD File Format
Definition Commands
$date
$enddefinitions
$scope
$timescale
$upscope
$var
$version
Data Commands
data
time_value

Signal Information File

Signal Information File Format
Signal Matches
.alias
.scope
.in
.out
.bi
.chk_ignore
.chkwindow
Signal Timing
.idelay
.odelay
.tdelay
.tfall
.trise
Voltage Threshold
.vih
.vil
.voh
.vol
Driving Ability
.outz
.triz
Hierarchical Signal Name Mapping

Enhanced VCD Commands

Signal Strength Levels
Value Change Data Syntax
Port Direction and Value Mapping
Enhanced VCD Format Example

Frequently Asked Questions

Is it necessary to modify the VCD/EVCD file to match the signals?
How can I verify the input stimuli?
How do I verify the output vector check?
Why should I use hierarchical signal name mapping?
What is the difference between CPU and user time?

Return to top
 ⠀
X