Product Documentation
Spectre FX Circuit Simulator User Guide
Product Version 23.1, September 2023

7


EMIR Analysis and Post-Layout Simulations

This section covers the following topics:

EMIR Analysis

Post-layout Simulation Methodologies

The Parasitic Backannotation Flow

Control Options for the Parasitic Backannotation Flow

Guidelines for Parasitic Backannotation Options

Probing Signals for the Parasitic Backannotation Flow

Parasitic Backannotation Report

EMIR Analysis

Spectre® FX provides a powerful transistor-level EMIR solution. This dynamic power net and signal net EMIR capability uses a patented technology and is designed to provide high-capacity and high-performance EMIR analyses. The Spectre FX EMIR solution provides a set of advanced features covering dynamic and static EMIR, power gate support, and differential IR drop. The flow is fully integrated into Virtuoso® ADE Explorer and Virtuoso® ADE Assembler and the results can be post-processed with Voltus™- Fi Custom Power Integrity Solution.

Related Topics

Spectre FX EMIR Technology, Product, and Flow Overview

Getting Started with Spectre FX EMIR Analysis

Power Gate Support

Handling the Complexity of DSPF/SPEF files

Advanced Analyses

Spectre FX EMIR Technology, Product, and Flow Overview

In an EMIR flow, a circuit is evaluated together with the parasitic resistor and capacitor network, which models the IR drop or the EM effect. There are two general approaches of solving such a problem:

For high accuracy EMIR analysis of small design blocks, or designs with smaller numbers of RC nets, direct EMIR analysis is recommended.

To gain higher performance and higher capacity on medium-to-large designs, the iterated EMIR analysis method is recommended.

The Spectre FX EMIR flow requires a complete testbench that contains the DSPF files (with the parasitic and instance sections describing the circuit to be analyzed) stimuli, device, and models. .

Use the +emir option on the Spectre FX command line to enable the EMIR analysis during circuit simulation. The details of EMIR analysis, such as the type of analyses, nets to be analyzed, output to be created, are specified using an EMIR configuration file.

Using either direct EMIR analysis or iterated EMIR analysis, the circuit simulation is first performed with various voltages and currents being calculated. Next, a standalone tool, emirreport/emirutil, is called to post-process the simulation results and generate the IR and EM reports. By default, the post-processing step is invoked automatically.

The output of the EMIR analysis is an EMIR text/html report, which lists the EM and/or IR information of all the nets requested. In addition, Voltus-Fi XL can be used to visualize the IR drop and EM current violations in Virtuoso Layout Editor.

Note that while the Spectre FX EMIR flow uses the DSPF representation of the designs, it is not dependent on any post-layout backannotation or stitching capability. The flow also covers designs with power gates.

Product Overview and EMIR Flow

The EMIR product consists of the Spectre FX EMIR simulation and the Voltus-Fi XL visualization. The circuit and the RC network simulation are handled by Spectre FX EMIR. The result is stored in a binary database which contains the average, rms, max IR drop, and EM values. Voltus-Fi XL reads the information from the binary database, evaluates whether the currents are above the limits defined in the technology file, and visualizes the results in the layout.

Different utilities are responsible for creating the IR drop and EM text reports. For advanced node designs for which the technology file format is ICT or qrctechfile, the utility emirreport (or vpsbatch) is used to generate the text report. For older technology nodes which use emdatafile format, the utility emirutil is used to create the text reports.

DSPF requirements

The Spectre FX EMIR flow is based on a DSPF representation of the analyzed design. The DSPF file is required to contain all electrical and geometric information needed for EMIR analysis. The following figure shows a representative DSPF netlist with all important information for EMIR being marked in color.

EM Rule Support

EM rules are defined in DRM, and part of the technology files. The Voltus-Fi XL– Spectre FX EMIR solution supports the following technology file formats.

Advanced node technologies require special EM rules that are only supported in ICT/ICT-EM and qrctechfile format. Refer to the Quantus QRC Techgen Reference Manual for details.

emdatafile format is used for legacy technology nodes. In future, it is expected to be replaced by ICT and qrctechfile format.

Various Cadence EMIR tools support only subsets of these techfile formats (for example, Voltus does not support ICT file, but supports ICT_em). ICT_em is the only format supported by all Cadence EMIR technologies, Voltus, EAD, and Voltus-Fi L and XL.

Getting Started with Spectre FX EMIR Analysis

To perform EMIR analysis, first create a complete simulation testbench with the DSPF files containing the postlayout data of the design. Specify the fingered devices in the instance section and the parasitic resistors and capacitors in the net section. Use the dspf_include statement to read the DSPF content, as shown below.

dspf_include "sram.spf     "                        (Spectre syntax)
.dspf_include "sram.spf "   (SPICE syntax)

dspf_include provides special features like port order adjustments, or handling of duplicated subcircuits, which are not available in include/.include. Therefore, do not use include/.include in the EMIR flow for including the DSPF file.

