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

4


The Spectre XPS Circuit Simulator

Spectre® eXtensive Partitioning Simulator (Spectre XPS) is the next generation transistor-level circuit simulator of Cadence that provides high simulation performance and large simulation capacity. It addresses the design and verification needs of full-chip low-power designs at advanced process nodes. In addition, it incorporates a completely new circuit partitioning and multirate technology, and provides reasonable accuracy for timing and power to meet the tighter design margins.

This chapter discusses the following topics:

Starting Spectre XPS Simulation Run

Most of the command-line options that are used to run Spectre XPS simulation are the same as Spectre and Spectre APS.

To start a Spectre XPS simulation run, type the following at the command line:

spectre +xps +cktpreset=dram -64 -f fsdb +spice +mt=N -outdir run1 -outname xps_out top.sp

The following table lists the command-line options and their descriptions:

Option Description

+xps

Enables the Spectre XPS simulator. The default simulator is Spectre baseline.

+cktpreset=dram

Specifies the Spectre XPS preset for DRAM simulation. The other presets include pcram, sram, and flash.

-64

Enables the 64-bit version of Spectre, which is required to run the simulation with memory greater than 4GB.

-f fsdb

Generates the waveform file in fsdb format.

+mt=N

Specifies the number of cores for multithreading. The default is a single thread.

+spice

Ensures that the netlist convention and device models are interpreted consistently as traditional SPICE, instead of Spectre.

-outdir run1

Defines the output directory for the simulation results and the simulation log file.

-outname xps_out

Defines the names of output files, including log file, waveform, and measure. The default name is the name of the top-level netlist file. If this option is specified, waveforms are saved in the output directory instead of the raw directory.

top.sp

Specifies the top-level netlist for simulation.

You can also get more information about command options, components, analyses, controls, and other selected topics by using the spectre -h command to access the Spectre online help.

Reviewing the Log File

Spectre XPS shares the same format for the output log file as Spectre and Spectre APS. The log file provides important information about the Spectre XPS simulation run. Therefore, it is recommended to review the log file after starting the simulation.

The output log file displays the following information:

The following sections discuss some of the important information stored in the log file and the options to control the log file in detail.

Spectre XPS cktpreset Mode Information

In the Spectre XPS log file, the following message indicates that DRAM mode with multithreading is successfully enabled:

Notice from spectre during initial setup.
XPS Enabled ( cktpreset=dram ).
……
Multithreading Enabled: 8 threads in the system with 20 available processors.

File Reading and Parsing Related Information

The Spectre XPS log file provides information on the files read in a simulation run, as shown below.

Reading file:  /projects/p100/simulation/xps_run/top.sp                                                                                                             
Reading file:  /projects/p100/simulation/xps_run/netlist.cdl                                                                                                                  
Reading file:  /projects/p100/simulation/xps_run//PDK/Spectre/v1.1/16nm_model.scs

Spectre XPS provides an option, print_section, with possible values of no and yes that enables you to print information about the library files read in the simulation, When this option is set to no, only the library file information is printed in the log file. However, when this option is set to yes, detailed sections of the library files read in the simulation are printed in the log file.

For example, if you specify print_section=yes, the log file displays the following information for the same example:

Reading file:  /projects/p100/simulation/xps_run/top.sp                                                                                                             
Reading file:  /projects/p100/simulation/xps_run/netlist.cdl                                                                                                                  
Loading section:  SS from file:  /projects/p100/simulation/xps_run//PDK/Spectre/v1.1/16nm_model.scs                                                       
Loading section:  TT_BIP_DIO from file:  /projects/p100/simulation/xps_run//PDK/Spectre/v1.1/16nm_model.scs                                                       
Loading section:  TT_RES_DISRES from file:  /projects/p100/simulation/xps_run//PDK/Spectre/v1.1/16nm_model.scs 

Output and IC/Nodeset Related Information

Spectre XPS provides useful information in the log file for the signals probed, measured, or set with IC/nodeset, especially with wildcards.

An example of the log file and the messages is given below.

Output statements:
             .probe 4
           .measure 1
               save 0
Design checks inventory:
         dyn_dcpath 2
            dyn_exi 1