Large DSPF files may be split into multiple files, for example, sram.dspf, sram.dspf.1, sram.dspf.2, and so on. If the top-level DSPF file (sram.dspf) is included with the dspf_include statement, Spectre FX searches for any related file (sram.dspf.1, sram.dspf.2, ...) and read them automatically.

Setting up a correct postlayout simulation test bench is vital to successful EMIR analysis (see Handling the Complexity of DSPF/SPEF files).

Once the testbench is set up, you can perform a regular (non-EMIR) postlayout simulation with the spectrefx command to ensure that the testbench contains no error, and the circuit behavior is as expected.

% spectrefx input.sp 

To perform the same simulation with EMIR analysis added, you need to create and include an EMIR control file with the spectrefx command, as shown below.

% spectrefx +emir=emir.conf  input.scs 

The EMIR analyses is enabled by using the +emir Spectre FX command-line option. All EMIR-related commands are defined in the EMIR control file.

EMIR Control File

EMIR analysis is performed based on the first transient analysis statement in the netlist. An EMIR control file contains all of the settings and options that are relevant to an EMIR analysis. Some of the options that can be specified using the EMIR control file are: the names of the nets to be analyzed, the type of analyses to be performed, the EMIR analysis time window, choice of direct or iterated methods, settings for RC simulation, and location of EM rule file.

The following sample control file describes EMIR analysis based on the X1 instance. A maximum IR drop analysis is performed on nets VDD and VSS, while RMS-based EM analysis is performed on all nets inside the X1 instance. The two-stage iterated method is used, and the current density limits for the EM report are referenced from file .emfile.txt. Only one subcircuit instance is allowed for EMIR analysis for a Spectre FX run.

Example EMIR control file (emir.config)

net name=[X1.VDD X1.VSS] analysis=[vmax iavg] net name=[X1.*] analysis=[irms]
solver method=iterated
emirutil techfile="./emfile.txt"

The EMIR control file supports the Spectre line continuation character + and comment-line characters * and //.

The following table summarizes the supported EMIR control file options:

The following table summarizes the supported EMIR control file options:

Keyword

Option Set

Explanation

Default Value

net

name=[instance1.net1 instance1.net2....]

Defines the nets for which the analysis is performed. instance defines the instance of the subcircuit containing the net. net defines the net name inside the subcircuit instance as it is defined in the DSPF *| NET definition. If the DSPF file is included at the top level, the instance name is not required. Wildcards aresupported for net names but not instance names.

none

analysis=[imax iavg iavgpos iavgneg iavgabs irms vmax vavg]

peakEM, avgEM, avgEM for i>0, avgEM for i<0, avgabsEM, rmsEM, peakIR, avgIR. imax, iavg, iavgabs, irms, and vmax data are always written to the binary database independent of user settings.

If Voltus-Fi acpeak analysis is required, then imax and irms analyses need to be enabled in Spectre FX EMIR.

imax means max(abs(current waveform))

iavg, vmax

pwrgate=[I1.VDD I1.VDD_INT...]global=[I1.VDD]

Enables power gate handling. You need to specify the power supply net driving the power gate (vsource connected) and the internal power supply net driven by the powergate. If one power supply net drives multiple power gates, you need to specify one statement with all internal power supply nets. If none of the powergate nets is driven by vsource, then the global statement can be used to define the global net.

none

analysis=[sigvmax sigvavg] reftype=[avg max min pin]
[findsrc=yes|no][refnode=name][vref=value]

analysis=sigvmax - max signal net IR drop.

analysis=sigvavg - avg signal net IR drop.

reftype=avg - reference voltage for IR drop is the average voltage of all subnodes at every time point. This is the default.

reftype=max - reference voltage for IR drop is the maximum voltage of all subnodes at every time point.

reftype=min - reference voltage for IR drop is the minimum voltage of all subnodes at every time point.

reftype=pin findsrc=yes - Reference voltage of IR drop is taken from vsource, which is traced back from *P| node.

reftype=pin findsrc=no - Reference voltage of IR drop is taken from *P| node.

refnode - use the reference voltage from the specified reference node.

vref - use the voltage value as reference and report the value as vmax and not as sigvmax in the report.

none

name [instance.net1...]
r2r_refnet=VSS
analysis=[r2rvmin]
[r2rvmin_layer=mt1]r2rvm
in_refnet_layer=[m2]
r2rvmin_tap_inst=[MN1*
MN2*]
r2rvmin_refnet_tap_inst=
[MN3* MN4*]
r2rvmin_model=[pch_...]
r2rvmin_refnet_model=[nc
h_...] r2rvmin_bbox=[1.0
1.0 269.5 279.5]
r2rvmin_refnet_bbox=[...]
r2rvmin_node_report=[on|
off]
r2rvmin_rule_name=name
r2rvmin_excl_layer=[m6]
r2rvmin_refnet_excl_laye
r=[m9]
r2rvmin_excl_tap_inst=[M
N5]
r2rvmin_refnet_excl_tap_
inst=[MN6] r2rvmin_excl_model=[pch.
..]
r2rvmin_refnet_excl_mode l=[pch...] r2rvmin_excl_bbox=[32.99
95.92 41.01 99.659]
r2rvmin_refnet_excl_bbox
=[...]