Wildcard match summary:
              probe x(XI0.xTOP_0.xIO_SLICE.xio_right.*.vddpe) : 67
              probe i(vv*) depth= 1:     3
              probe i(XI0.*.x_mxmi41.mxppua) : 0
              probe v(*) depth= 5:       3938
                ic *.sao                64
                 ic *.ncored             32768
                 ic *.cored              32768
                 ic *.bl                 0
                 ic *.nbl                0
Output and IC/nodeset summary:
                 probe  4008
                 measure        1
                 ic     65600

Options to Control Warning/Error Messages in Spectre XPS

Messages in the Spectre XPS simulator, like Spectre and Spectre APS, are categorized based on three severity levels: INFO, WARNING, and ERROR. In addition, each message includes a unique alphanumeric message ID enclosed in parentheses.

You can use the following global options to customize the number of messages and their severity based on ID:

Option Description

maxwarns=5

Specifies the maximum number of times a warning message, with the same message ID, is generated per analysis. The default value is 5.

maxwarnstologfile=5

Specifies the maximum number of times a warning message, with the same message ID, is printed to the log file per analysis. The default value is 5.

maxnotestologfile=5

Specifies the maximum number of times an INFO message, with the same message ID, is printed to the log file per analysis. The default value is 5.

Examples

.option maxwarns=1
.option maxwarnstologfile=10

You can use the following options to control the number of messages or change the severity of a message based on ID:

.option warning_id=[SFE-3013] warning_limit=10
.option warning_id=[SPECTRE-17100] warning_change_severity=error    

Transient Simulation Information

Use the parameter annotate in the tran statement to display the status of the transient simulation in the log file. It is recommended to set the value of the annotate parameter to estimated to display detailed information in the log file. For example:

.tran 1n 1u annotate=estimated

The following is an example of the transient simulation information that is displayed in the log file:

transient0: time = 10.15 ns    (10.6 ), step = 735.2 fs     (764 u)
          cpu = 223.4 s, elapsed = 83.7 s, steps = 0, mem = 11770.8 MB
          estimated completion time:  00:11:49
transient0: time = 10.23 ns    (10.6 ), step = 3.639 ps    (3.78 m)
          cpu = 348.9 s, elapsed = 106.4 s, steps = 0, mem = 11771.8 MB
          estimated completion time:  00:14:54
transient0: time = 10.45 ns    (10.9 ), step = 69 ps       (71.7 m)
          cpu = 403.9 s, elapsed = 117.2 s, steps = 0, mem = 11773.2 MB
          estimated completion time:  00:16:01
    transient0: time = 11.5 ns       (12 ), step = 413.6 ps     (430 m)
          cpu = 416.4 s, elapsed = 119.7 s, steps = 0, mem = 11774.0 MB

The above log file contains the following information related to transient simulation:

Output Files

After a simulation completes, Spectre XPS writes the following output files based on the design setup:

Using the Command-Line Option -outdir

You can use the -outdir command-line option to specify the output directory for the simulation files.

The following example demonstrates the location and names of the output files.

 spectre -64 +xps +cktpreset=sram +speed=2 +spice -outdir xps_x4_out top.sp

The following are the file names and their locations:

xps_x4_out/
|-- top.log
|-- top.mt0
|-- top.measure
|-- top.ic0
|-- top.op0
|-- top.raw
    |-- logFile
    |-- transient1.tran.fsdb
    |-- transient1.meas_tran
    |-- top.sqldb
    |-- mmcheck2html.xsl
    |-- traverse.css
    |-- sorttable.js
    |-- top.dynamic.xml
    `-- top.dynamic.rpt

Using the Command-Line Option -outname

You can use the command-line option -outname to change the names of output files and their locations. When you use this option, the waveform files are moved from the raw directory to the specified output directory. The following is the syntax to specify the -outname command-line option:

-outname <out_dir_name>/<new_file_name>

Here, out_dir_name is the name of the output directory and new_file_name is the name of the new file. You can specify either of the two or both the options in a single statement.

Following are some of the examples of using the -outname command-line option.

Example1

 spectre -64 +xps +cktpreset=sram +speed=x4 +spice -outname xps_x4_out/ top.sp

In the above example, the value, xps_sp2_out/, of the command-line option -outname contains a slash (/), which means it is a directory name. Specifying this option will cause the waveform files to move outside the raw directory.

The file names and their locations are changed as follows:

xps_x4_outname/
|-- top.fsdb
|-- top.log
|-- top.measure
|-- top.mt0
|-- top.ic0
|-- top.op0
|-- top.raw
    |-- logFile
    |-- transient1.meas_tran
    |-- mmcheck2html.xsl
    |-- traverse.css
    |-- sorttable.js
    |-- top.sqldb
    |-- top.dynamic.xml
    `-- top.dynamic.rpt

Example2

 spectre -64 +xps +cktpreset=sram +speed=x4 +spice -outname out_newname top.sp

In the above example, only a name is specified with the -outname command-line option. This will cause the file name of the output files to change to the new one and the waveform files to move outside the raw directory. The file names and their locations are changed as follows:

./
|-- new_outname.fsdb
|-- new_outname.log
|-- new_outname.measure
|-- new_outname.mt0
|-- new_outname.ic0
|-- new_outname.op0
|-- top.raw
    |-- logFile
    |-- transient1.meas_tran
    |-- mmcheck2html.xsl
    |-- traverse.css
    |-- sorttable.js
    |-- top.sqldb
    |-- top.dynamic.xml
 `-- top.dynamic.rpt

Example 3:

 spectre -64 +xps +cktpreset=sram +speed=2 +spice -outname xps_x4_out/new_outname top.sp

In the above example, both output directory and output file name are specified with the -outname command-line option. The file names and their locations are changed as follows:

xps_x4_out/ 
|-- new_outname.fsdb
|-- new_outname.log
|-- new_outname.measure
|-- new_outname.mt0
|-- new_outname.ic0
|-- new_outname.op0
|-- top.raw
    |-- logFile
    |-- transient1.meas_tran
    |-- mmcheck2html.xsl
    |-- traverse.css
    |-- sorttable.js
    |-- top.sqldb
    |-- top.dynamic.xml
    `-- top.dynamic.rpt

Multithreading Support

The Spectre XPS technology supports multithreading on multicore computer platforms. The default behavior is to use a single thread for Spectre XPS. You can enable the multithreading feature by using the +mt command-line option of the Spectre binary, as shown below.

 spectre +xps +mt...

To manually specify the number of threads to be used, use the following command:

 spectre +xps +mt=8 ...

When multithreading is enabled, the Spectre XPS log file displays the following information:

Multithreading Enabled: 8 threads in the system with 20 available processors.

To get maximum performance gain from multithreading, it is recommended that the CPU cores for Spectre XPS are within one socket. This is because the CPU cores in one socket have less communication overhead. Spectre XPS automatically selects the CPU cores for optimized performance. You just need to ensure that the number of CPU cores in one socket is greater than the number of specified threads.

The licensing requirement for Spectre XPS multi-threading is the same as Spectre APS.

To get the server information, use the following command:

  spectre +query=sysinfo

The following hardware and OS platform information is generated. The server in this example has two sockets with 14 CPU cores in both.

OS      : Linux 2.6.18-194.el5 x86_64
Linux   : Red Hat Enterprise Linux Client release 5.5 (Tikanga)
Memory  : available 145.8051 GB         physical 405.6638 GB
Swap    : available 94.4486 GB  physical 137.4389 GB
CPU type: Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz
Hyperthreading is disabled
Socket  Proc    Core
 0       0       0      2600.1
         2       1      2600.1
         4       2      2600.1
         6       3      2600.1
         8       4      2600.1
        10       5      2600.1
        12       6      2600.1
        14       8      2600.1
        16       9      2600.1
        18      10      2600.1
        20      11      2600.1
        22      12      2600.1
        24      13      2600.1
        26      14      2600.1
 1       1       0      2600.1
         3       1      2600.1
         5       2      2600.1
         7       3      2600.1
         9       4      2600.1
        11       5      2600.1
        13       6      2600.1
        15       8      2600.1
        17       9      2600.1
        19      10      2600.1
        21      11      2600.1
        23      12      2600.1
        25      13      2600.1
        27      14      2600.1