Worst case differential (rail-to-rail) IR drop between thespecified power supply node and the reference net written to the *.rpt.r2r file. If r2r_refnet is not specified, the ground node is automatically detected. At each time point, the sub node with the highest IR drop is selected for power and ground net and the differential voltage is calculated. The worst case differential IR drop over the EMIR time window is reported and the worst case power and ground waveforms are written to the waveform file. Optional scoping (combined with AND) includes layer names, tap device names, and tap device model names for both power supply node and refnet. A boundary box can be defined for power supply net and refnet.

Optionally, a name can be assigned to each r2rvmin option. r2rvmin_node_report enables additional report of nodes and XY coordinates (default is off). Exclude statements supported for layers, tap device instances, models, and bounding boxes. All exclude statements allow you to specify file content. For example,
r2rvmin_refnet_excl_tap
_inst_file=refexcl.txt
.

none

vref=value

Defines the optional voltage reference value for vmax and vavg analyses.

none

exclude=[netname1 netname2...]

Excludes the specified nets when name=[*] is used.

none

solver

method=[auto|direct|iterated|profonly|iteronly | iterated_split]

auto - direct for Spectre FX and Spectre X
direct - forced direct method
iterated - forced iterated method
profonly - iterated flow - circuit profile generation
iteronly - iterated flow - RC network iteration (requires solver inputwf=iterated.emirtap.pwl)
iterated_split
- iterated flow - Same as iterated; however, it runs the first and second stages as separate processes to reduce peak memory usage

auto

global_pwr_net=[name1 name2 …]

By default, IR drop is enabled ony for DSPF subcircuit ports that are driven by a DC vsource. If a subcircuit port is not connected to a DC vsource, it can be defined as a power supply node using the global_pwr_net option and IR drop on this net can be calculated by specifying the analysis=vmax statement on this net. The IR drop reference value used is the maximum value of the voltage waveform at the specified port. This feature is only supported in iterated method. Wildcarding is not allowed. Once enabled, the net can be used in the pwrgate statement.

none

tstep=value

Change the solver to a fixed timestep specified by value. The unit is in seconds.

none

min_tstep=value

Minimum time step for adaptive time step. The unit is in seconds.

1ps

rcsolve_multi_proc=[on|off]

If set to on, enables parallel (forked) processes for second stage network solving. You can use the +mt command-line option to specify the maximum number of cores to use. Small-sized nets (< rcsolve_1t_netsize) are solved first with eight forked single-thread processes. Medium-sized nets are solved next with two forked four-thread processes. Large nets (>rcsolve_4t_netsize) are solved with one main process using eight threads.

off

ignore_tap=[name1 name2...]

Ignores the specified tap devices in dynamic, static EMIR, and SPGS. The specified tap devices are changed to subnodes and do not carry any current. In addition, they are not reported. It applies to only the second stage of the iterated method and is not supported in the direct method. Wildcards are supported.

none

report_tapc=[off|text]

Report the net and tap device capacitance values for nets being defined in the UTI command. The capacitance report is written to a file with extension rpt_tapc.

off

inputwf=file_name

Specifies the waveform file that contains the results from circuit simulation when method=iteronly is used.

none

static

ifile=filename

Enables static EMIR analysis. The filename defines the subcircuit instance port currents. Static EMIR analysis cannot be combined with dynamic EMIR analysis.

none

exclude=[net=[name1 name2] dev=[name1 name2]]

Exclude the tap devices from static current distribution. A 0A current is assigned to the specified tap devices. Wildcarding is supported for both exclude and dev. For example:

exclude=[net=[I1.VDD] dev=[MPM3*]].

none

report_tapi=[true|false]

Enables the printing of individual tap device currents in static EMIR analysis. The current values are written to a file with the extension rpt_tapi.

false

emirutil

techfile="emDataFile"

Specifies the EM rule file in the emdatafile, qrctechfile, or ICT file format.

The EM rule file can be predefined in the configuration file using the EMTECHFILE environment variable, as shown below.
setenv EMTECHFILE="<path>/emdatafile"