To benefit from multithreading technology, a circuit should have at least 500 nodes. When a circuit is too small, multithreading is turned off automatically.

Spectre XPS Options

Spectre XPS can be configured to obtain optimized simulation results, performance, accuracy, and waveform file size. The general naming convention for the XPS configuration options is sim_opt_optName, which can be specified with:

Spectre format:

opt1 options sim_opt_optName=optValue {subckt=[subcktName]} 
opt2 options sim_opt_optName=optValue {inst=[instanceName]} 

SPICE format:

.options sim_opt_optName=optValue {subckt=[subcktName]}
.options sim_opt_optName=optValue {inst=[instanceName]}

Options Related to Circuit Partitioning

Spectre XPS supports the following two fundamental technologies for circuit partitions:

Spectre XPS provides good usability with less user interfere on circuit partitions. However, you can use the sim_opt_one_part and sim_opt_analog options to fine-tune it for better accuracy/performance trade-off.

Options Related to RC

For postlayout simulation, RC reduction is one of the fundamental technology. Spectre XPS optimizes RC reduction based on the circuit type. It provides two high-level options, sim_opt_rcr_sram and sim_opt_rcr_dram, for SRAM and DRAM designs.

The following are some other RC-related options to control SRAM and DRAM simulation runs:

Option Type Description

sim_opt_fcapl

Local

Splits the coupling caps smaller than the specified value to ground. The default value is 1e-17 for XPS SRAM speed=2 and 1e-16 for XPS DRAM speed=2.

sim_opt_rmin

Local

Shorts the resistors with value less than the specified value. The default value is 0.01 for SRAM, 0.1 for DRAM, and 1 for others.

sim_opt_rmax

Local

Discards the resistors if the resistance is greater than the specified value. The default value is 1E+07 for SRAM and 9.9E+08 for DRAM.

Options Related to Models

For MOSFETs in postlayout simulation, a model is with Layout Dependent Effect (LDE). As a result, its instance parameters or model parameters may have unique values for each MOSFET instance. Spectre XPS uses two levels of table model to enable sharing between MOSFET instances with good accuracy:

You can use the sim_opt_model option to control the accuracy of the table. This option accepts the following four possible values. The greater the value the more conservative is the table model.

The conservative table model increases memory consumption because denser tables need to be saved. Therefore, it is recommended to use a greater value locally.

The following are some other model-related options that you can use:

Option Type Description

sim_opt_bmodel

Local

Specifies which blocks are behavioral blocks (containing bsources, Verilog-A, and so on) so that Spectre XPS can use specialized algorithms at these blocks to improve convergence. For example:

sim_opt_bmodel=1 subckt=[flash_cell]

sim_opt_tbl_vdd

Local

Specifies the typical voltage scope of the table model building in the circuit. For example, sim_opt_tbl_vdd=1.5.

sim_opt_vpp

Local

Specifies the extended voltage scope of the table model building. It should be set to a possible high voltage of the circuit. For example, sim_opt_vpp=5.

sim_opt_avg_cap

Local

Defines the MOSFET core device capacitance model. A linear model can provide significant performance improvement over a nonlinear model. Since this option may introduce accuracy loss, especially for timing, it is recommended to use it only for designs that are not sensitive to nonlinear device capacitances. Possible values are:

0: Do not use average capacitance. This is the default value.

1: Enable the linear model for MOSFET device capacitance.

4: Enable the linear model with conditions. Devices with big width or length are excluded, but still use nonlinear device capacitances.

Option Related to SRAM Bitcell

To speed up SRAM simulation, especially for function verification, you can use the detect_memcell option to detect the bitcell for better performance. The detect_memcell option accepts the following two values:

Multithreading does not work if you specify detect_memcell=1.

Options to Control Error Tolerance

You can use the following options to control error tolerance:

Option Type Description

sim_opt_step_ratio

Local

If set to a positive value, it scales the error tolerance in XPS FastSPICE mode. The greater the value, the more aggressive is the scaling. It is recommended to set the option between 0.5 and 2 for XPS DRAM and XPS SRAM speed=2 setting. The default value is 1, which means that the option has no effect.

sim_opt_time_unit

Local

Specifies the minimum time steps for Spectre XPS transient simulation. The default value is 1 ps.

Option to Report DC Non-Convergence

You can use the sim_opt_dump_dc_report option, with possible values of 0 (default) and 1, to print the DC non-convergence information. sim_opt_dump_dc_report=1 prints detailed DC non-convergence information to a report file, <netlist>.dcrpt.

The criteria to write DC non-convergence is based on the sum of node currents. Based on Kirchhoff's Current Law (KCL), this current should be zero. If Spectre XPS DC does not converge fully for these nodes, their sum current is not zero. Spectre XPS reports the nodes with current larger than 0.1uA with the number of events (like time steps) in DC.

The following is an example of the <netlist>.dcrpt report with the lines sorted by node current value.

Node

Voltage

Current

#event

Node not converged

x1.net1

1.1

5e-6

18

x1.net1

x1.net2

0.5

1e-7

22

x1.net2

...

Options to Control Waveform and Output

You can use the following global options to control the waveform and output:

Option Type Description

sim_opt_compress_output

Global

If set to 1, compresses the waveform file by eliminating the points close to a straight line. If set to 0, keeps all data points.

sim_opt_compress_abstolv

Global

Specifies the voltage tolerance for waveform compression. The default value is 0.001.

This option must be used with sim_opt_compress_output=1.

sim_opt_compress_abstoli

Global

Specifies the current tolerance for waveform compression. The default value is 1e-8.

This option must be used with sim_opt_compress_output=1.

sim_opt_compress_reltolv

Global

Specifies the relative voltage tolerance for waveform compression. The default value is 0.

This option must be used with sim_opt_compress_output=1.

sim_opt_compress_reltoli

Global

Specifies the relative current tolerance for waveform compression. The default value is 0.

This option must be used with sim_opt_compress_output=1.

sim_opt_cur_wf

Global

If set to 1, outputs the current probes to a separate waveform file. The default value is 0.

Post-layout simulation

Postlayout simulation with parasitic effects is essential for verification of memory designs like SRAM and DRAM, especially for timing accuracy. Like most of the postlayout simulations, two major effects need to be considered:

Spectre XPS effectively addresses the challenges of advanced process nodes. Postlayout simulation is one of them. For more information, refer to Chapter 17, “Postlayout Simulation,”.

Spectre XPS SRAM Simulation

For SRAM simulation, Spectre XPS supports a high performance/capacity FastSPICE mode (+xps) and a high accuracy SPICE mode (+xps=s). Each of these modes can be further optimized for timing simulation (+cktpreset=sram) and power simulation (+cktpreset=sram_pwr). In addition, there is a speed option (+speed) that can be used to trade-off accuracy and performance; speed=1 is the most accurate while speed=5 is the fastest.

The following table summarizes all available settings where indicates the availability of a particular setting:

Speed