It can also be defined in the .cdsinit file as follows:
envSetVal("spectre.envOpts" "emTechFile" string <path to the file>

Case-insensitive layer names are supported for easier match between the DPSF file and emData file.

The rule file defined in the configuration file has higher priority followed by the rule file specified in .cdsinit. The rule file specified using the environment variable has the least priority.

Alternatively, you can use the emdatafile="emDataFile" option to specify the techfile in the emdata format, qrctechfile="qrcTechFile" to specify the QRC tech files, and ictfile="ictfile" to specify the file in ICT format.

none

layermapfile="mapfile"

Optional file that defines the mapping between the layer names in the DSPF file and the layer names in the technology file.

none

EMOnlyICTFile="emOnlyICTfile"

Specifies the file containing only the EM rules. It is usually used in combination with qrcTechFile.

none

autorun=[true|false]

true: run emirutil automatically after the solver to generate a text report.

false: manually run emirutil.

true

report=[text|layout | html]

Defines the type of report created by emirutil.

text: creates only the text report.

layout: creates only the layout violation map.

html: creates the report in html format.

Multiple entries are supported.

text

notation=[s|e]

Notation for the text and html reports.

e: engineering scale number (for example, 5.02m)

s: scientific notation (for example, 5.02e-3)

e

sort_by_net=yes|no

Report IR and EM results per net, or all nets.

yes: report EMIR results per net.

no: combine EMIR results of all nets into one report.

yes

time

window=[start1 stop1 start2 stop2 ...]

Time window to which the EMIR analysis is applied. It applies to all nets for which the analysis is defined. Multiple and overlapping windows are supported. An individual report is created for each time window. You can use different time windows for emirutil v/s Spectre simulation.

[0 tend]

The EMIR control file supports the Spectre line continuation character +, and the comment lines start with character * or string //.

Checking the Progress of EMIR Analysis

As the simulation runs, Spectre FX sends messages to the screen and the simulation log file that show the progress of the simulation and provide statistical information. Following information may be significant to your EMIR analysis when you use the iterated method.

Hardware configuration and run-time machine loading

In the beginning of a simulation session, Spectre FX prints the hardware configuration (physical memory, CPU core specification) and the run-time machine status (available memory, CPU core operating frequency, CPU loading). Since EMIR analysis often involves large-scale designs with gigabytes of data, it is important to ensure that there is sufficient memory available, with CPU operating at full speed (not in power saving mode), and the machine loading is light.

User: user1 Host: lnx-user1 HostID: CD0A1190   PID: 26141
Memory  available: 10.2268 GB  physical: 16.6236 GB
CPU Type:        Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz
          Processor PhysicalID CoreID Frequency Load
              0         0        0     3192.5     0.3
              1         0        1     3192.5     0.2
              2         0        2     3192.5     0.3

Reading the EMIR Control File

Spectre FX reads the EMIR control file before processing the circuit being simulated. All valid EMIR options are reported in the following section:

~~~~~~~~~~~~~~~~~~~~~~~~~~~
EMIR Analysis Configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~
nets   name=[i1.VDD i1.VSS] analysis=[vmax iavg]
nets name=[i1.*] analysis=[irms]
solver method=iterated
emirutil   techfile = emDataFile.txt

If one of the specified EMIR options is not displayed in the summary, check the related warnings, and correct the syntax.

Running the Circuit Simulation to Produce Voltage Profiles

At this point, with the simplification of power and signal nets, Spectre FX is ready to simulate the nonlinear circuit and produce voltage profiles needed for iterated EMIR analyses. This step is similar to a regular circuit simulation, where Spectre FX first parses the circuit, reports circuit inventory, initiates a DC analysis, and finishes the step with a transient analysis.

Creating probes for EMIR analysis: 57 voltage probes, 0 current probes
Time for setting up EMIR tap devices: CPU = 0 s (0h 0m 0s), elapsed = 0 s (0h 0m 0s).

Time for setting up EMIR analysis: CPU = 580.0 ms (0h 0m 0s), elapsed = 80.0 ms (0h 0m 0s).
…
****************************************************** 
Transient Analysis `transient1': time = (0 s -> 20 ns)
******************************************************
…
......9......8......7......6......5......4......3......2......1.    0
Number of accepted tran steps =    918
Total time required for tran analysis `tran': CPU = 4.88835 s,
elapsed = 625.093 ms, util. = 782%.
Time accumulated: CPU = 7.64419 s, elapsed = 5.33127 s. Peak resident memory used = 158 Mbytes.
Time for creating waveform database: CPU = 10.0 ms (0h 0m 0s), elapsed = 10.0 ms (0h 0m 0s).

The reported transient time and the accumulated time are important measures to be considered when optimizing performance. The voltage profiles of the tap devices (active devices connecting to the power and signal RC nets) are stored in the pwl files, and used as input for the second stage EMIR simulation.

This step of EMIR simulation is fully multi-threaded. It uses the number of cores defined by the +mt command-line option.

Simulating the Parasitic RC Nets

In the second stage of the iterated EMIR analysis, the power and signal nets are simulated together with the tap devices. During the simulation, the tap device terminal voltages over time is taken from the voltage profiles created in the first stage. In the second stage, nets are solved individually, except for coupled nets, which are solved together.

The RC network solver writes all IR drop voltage and EM current values to the binary database with the extension emir0_bin. Important log file content is written to the EMIR PARASITICS ANNOTATION SUMMARY section, which provides information on the nets and R/C elements processed. In addition, the number of solved time steps per net, and the elapsed time for the RC solving are essential when optimizing performance.

*****************
Start EMIR RC Analysis at Sat May 6 00:37:07 2023
*****************
Current resident memory used = 153.27 Mbytes.
Reading EMIR configuration file:  input.raw/input.emirtap.conf
~~~~~~~~~~~~~~~~~~~~~~~~~~~
EMIR Analysis Configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~
solver method = iteronly
solver inputwf = input.raw/input.emirtap/input.emirtap.pwl
Current resident memory used = 153.34 Mbytes, Peak memory used = 153.34 Mbytes, at Sat May  6 00:37:07 2023
emir 2nd stage solver pre_sim time is set to 0n
Time for Pre process : CPU = 0 s (0h 0m 0s), elapsed = 0 s (0h 0m 0s).
Maximum grounded vsource value = 2.5v

Searching and processing cross coupling capacitors in SPF file ./adc_sample_hold.dspf Sat May  6 00:37:07 2023
Cross coupling capacitors found and processed: 0
EMIR RC analysis cross coupling capacitor parsing elapsed time: 0.020 s. …
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
EMIR PARASITICS ANNOTATION SUMMARY
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nets:                      parsed            18 processed            18
Cross coupling capacitors: parsed 0 processed 0
Capacitors: parsed 3709 processed 3709
Resistors: parsed 6803 processed 6712
Nodes: parsed 5955 processed 5955
Nets annotated with C-only:   0 Nets annotated with RC: 18
No errors and No warnings(fixed errors)
Postprocessing 2nd stage waveform files Sat May  6 00:37:09 2023
Done at Sat May 6 00:37:09 2023
~~~~~~~~~~~~~~~~~
EMIR NET COVERAGE
~~~~~~~~~~~~~~~~~
Number of non-emir nets = 0
Number of emir nets = 18
Number of skipped nets = 0
Number of successfully solved nets = 18
Number of failed nets = 0
Number of accepted time steps = 4570 (average 253.889 per net)
Number of total time steps = 4570
Number of rejected time steps = 0 (average 0 per net)
average number of Newton Iterations per dc/tran solve = 0.0784656
average number of solver iterations = 3.3846
EMIR PERFORMANCE INFO:
Net Elapsed Time Time Steps
i1.sample 0.26s 813
i1.hold 0.25s 780
i1.Vcm 0.24s 685
i1.Vcp 0.24s 685
i1.inp 0.18s 559
Finished EMIR RC Analysis at Sat May  6 00:37:09 2023
Total time required for EMIR RC analysis: CPU = 4.1  s (0h 0m 4s), elapsed = 1.6  s (0h 0m 1s).
Peak resident memory used = 158.2 Mbytes

This step of the EMIR simulation is fully multi-threaded. It uses the number of cores defined by the +mt command-line option.

After the EMIR data is available in the binary database, another step is performed to create the text reports for IR drop, EM currents, pin currents, and power gate information. The following output shows the related section in the log file (some content is only written to stdout):

Creating EMIR report, check 'input.raw/input.emirtap.emirlog' for more information.
Pre process           : CPU = 0 s (0h 0m 0s), elapsed = 0 s (0h 0m 0s)
Database building : CPU = 120.0 ms (0h 0m 0s), elapsed = 150.0 ms (0h 0m 0s)
Simulating nets : CPU = 4.0 s (0h 0m 4s), elapsed = 1.4 s (0h 0m 1s)
Circuit update : CPU = 290.0 ms (0h 0m 0s), elapsed = 130.0 ms (0h 0m 0s)
RC solver : CPU = 2.1 s (0h 0m 2s), elapsed = 860.0 ms (0h 0m 0s)
Time step prediction: CPU = 300.0 ms (0h 0m 0s), elapsed = 170.0 ms (0h 0m 0s)
Device evaluation : CPU = 820.0 ms (0h 0m 0s), elapsed = 180.0 ms (0h 0m 0s)
Output : CPU = 470.0 ms (0h 0m 0s), elapsed = 130.0 ms (0h 0m 0s)
Instance section : CPU = 0 s (0h 0m 0s), elapsed = 10.0 ms (0h 0m 0s)
Post process : CPU = 0 s (0h 0m 0s), elapsed = 0 s (0h 0m 0s)
Generate text report  : CPU = 120.0 ms (0h 0m 0s), elapsed = 140.0 ms (0h 0m 0s)

At the end of the simulation, Spectre FX reports the total simulation time and peak memory used.

Aggregate audit (3:53:45 AM, Tue Jan 12, 2016):
Time used: CPU = 2.38 s, elapsed = 63.3 s (1m 3.3s), util. = 3.76%.
Time spent in licensing: elapsed = 60.1 s (1m 0.1s), percentage of total = 94.8%. Peak memory used = 68.8 Mbytes.

Viewing EMIR Results

Spectre FX EMIR writes the IR voltage and EM current values to a binary database with the extension emir0_bin. In addition, it automatically calls the emirreport or emirutil binary for creating the text or html reports.

The textual/html IR drop report (file extension: rpt_ir/rpt_ir.html) lists the voltage drop per net (in the order of largest to smallest), and provides information about the time the maximum IR drop occurred, as well as the layer information and layer coordinates. An example section of an IR drop report is shown below.


VOLTAGE DROP RESULTS

…

-------------------- "VDD" NET: Vref = 2.5V -----------------------------------
max - drop

VOLTAGE-DROP    NETNAME         TIME            LAYER            X               Y
(V) (s) (um) (um)
6.212m MPM1@16:s 20.781p mwires 75.120 76.080
6.212m MPM3@9:s 20.781p cont 75.120 76.080
6.211m VDD:567 20.781p metal1 75.120 95.840

The EM report (file extension: rpt_em/rpt_em.html) lists the pass/fail results for each resistor segment of a net, and provides information about the resistor name, layer, current, layer width, density (current divided by width), density limit, number of vias required, and the coordinates.

ELECTROMIGRATION ANALYSIS RESULTS
… ----------------------- NET "VDD" ------------------------------- avg There is no resistor whose current density exceeds the limit. %failed   resistor layer current width pathLength density limit needed width/#vias X1 Y1 X2 Y2 resistance
(A) (um) (um) (A/um) (A/um) (um/#) (um) (um) (um) (um) (ohm)
pass-16.05% rr1027 via2 1.504m 4.480 155.735 335.783u 400.000u 14(16) 60.190 206.060 60.190 206.060 0.0875
pass-30.86% rr1026 via2 309.737u 1.120 155.735 276.551u 400.000u 3(4) 60.200 199.280 60.200 199.280 0.350
pass-36.10%  rr1019   via2   1.145m 4.480 155.735 255.598u 400.000u 11(16)

The EMIR text and html reports can also be created using an existing EMIR binary database using the following command:

$ emirutil -db input.emir0_bin -control emir.conf

For more information on emirutil/vpsbatch utility for creating the reports, and for the visualization of the EMIR analysis results in the layout, refer to the Voltus-Fi user manual.

If there are multiple emir0_bin files created by the same Spectre FX EMIR simulation, it is sufficient to specify only the first binary database file with the -db option. The utility automatically identifies all other binary database files created by the Spectre FX EMIR simulation.

Data Flow

The data flow of the iterated EMIR flow is shown in the following flowchart. The first stage EMIR circuit simulation creates the tap device voltage profiles which are stored in the pwl files, and used in the second stage. The second stage RC network solver writes all IR drop and EM current values to a binary database with the extension emir0_bin. This binary database is used by emirutil/emirreport for creating the text/html reports, and by Voltus-Fi XL to visualize the results in the layout.

All intermediate and output files are written into the Spectre FX output (raw) directory. Some files shown in the figure are only created when the related feature is enabled in the EMIR config file.

If multiple EMIR windows are used in the same EMIR simulation, a set of files is created for each EMIR time window. For example:

Time window 1: emir0_bin, rpt_ir, rpt_em, … 
Time window 2: emir1_bin, rpt_ir1, rpt_em1, …

The data flow for the direct EMIR method is the same except that the intermediate files are not created. Only the iterated method EMIR files have the emirtap file extension.

Direct method: design.emir0_bin, design.rpt_ir, design.rpt_em

Iterated method: design.emirtap.emir0_bin, design.emirtap.rpt_ir, design.emirtap.rpt_em

For large designs, the intermediate (pwl, pdb) and EMIR database files (emir0_bin) can be compressed by using the eisopt zipfiles=2 option in the EMIR config file.

Power Gate Support

Power networks may contain power gates (four-terminal MOSFET device) which enable or disable the power supply in the circuit. These power gates split the power supply RC network into two parts; the RC network driving the power gate, and the RC network being driven by the power gate. These nets are strongly coupled together and they should be simulated together in EMIR analysis.

To invoke power gating handling, add the power gate setting in the EMIR control file (emir.config), as shown below.

net pwrgate=[vdd vdd_int] analysis=[vmax]

Both, the global power supply net vdd driving the power gates, and the virtual internal power supply net vdd_int driven by the power gates, need to be specified in the net statement in any order. Wildcards are supported for internal power supply nets, but not for power supply nets. If one power supply net drives multiple power gates, one statement with all power supply nets needs to be defined, as shown below.

net pwrgate=[vdd vdd_int1 vdd_int2] analysis=[vmax]

The IR drop report includes both the power supply net in the usual report file name, for example, input.rpt_ir and the internal power supply net is reported in a file, such as input.rpt_pwg or input.emirtap.rpt_pwg for direct and iterated methods respectively. The IR drop for the virtual power net includes the voltage drop on the global power net, the voltage over the power gate, and the voltage drop on the virtual power net. EM analysis is performed as usual, if specified.

In addition, an important parameter Ton is also reported in the .rpt_pwg file. It reports the time taken to power-up the terminal of the internal power supply net to 95% of the power supply level (VDD).

The parameter Ton can be infinity if the internal power supply level does not reach 95% of VDD.

Each pwrgate statement allows you to define only one global power node and the related virtual power nodes. If a design contains multiple global nodes with power gates and virtual nodes, then, for each of them, a separate pwrgate statement is required.

Serial power gate structures are supported. For such gate structures, not only the top-level power supply net and the internal supply net, but also the net between the serial power gates needs to be specified.

Handling the Complexity of DSPF/SPEF files

SPF Checker

The DSPF files are created with parasitic extraction tools like QRC. The content and format of a DSPF file is heavily dependent on the extraction tool and the settings. Often, simulation problems occur due to problems in the DSPF file.

SPF Checker is a utility that analyses a DSPF file, reports problems which may cause simulation problems, and creates an EMIR configuration file with the recommended mapping statements for EMIR analysis.

The SPF checker utility can be located at <spectre_install_dir>/tools.<plat>/bin/ spfchecker.

The SPF checker utility can be run as follows::

spfchecker SPF_FILE_NAME[-detail <value>] [-message <value>] [-log LOG_FILE_NAME] –c EMIR_CONF_NAME] [-ckt=subckt_name] [-ctl=filename] [+lorder licenseList] -force –help

Argument Description

-dspf

If the input is in DSPF format (default).

-spef

If the input is in SPEF format.

-outdir <dir_name>

Set the output directory for the checker results. Default is .

-detail

Report detailed information (statistics) for NETs whose subnodes are more than the value specified using -d. Default is 0.

-message

Set the maximum number of messages for each type of error. Default is 50.

-log name

Set the checker log file name. If this argument is not specified, a file with the name SPF_FILE_NAME.chklog is created by default.

-c name

Create the EMIR configuration file. If this argument is not specified, a file with the name SPF_FILE_NAME.emir_conf is created by default.

-opt name

Create a backannotation option file. If this argument is not specified, a file with the name SPF_FILE_NAME.stitch_opt is created by default.

-ckt subckt

Define the subcircuit scope. Default is the first subcircuit definition found.

+lorder

Specify the license checkout order. The default checkout order is PRODUCT:MMSIM

-fix name

Fix the common connection errors and create a new DSPF file.

-dump_cc name

Dump the cross coupling capacitors into the named file

-dump_lvl level

Set the level to dump the original coupling capacitors. Default is 0.

-force

Overwrite the previous SPF checker results.

-ctl file

Exclude the parasitic resistors specified in the list. For example, ctl file: spf_ignore_layers = [M1 M2]

-help

Display help related to the SPF Checker utility.

The SPF checker creates the following files:

Before running any EMIR analyses, ensure that your DSPF file is clean. This can be achieved by running the spfchecker utility and by confirming that spfchecker does not report an error message in the *chklog file. Typical error messages in the chklog file are:

SPF-0003:    2           ERROR: NETs broken into pieces
SPF-0016:    6           ERROR:Instances with different connection from                                          the NET Section
SPF-0019:    430         ERROR: NETs with sub-nodes not connecting to any                                          parasitics
SPF-0028:     1           ERROR: Instance model terminal definition conflicts
SPF-0039:     3854807     ERROR: Layer is extracted as both via and metal layer

Simulating a DSPF file for which spfchecker reported errors may generate invalid EMIR simulation results. If spfchecker reports warnings and no errors, the DSPF file can be used in EMIR analysis.

Additionally, spfchecker prepares content for the EMIR config file into the *.emir_conf file. This content can either manually be copied into the EMIR config file, or included with an include statement:

include test.spf.emir_conf

Port Order Handling

When setting up the EMIR simulation, you need to ensure that the subcircuit port order in the DSPF file matches the port order of the instance call in the top-level netlist. The .dspf_include command provides advanced functionality for port order mapping, as given below.

.dpsf_include file.spf port_order=[spf|sch] 

Advanced Analyses

Signal Net IR Drop Analysis

IR drop analysis (analysis=[vmax vavg]) is typically applied to power nets that are driven by voltage sources, which provides a constant reference voltage over the EMIR window. However, designs may have internal generators or regulators. For the generator driven nets, an IR drop analysis may be important. These nets behave like signal nets since their voltage value changes over time.

The Spectre FX EMIR signal net IR drop analysis (analysis=[sigvmax sigvavg]) allows you to perform IR drop analysis on such nets. However, you need to define the reference voltage being used for the IR drop calculation. The recommended setting for generators is refnode=vdd. At each time point, it calculates the voltage at the reference node vdd, and calculates the IR drop in reference to this voltage.

net name=[i1.vdd] analysis=[sigvmax] refnode=vdd

The following are supported for defining the reference voltage:

When using reftype=max for a net with three subnodes: net1:1 (1V), net1:2 (2V), and net1:3 (3V), the detected reference voltage will be 3V, and the IR drop calculated will be 2V for net1:1, 1V for net1:2, and 0V for net1:3. When using reftype=avg the reference voltage will be 2V, and the IR drop calculated will be 1V for net1:1, 0V for net1:2, and -1V for net1:3.

The signal net IR drop analysis is automatically changed to a regular IR drop analysis (vmax), if vref=value is specified, or if the net (during the EMIR time window) is driven by a constant voltage source.

Differential (Rail-to-Rail) IR Drop Analysis

The differential IR drop feature allows you to identify the worst-case IR drop between the specified power supply and the ground node. At each time point, it calculates the worst IR drop over all the power supply sub nodes, and the worst IR drop over all the ground sub nodes. At each time point, it also calculates and reports the worst case rail-to-rail voltage for the given EMIR time window.

The differential IR drop analysis is enabled with the analysis=r2rvmin option. Multiple power supply nodes can be specified. If the ground node is not specified in the r2r_refnet statement, Spectre FX automatically detects the global ground node.

net name=[VDD] r2r_refnet=VSS analysis=[r2rvmin] 

The following is an example of a differential IR drop report:

**r2rvmin RESULT
Power_net_name R2rvmin_value  R2rvmin@time   Attribute      Ref_net_name   Ideal_r2rvmin  Ref_Attribute  Rule_name
(V) (V)
VDD            2.489          20.781p        0              VSS            2.500          1              _R2RVMIN_AUTO_RULE_1

The r2rvmin feature allows you to apply the analysis only to selected layers, selected tap devices, tap devices of a user-defined model, and selected bounding boxes. Combinations are supported and combined with the AND behavior. Excluding tap nodes based on their layer, model, or instance information is also supported. To differentiate between multiple r2rvmin reports, you can apply the rule names to each r2rvmin statement (r2rvmin_rule_name). Refer to the r2rvmin option in the table under the EMIR Control File section for more information. The differential (rail-to-rail) IR drop analysis is only supported in the direct method.

Static EMIR Analysis

Static EMIR analysis enables you to evaluate IR drop and EM currents based on the specified current consumptions for subcircuit instances without running a transient or DC simulation. The specified currents are distributed to the tap devices based on the width and length ratios of devices in the design. The IR drop and EM current analysis is performed based on the current at each tap device.

To enable static EMIR analysis, you need to use the static ifile option in the EMIR configuration file, as shown below.

net name=[I1.VDD I1.VSS] analysis=[vavg iavg]
static ifile="static_currents.txt"

For static EMIR analysis, vmax and vavg for IR drop and imax, irms, and iavg values for EM currents remain the same, and therefore, just one can be selected in the statement.

The subcircuit instance currents are defined (in A) in the static_currents.txt file with the subcircuit instance name, subcircuit port name, and the current flowing in the port. This current is distributed to all MOSFET tap devices. No current distribution is done for non-MOSFET tap devices. In that case, these devices are excluded from the block-level based current distribution. The following is an example of the file:

I1 VDD 0.001
I1.I2 VDD 0.005
I1.I2/I3 VDD 0.00001
I1.I2.I3/I4 VDD 0.000005
I1 VSS -0.005
I1.MPM1@19 VDD 0 //exclude tap device from current assignment
I1.MPM3@15 VDD 0.0001 //define tap device current,exclude from current assignment
x0.QQ0 VSS 0.1 b   //define current for non-MOSFET device and terminal

The accuracy of static EMIR analysis strongly depends on the detailed current information provided in static_ifile. Therefore, it is highly recommended to provide the current consumption for every subcircuit instance.

The results of static EMIR analysis are written to the same IR drop and EM current text reports, and into the same EM binary database as dynamic EMIR analysis.

Only one of static or dynamic EMIR analysis can be performed from the same simulation session, and not both. When you run an static EMIR analysis, all other Spectre FX analyses, such as dc and tran are ignored.

Static EMIR analysis can also be applied to designs with power gates. For this, you need to specify the pwrgate option, as follows:

net name=[I1.VDD] analysis=[vavg iavg]
static ifile="static_currents.txt" 
net pwrgate=[I1.VDD I1.VDD_INT] analysis=[vavg iavg]

You need to specify the power gate current in the static_currents.txt file, as shown below.

I1 VDD 0.001
I1 VDD_INT 0.0005

The static EMIR current file for the top-level EMIR subcircuit can be generated while running a dynamic EMIR analysis by using the output=power option in the time window statement.

Spectre FX EMIR Analysis Using Voltus-XFi

Voltus-XFi Custom Power Integrity Solution is used for transistor-level power and signal integrity analysis, which includes multi-mode simulation for EM and IR analysis. This solution combines Cadence® Quantus™ RC extraction, Spectre FX EMIR simulation, and Voltus-XFi visualization in the Cadence Virtuoso® platform. This combination of products simplifies the use model of the flow by using a common setup for all the tools. You do not have to run the flow in separate steps.


Return to top
 ⠀
X