(+speed=#)

Spectre XPS FastSpice (+xps)

Spectre XPS Spice (+xps=s)

Timing

(+cktpreset=sram)

Power

(+cktpreset=sram_pwr)

Timing

(+cktpreset=sram)

Power

(+cktpreset=sram_pwr)

1

Obsolete

Obsolete

2

Obsolete

Obsolete

3

Default

Default

4

Obsolete

Obsolete

5

Default

Default

Obsolete

Obsolete

The Spectre XPS use model has been updated for SRAM timing simulation. The updated use model combines the high performance/capacity and high accuracy modes. You can now use the +speed=x# option to control accuracy/performance. Legacy modes are also supported.

For example, to run a high-precision SRAM timing simulation, you can use the following command:

 spectre +xps +cktpreset=sram +speed=x2...

To relax the accuracy criteria and obtain high performance, use the following command:

spectre +xps +cktpreset=sram +speed=x4...

The following table summarizes all the available speeds and their corresponding legacy modes:

+speed Legacy Mode Suggested Application

x1

Open slot

NA

x2

+xps=s +speed=3

With optimized RCR options

Very high-precision timing simulation

x3

Open slot

NA

x4

+xps +speed=1

Optimized timing accuracy, especially for <=10nm process node with IR-drop of power net impact to timing

x5

+xps +speed=2

High-performance timing simulation

x6 (default)

+xps +speed=5

Function verification

When using a SPICE runset, add the +spice option to ensure that the netlist convention and device models are consistently interpreted as traditional SPICE, instead of Spectre.

Since most Spectre XPS applications are large postlayout designs, use the -64 command-line option to enable the 64-bit version of Spectre.

The high accuracy SPICE mode (+speed=x2) supports multithreading computation on multi-core platforms. Multithreading is enabled by default in Spectre XPS SPICE mode and the default number of threads used is 8. The maximum number of threads allowed is 64. You can turn off multithreading by using the following command:

 spectre +xps +cktpreset=sram +speed=x2 -mt ....
Like Spectre APS, there is no need to specify +mt at the command line for Spectre XPS SPICE mode. However, if you want to manually specify the number of threads to be used, instead of the default maximum threads, you can use the +mt command-line option, as follows:
 spectre +xps=s +mt=4....

XPS SRAM Timing Simulation

When simulation speed is the primary concern, the default (speed=x6) FastSPICE mode (+xps) can be invoked in an SRAM simulation, as shown below.

 spectre +xps +cktpreset=sram input.scs …

The accuracy of the FastSPICE mode can be increased by using the speed option, as shown below.

 spectre +xps +speed=x5|x4 +cktpreset=sram input.scs … //(new use model)
 spectre +xps +speed=2|1 +cktpreset=sram input.scs … //(legacy use model)

To further increase the timing simulation accuracy, particularly for critical cut SRAM simulation, or small-medium sized full macro SRAM simulation, the SPICE mode (speed=x2) can be used, as follows:

 spectre +xps +cktpreset=sram +speed=x2 input.scs … //(new use model)
 spectre +xps=s +cktpreset=sram input.scs … //(legacy use model)

XPS SRAM Power Simulation

The SRAM timing simulation settings can be used in both timing and power simulation; however, a power simulation mode is available that further optimizes power and current accuracy and simulation performance.

To invoke power optimization in the FastSPICE simulation mode, use the following command:

 spectre +xps +cktpreset=sram_pwr +speed=2 input.scs …

This mode targets better performance with less physical memory consumption, and still maintains good accuracy for average current.

A more accurate mode is often used in power and current simulation if the peak current is also critical. The recommended setting is the same as accurate mode for timing simulation as follows:

 spectre +xps +cktpreset=sram +speed=x2 input.scs … //(only in the new use model)

XPS SRAM Postlayout Simulation

Spectre XPS is optimized to handle large postlayout SRAM designs. It directly simulates a flat DSPF/DPF/SPEF postlayout netlist by including the file that is commonly used in SRAM designs, as shown below.

Spectre format:

include "file.spf" 

SPICE format:

.include "file.spf" (SPICE syntax)

Due to the tight timing requirement for SRAM memory, backannotation postlayout simulation flow is not supported in SRAM.

XPS SRAM Leakage Current Simulation

Leakage current and power are measured in various standby and power-down modes. Traditionally, these simulations require a careful selection of measurement time points, where the circuit signals have to settle down to a steady state. Spectre XPS accelerates the leakage current and power simulation by deploying a new methodology that requires you to only provide the time point where all input signals are at their steady state. For SRAM designs, the algorithm for leakage simulation has been enhanced, especially for power-off modes, including retention, array shutdown, and total shutdown.

To enable the leakage current and power simulation in Spectre XPS in multiple power mode, use the following options:

Spectre format:

opt1 options leaki_times=[4u 10u] //(defines input-steady state time points in                                      multiple power mode)
save v1:p vdd:p //(current probes on power supplies)

SPICE format:

.options leaki_times=[4u 10u] //(defines input-steady state time points in                                 multiple power mode)
.probe tran i(v1) i(vdd) //(current probes on power supplies)

Following is an example of the command-line option to run the leakage simulation using SPICE runset:

 spectre -64 +xps +cktpreset=sram_pwr +spice input.sp... 

As a result of the above settings, Spectre XPS performs a transient simulation till 4us. It also performs a leakage analysis with the circuit biased at the 4us condition to calculate the leakage currents i(v1) and i(vdd). Spectre XPS then continues transient simulation till 10us and performs another leakage analysis with the circuit biased at the 10us condition. The result of the leakage current simulation is reported in a file with the extension leaki, as shown below.

i(v1): t= 4.0000e-06   val= -2.1293e-10
i(vdd): t= 4.0000e-06   val= -3.1166e-09
i(v1): t= 1.0000e-05   val= -4.3421e-10
i(vdd): t= 1.0000e-05   val= -6.9654e-09

To enable the leakage current and power simulation in single power mode, use the following options:

Spectre format:

opt1 options sim_opt_auto_leaki=1 //(defines input-steady state time points in                                      single power mode)
save v1:p vdd:p //(current probes on power supplies)

SPICE format:

.options sim_opt_auto_leaki=1 //(defines input-steady state time points in                                 single power mode)

.probe tran i(v1) i(vdd) //(current probes on power supplies)

Handling SRAM Designs at Advanced Technology Nodes

With shrinking process nodes, such as 7nm, there are several challenges for FastSPICE simulators to meet the tighter accuracy requirements of SRAM designs. The XPS SRAM speed=1 setting has been enhanced to handle the following challenges from the advanced process nodes, and provides the required timing accuracy:

Spectre XPS DRAM Simulation

With advancing process technology nodes and high capacity of DRAM chips (including PCRAM), designers are facing increasing challenges to simulate and validate large full-chip DRAM designs with the extracted parasitic elements. The simulation accuracy requirement is tighter due to shrinking design margin.

Spectre XPS provides the following advantages for DRAM applications:

Spectre XPS DRAM Postlayout Simulation

Postlayout simulation with parasitic effects is essential for DRAM verification, especially for timing accuracy. Like most of the postlayout simulation scenarios, the following two major effects should be considered:

Spectre XPS is optimized to address the challenges introduced by the advanced process nodes. Postlayout simulation is one of them.

For more information on the Postlayout simulation flow, refer to Chapter 17, “Postlayout Simulation,”.

Starting an XPS DRAM Simulation Run

The Spectre XPS DRAM simulation can be run using the following command:

spectre -64 +xps +cktpreset=dram +speed=2 +mt=8 top.sp....
spectre -64 +xps +cktpreset=pcram +mt=8 top.sp...

Alternatively, you can specify the +cktpreset and +speed options in the netlist, as shown below.

.options cktpreset=dram#1|2|5
.options cktpreset=pcram

When the simulation is run, the following message in the Spectre XPS log file indicates that DRAM mode with multithreading capability is successfully enabled:

Notice from spectre during initial setup.
XPS Enabled ( cktpreset=dram ).
……
Multithreading Enabled: 8 threads in the system with 20 available processors.

The Spectre XPS DRAM mode supports multithreading computation on multicore platforms. Multithreading is enabled by using the +mt option at the command line.

Overall Accuracy/Performance Tuning Strategy in Spectre XPS

Spectre XPS provides an application-based solution by using the +cktpreset command-line option. For example, to run a DRAM simulation, specify the +cktpreset=dram command-line option. The accuracy and performance can be optimized using the +speed option, which includes error tolerance definition for the simulator. For tuning error tolerance, it is important to first understand the accuracy requirement, and then choose the different values for the +speed option. Spectre XPS provides a complete set of simulation modes or high-level +speed settings that you specify at the command line to meet different requirements. These models are listed below in the order of increased accuracy.

Simulation Mode Target Application Spectre Command-Line Options Note

Spectre XPS

(speed=5)

Functional Verification

+xps

+cktpreset=dram

+speed=5

Optimized for performance

Spectre XPS

(speed=2)

General timing and power simulation

+xps

+cktpreset=dram

Can be used for general simulation

Spectre XPS DRAM

(speed=1)

Better accuracy for timing and power simulation

+xps

+cktpreset=dram

+speed=1

Provides better accuracy than the default mode with reasonable slow down

Spectre XPS SPICE model for DRAM

SPICE-level accuracy

+xps=s

+cktpreset=dram

Uses the SPICE engine, but with optimization for RC in postlayout and provides better default trade-off accuracy/performance for DRAM applications. It targets the same accuracy level as the SPICE simulator, but with better performance and accuracy.

Spectre APS simulator

Golden accuracy

+aps

By default, no simplification or RC reduction is performed. Use this option as accuracy reference, if the simulation can be finished within reasonable time.

You can use the following high-level options for different simulation modes:

Modes

XPS SPICE mode

XPS DRAM speed=1

XPS DRAM speed=2 (default)

XPS DRAM speed=5

Solver

SPICE

FastSPICE

FastSPICE

FastSPICE

sim_opt_model

4

2

1

1

sim_opt_step_ratio

NA

0.5

1

2

sim_opt_rcr_dram

NA

1

2

5

sim_opt_fcap1

NA

1e-18

1e-16

1e-16

High Accuracy Mode

One of the targets of Spectre XPS, including the DRAM application, is to simplify the use model by reducing the tuning effort on a case-by-case basis. However, to maintain the flexibility of better accuracy/performance trade-off, you can use any of the following methods for a DRAM application:

Command-line options override the options specified in the netlist.

The above methods improve Spectre XPS accuracy by providing:

Function Verification Mode

The default speed option is +speed=2 for Spectre XPS DRAM application. It can be applied to general timing and power simulation. For function verification, the timing accuracy requirement may be relaxed using a reasonable range; however, you still need to keep the correct function. Spectre XPS provides the following two methods to define the function verification mode for DRAM simulation:

Command-line options override the options specified in the netlist.

Accuracy for Analog Block in DRAM Simulation

In DRAM applications, most of the elements are from the DRAM bank or the peripheral logic blocks. However, there may still be some sensitive analog blocks inside it. You can set the sim_opt_one_part and sim_opt_analog options locally on such analog blocks to obtain high accuracy. It is recommended to set these options on small blocks to minimize the performance impact.

See Options Related to Circuit Partitioning for information on these options.

Examples of local options for analog blocks in DRAM simulation

Spectre XPS Flash Simulation

Spectre XPS has been designed to significantly reduce the simulation time of flash memory designs. In addition, the target is to complete a fully extracted postlayout simulation on full chip design within acceptable accuracy degradation.

For flash simulation, Spectre XPS supports a high performance/capacity FastSPICE mode (+xps), and an accurate SPICE mode for small blocks in a flash design. The +speed command-line option that is used in SRAM application is not supported for flash designs.

Adjusting Speed and Accuracy of Spectre XPS Flash Memory Simulation

You can use two global options, sim_opt_acc and sim_opt_analog, to adjust the speed and accuracy settings of a Spectre XPS flash memory simulation.

The sim_opt_acc option with possible values of 2, 4, and 8 can be used to get better speed and accuracy.

The sim_opt_analog option with possible values of 6 and 7 can be set on pump/regulator blocks to obtain high accuracy.

Starting a Spectre XPS Flash Memory Simulation

You can invoke Spectre XPS flash simulation in FastSPICE mode, as shown below.

 spectre +xps +cktpreset=flash input.scs …

For small block-level designs that require high accuracy tolerance, the default SPICE mode can be used.

 spectre +xps=s +cktpreset=flash input.scs …
The SPICE mode is not recommended for medium-to-large blocks in a flash design.

When using a SPICE runset, add the +spice option to ensure that netlist convention and device models are interpreted in a consistent manner as traditional SPICE, instead of Spectre. For large mixed-signal applications, it is recommended to use the 64-bit version of the tool with the -64 command-line option.

A configuration file may be used (+config file.cfg) to obtain optimized simulation results. All control options can be specified either in netlist file input.scs or the configuration file.

Flash Memory Postlayout Simulation

Spectre XPS is optimized to handle large postlayout flash memory designs. It annotates the DSPF/DPF/SPEF file back to the pre-layout netlist through parasitic backannotation options, as shown below.

Spectre format:

Opt1 options spf="scope filename" 
Opt2 options dpf="scope filename"
Opt3 options spef="scope filename"

SPICE format:

.options spf="scope filename" 
.options dpf="scope filename" 
.options spef="scope filename" 

Here, scope can be a subcircuit or an instance.

The Spectre XPS parasitic backannotation flow shares the same methodology and controls as Spectre APS. For more information on the parasitic backannotation related control options, such as spfscale, spfxtorprefix, and spfaliasterm, refer to Chapter 17, “Postlayout Simulation,”.


Return to top
 ⠀
X