Product Documentation
Voltus-Fi Custom Power Integrity Solution XL User Guide
Product Version IC23.1, August 2023

4


EM Rules Specification

This section contains information about the EM rule requirements in Voltus-Fi-XL.

EM Rule File Requirements in Voltus-Fi-XL

Before running EMIR analysis in Voltus-Fi-XL, you need to specify the EM reliability rules. EM rules are defined in the technology files. The Voltus-Fi - Spectre EMIR solution supports the following technology file formats:

The ICT file contains the process information for the design and information about the EM rules. This is a text-based file that can be edited using any text editor. You can either specify the ICT file directly as an input for EM analysis or use the information in the ICT file to update the qrcTechFile.

Related Topics

Parameters for Limit-Based EM Analysis in Voltus-Fi-XL

Voltus-Fi-XL supports parameters for only limit-based EM analysis. The following parameters can be used to specify EM rules in the ICT EM file. The EM rules might also be embedded in the ICT file or the qrcTechFile.

Parameter Name

Description

em_vcwidth <value>

Optional parameter for via layers that defines the minimum size via that is used by the software to identify single square via.

em_W_n

Optional parameter that specifies the wire width in microns below which a line is considered narrow. All lines are considered wide unless you specify otherwise using this parameter

It helps to select the rule between em_jmax_*_w and em_jmax_*_n. If w < em_W_n , then em_jmax_*_n is selected, otherwise em_jmax_*_w selected.

em_jmax_dc_rms_metal_line_factor

Defines the relationship between the value of power on metal lines and the Irms rating values for DC RMS analysis.

em_jmax_ac_rms_metal_line_factor

Defines the relationship between the value of power on metal lines and the Irms rating values for AC RMS analysis.

em_ac_rms_context_aware_pitch_num

Specifies the pitch count values for RMS relaxation for AC RMS analysis in the context-aware RMS Relaxation flow.

For example,

em_ac_rms_context_aware_pitch_num 5

The context-aware RMS Relaxation flow is foundry-specific. For more information, contact your Cadence representative.

em_dc_rms_context_aware_pitch_num

Specifies the pitch count values for RMS relaxation for DC RMS analysis in the context-aware RMS Relaxation flow.

For example,

em_dc_rms_context_aware_pitch_num 5

The context-aware RMS Relaxation flow is foundry-specific. For more information, contact your Cadence representative.

em_jmax_ac_rms_context_aware_factor

Specifies the benefit factor for RMS relaxation for AC RMS analysis in the context-aware RMS Relaxation flow.

For example,

em_jmax_ac_rms_context_aware_factor 1.5   srms_0>= 0.008 srms_1> 0.0004

Where,

srms_0 is the worst srms value in the neighboring area within the context-aware region of the parasitic.

srms_1 is the second worst srms value in the neighboring area within the context-aware region of the parasitic.

The context-aware RMS Relaxation flow is foundry-specific. For more information, contact your Cadence representative.

em_jmax_dc_rms_context_aware_factor

Specifies the benefit factor for RMS relaxation for DC RMS analysis in the context-aware RMS Relaxation flow.

For example,

em_jmax_dc_rms_context_aware_factor 1.5   srms_0>= 0.008 srms_1> 0.0004

Where,

srms_0 is the worst srms value in the neighboring area within the context-aware region of the parasitic.

srms_1 is the second worst srms value in the neighboring area within the context-aware region of the parasitic.

The context-aware RMS Relaxation flow is foundry-specific. For more information, contact your Cadence representative.

em_segment_length

A process definition parameter that determines how to calculate the length of a wire segment. This parameter determines whether the segment length is of the type perimeter, centerline, or total. The difference between the different length types is as follows:

  • perimeter: specifies that the length calculation is along the wire’s outer edge boundary. This value is used for 28nm process nodes.
  • centerline: specifies that the length is extended to the edge of the segment along the centerline path. This value is used for 20nm process nodes.
  • total: specifies that the segment length is calculated by adding the path lengths of all the resistors in the segment.

em_recover

Optional parameter that specifies the recovery factor used for calculating the average current density with recovery. You can set the recovery factor to -1.0 when you want to account for the average of the absolute current (avg(abs(current))) so that the negative current does not cancel the positive current values in arriving at the average current result.

Default: 1

Range: A positive integer or floating point number

Related Topics

Supported Current Density Keywords in Voltus-Fi-XL

The table below lists the Current Density (JMAX) keywords that can be specified in the ICT EM file.

Keyword

Description

em_jmax_dc_avg*

Optional keyword that specifies the DC AVG analysis in Voltus-Fi-XL

em_jmax_ac_avg*

Optional keyword that specifies the AC AVG analysis in Voltus-Fi-XL

em_jmax_dc_peak*

Optional keyword that specifies DC PEAK analysis in Voltus-Fi-XL

em_jmax_ac_peak*

Optional keyword that specifies AC_PEAK analysis in Voltus-Fi-XL

em_jmax_dc_rms*

Optional keyword that specifies DC RMS analysis in Voltus-Fi-XL

em_jmax_ac_rms*

Optional keyword that specifies AC RMS analysis in Voltus-Fi-XL

em_jmax_ac_rec

Optional keyword that specifies the maximum recovery AC current analysis in Voltus-Fi-XL.

Where star ‘*’ implies that ‘_w’ and ‘_n’ rules are also supported.

For example,

Related Topics

EM Model Syntax

em_model {
# Width Independent parameters are not affected by width or area
[em_vcwidth <value>]
[em_W_n <value>]
[em_recover <value>]
# Parameters applying specifically to narrow or wide wires
[em_jmax_ac_avg_n <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[em_jmax_ac_avg_w <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[em_jmax_ac_peak_n <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[em_jmax_ac_peak_w <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[em_jmax_ac_rms_n <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[em_jmax_ac_rms_w <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[em_jmax_ac_rec_n <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[em_jmax_ac_rec_w <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[em_jmax_dc_avg_n <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[em_jmax_dc_avg_w <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[em_jmax_dc_peak_n <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[em_jmax_dc_peak_w <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[em_jmax_dc_rms_n <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[em_jmax_dc_rms_w <value>]
     [jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
# Width dependent parameters for a conductor or diffusion layer
[em_jmax_ac_avg <value> | <value_1> <width_1> [...] | EQU <fn(E)> ]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>.....]
[via_range <value>]
[em_jmax_ac_peak <value> | <value_1> <width_1> [...] | EQU <fn(E)> ]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>.....]
[via_range <value>]
[em_jmax_ac_rms <value> | <value_1> <width_1> [...] | EQU <fn(E)> ]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>.....]
[via_range <value>]
[em_jmax_ac_rec <value> | <value_1> <width_1> [...] | EQU <fn(E)> ]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>.....]
[via_range <value>]
[em_jmax_dc_avg <value> | <value_1> <width_1> [...] | EQU <fn(E)> ]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>....]
[via_range <value>] [L < | <= | > | >= <value in microns>]
     [W < | <= | > | >= <value in microns>]
[em_jmax_dc_peak <value> | <value_1> <width_1> [...] | EQU <fn(E)> ]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>.....]
[via_range <value>] [L < | <= | > | >= <value in microns>]
     [W < | <= | > | >= <value in microns>]
[em_jmax_dc_rms <value> | <value_1> <width_1> [...] | EQU <fn(E)> ]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>....]
[via_range <value>] [L < | <= | > | >= <value in microns>]
     [W < | <= | > | >= <value in microns>]
# Area dependent parameters for a via layer
[em_jmax_ac_avg <value> | <value_1> <area_1> [...] | EQU <fn(E)>]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>.....]
[current_direction up|down|both] [via_range <value>]
[em_jmax_ac_peak <value> | <value_1> <area_1> [...] | EQU <fn(E)>]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>.....]
[current_direction up|down|both] [via_range <value>]
[em_jmax_ac_rms <value> | <value_1> <area_1> [...] | EQU <fn(E)>]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>.....]
[current_direction up|down|both] [via_range <value>]
[em_jmax_ac_rec <value> | <value_1> <area_1> [...] | EQU <fn(E)>]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>.....]
[current_direction up|down|both] [via_range <value>]
[em_jmax_dc_avg <value> | <value_1> <area_1> [...] | EQU <fn(E)>]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>....]
[current_direction up|down|both] [via_range <value>]
[L < | <= | > | >= <value in microns>]
     [W < | <= | > | >= <value in microns>]
[em_jmax_dc_peak <value> | <value_1> <area_1> [...] | EQU <fn(E)>]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>....]
[current_direction up|down|both] [via_range <value>]
[L < | <= | > | >= <value in microns>]
     [W < | <= | > | >= <value in microns>]
[em_jmax_dc_rms <value> | <value_1> <area_1> [...] | EQU <fn(E)>]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>.......]
[current_direction up|down|both] [via_range <value>]
[L < | <= | > | >= <value in microns>]
     [W < | <= | > | >= <value in microns>]

}

Special Variables in ICT-EM File

The following list of special variables are defined by Cadence. You must not define these variables as custom variables in the ICT-EM file. It is recommended to contact your Cadence representative if you wish to use these variables in the file.

a

areaCM2

bridgeVia

cdf_percentage

color

connect_pin

context_benefit_
factor

delta_T

delta_Td

designRes

dynamicTj

hi_em

Iabs_avg

Iabs_B_max

Iabs_C_max

Iabs_max

Iacpeak_max

Iavg

Iavg_B_max

Iavg_C_max

Iavg_max

Iavg_sh_max

Idc_max

Imax_pulse

Imax_wind

Imin_pulse

Imin_wind

Ineg_avg

Ineg_max

Ipeak

Ipeak_max

Ipeak_pulse

Ipeak_sh_max

Ipeak_wind

Ipos_avg

Ipos_max

Irms

Irms_max

Irms_sh_max

Itolerance

jmax_factor_
multiplier

jmax_life_multiplier

l

La

La_x

La_y

Lb

length_benefit_not_
eligible

length_benefit_not_
eligible_bottom

length_benefit_not_
eligible_upper

Lu

Lv

Lv2v

Lv2v_priority

Lv2v_rms

mask

N

net_type

pgRail

power_rail_w

priority

pulseW

r

redundant

rmsMultiplier

segment_W

segment_Wb

segment_Wu

singleSquareVia

special_geometry

special_geometry_
bottom

special_geometry_
upper

srms

stack_down_via

stack_up_via

Sv

T

tau

tau_n

tau_narrow

tau_p

tau_wide

Td

thickness

Tj

Tlife

Tref

Tsh

Vg

viaPairDistance

viaPairTWb

viaPairTWu

VO_LL_min

VO_LLb_min

VO_LLu_min

VO_LQ_min

VO_LQb_min

VO_LQu_min

VO_LS_min

VO_LSb_min

VO_LSu_min

VO_min

VO_QL_min

VO_QLb_min

VO_QLu_min

VO_QQ_min

VO_QQb_min

VO_QQu_min

VO_QS_min

VO_QSb_min

VO_QSu_min

VO_SL_min

VO_SLb_min

VO_SLu_min

VO_SQ_min

VO_SQb_min

VO_SQu_min

VO_SS_min

VO_SSb_min

VO_SSu_min

VOb_min

VOu_min

Vu_current_direction

w

W_S

Wb

Wb_S

Wu

Wu_S

Wv

Rules for Defining EM Parameters in Voltus-Fi-XL

An example of the EM rule for defining the em_jmax_dc_avg parameter is provided below:

[em_jmax_dc_avg <value> | <value_1> <area_1/width_1> [...] | EQU <fn(E)>]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>.......]]
[current_direction up | down | both]
[via_range <value>]
[conditions]
[single]
[power_rail/power_grid    ]
[priority==<priority no.>]
[device==”<device model names>”]
[sub_conductor=="<subconductor names>"]
[color=="<list of color no.>"]
[mask==<mask no.>]

All other EM parameters are defined with the same structure but apply to different characteristics of the em_model (peak current versus average for instance). The following rules apply to all the limit-based em_model parameters:

Rules for Specifying Via Area

You can specify PWL in either one of the following ways:

Rules for Specifying the EM Analysis Type for Power and Ground Nets

Set the variable, splitACDCRules, to true for specifying different rules for EM analysis of power and signal nets. You can set this variable in the following ways:

The table below shows the rules for power and signal nets both when the variable is set and not set.

splitACDCRules is set to false splitACDCRules is set to true Description
Power and Signal Nets Power Nets Signal Nets
  • em_jmax_dc_peak rules are used when MAX analysis is specified
  • em_jmax_ac_peak rules are used when ACPEAK analysis is specified
If ACPEAK analysis is specified but the em_jmax_ac_peak rules are not specified in the technology file, then em_jmax_dc_peak rules are used for the ACPEAK analysis.

em_jmax_dc_peak

em_jmax_ac_peak

em_jmax_dc_avg

em_jmax_dc_avg

em_jmax_ac_avg

em_jmax_ac_rms

em_jmax_dc_rms

em_jmax_ac_rms

EM Rule Selection Priority

This section details the order of priority in which the EM rules are applied by Voltus-Fi-XL based on the specified keywords. The order of priority of keywords in descending order is provided below:

  1. device --> highest priority
  2. sub_conductor
  3. bridge_via
  4. priority
  5. power_grid/power_rail
  6. color
  7. mask
  8. current_direction
  9. Conditions
  10. Area matching in case of PWL
  11. Base rule
  12. Optimistic/pessimistic rules --> lowest priority

These are detailed below.

Example

Consider the two scenarios provided below for EM rule selection.

The given rule set is as follows:

1. em_jmax*… current_direction up L>=5
2. em_jmax*… current_direction up L<5
3. em_jmax*… current_direction down L>=5
4. em_jmax*… L<5

Case 1: EM rule selection for a resistor with current direction “up” and with L==3 will be as follows:

The final rule selection in Case 1 will be rule 2.

Case 2: EM rule selection for a resistor with current direction “down” and L==2 will be as follows:

The final rule selection in Case 2 will be rule 4.

Process

process "name" {
# Specify silicon based erosion tables
use_silicon_density true
background_dielectric_constant value
layout_scale value
temp_reference value
# EM_Model parameters
[em_tref <value>]
[em_output_wlt <silicon|drawn>]
[em_variables <variable1> [<variable2> [ ...]]]
[em_conductor_unit A/cm^2 | mA/um | mA]
[em_via_unit A | mA ]
[em_via_area_unit A/cm^2 | mA ]
[em_lifetime_units hours | years]
}

The process command specifies key characteristics of the device, such as background dielectric constant, reference temperature, and overall scale.

Arguments

"name"

Specifies the name of the process.

background_dielectric_constant value

Specifies the dielectric constant for the region above the top or last dielectric layer. This field is required.

layout_scale value

Specifies the ratio of the scaled dimensions divided by the drawn dimensions. The ICT file is defined based on the scaled dimensions.

temp_reference value

Specifies the reference temperature in degrees Celsius.

EM_Model parameters

The process definition parameters described below are provided to establish variables or properties that apply to all em_models in the ICT file, across all layers. All process parameters for EM models are optional.

em_tref <value>

Specifies nominal temperature for EM analysis specified in Celsius.

em_output_wlt [silicon | drawn]

This determines whether the width and length parameters are written out as drawn dimensions or silicon dimensions.

em_variables <variable1> [<variable2> [...]]

Globally declares variables used inside the EM models. Examples of variables are: delta_T, w, l. The analysis tool will calculate the value for the variable as it applies to a specific em_model and apply that value during EM analysis. Variables can be declared as a string, with a space between variables. There is no default variable defined.

em_conductor_unit [ A/cm^2 | mA/um | mA]

Specifies the units to use for current density limits on conductor layers. The choices are amps per square centimeter (A/cm^2), milliamps per micron (mA/um), and milliamps (mA). Most processes use equation to specify current limit in mA (default value). The selection is not case-sensitive.

em_via_unit [ A | mA ]

Specifies the units to use for current density limits on via layers on a simple per via basis. The choices are amps (A) or milliamps (mA). The default is A. The selection is not case-sensitive.

em_via_area_unit [A/cm^2 | mA]

Specifies the units to use for piecewise linear (PWL) current density limits for via layers using density/area value pairs. The choices are amps per square centimeter (A/cm^2) or milliamps (mA).

The default is A/cm^2. The selection is not case-sensitive.

EM Data File in Voltus-Fi-XL

An EM data file specifies the technology information, such as current density limits, and provides a mapping between the layers for highlighting. The EM data file syntax is case-sensitive. The file must start with parenthesis.

EM data file support in Voltus-Fi-XL is provided only for backward compatibility. It supports all the rules that were supported by APS EMIR. Any new rules are supported in the ICT file.

Following is a sample EM data file.

(
; this file is case sensitive
routingLayers = ("Poly" "Metal1" "Metal2" "Metal3" "Metal4" "Metal5" "Metal6")
viaLayers = ("Cont" "Nimp" "Pimp" "Via1" "Via2" "Via3" "Via4" "Via5")
viaWidthList = (("Nimp" 0.2) ("Pimp" 0.2) ("Cont" 0.2) ("Via1" 0.2)
("Via2" 0.2) ("Via3" 0.2) ("Via4" 0.2) ("Via4" 0.2))
xrefLayers = (
( "POLYcont" ("Cont" "Cont"))
( "NSDcont" ("Nimp" "Nimp"))
( "PSDcont" ("Pimp" "Pimp"))
( "poly" ("Poly" "Poly"))
( "mt1" ("Metal1" "Metal1"))
( "mt2" ("Metal2" "Metal2"))
( "mt3" ("Metal3" "Metal3"))
( "mt4" ("Metal4" "Metal4"))
( "mt5" ("Metal5" "Metal5"))
( "mt6" ("Metal6" "Metal6"))
( "Via2NoCapInd" ("Via2" "Via2"))
( "Via2" ("Via2" "Via2"))
)
avgCurrentDensSpecList = (
(nil layer "Poly" minW 0.0 maxW -1.0 minL 0 maxL 5 currentDensity ((1.0 , 110)))
(nil layer "Metal1" minW 0.0 maxW -1.0 currentDensity ((1.1 , 110)))
(nil layer "Metal2" minW 0.0 maxW -1.0 currentDensity ((1.2 , 110)))
(nil layer "Metal3" minW 0.0 maxW -1.0 currentDensity ((1.3 , 110)))
(nil layer "Metal4" minW 0.0 maxW -1.0 currentDensity ((1.4 , 110)))
(nil layer "Metal5" minW 0.0 maxW -1.0 currentDensity ((1.5 , 110)))
(nil layer "Metal6" minW 0.0 maxW -1.0 currentDensity ((1.6 , 110)))
(nil layer "Cont" minW 0.0 maxW -1.0 res 1.0 currentDensity ((2.0 , 110)))
(nil layer "Nimp" minW 0.0 maxW -1.0 res 1.1 currentDensity ((2.1 , 110)))
(nil layer "Pimp" minW 0.0 maxW -1.0 res 1.2 currentDensity ((2.2 , 110)))
(nil layer "Via1" minW 0.0 maxW -1.0 res 1.3 currentDensity ((2.3 , 110)))
(nil layer "Via2" minW 0.0 maxW -1.0 res 1.4 currentDensity ((2.4 , 110)))
(nil layer "Via3" minW 0.0 maxW -1.0 res 1.5 currentDensity ((2.5 , 110)))
(nil layer "Via4" minW 0.0 maxW -1.0 res 1.6 currentDensity ((2.6 , 110)))
(nil layer "Via5" minW 0.0 maxW -1.0 res 1.7 currentDensity ((2.7 , 110)))
)
peakCurrentDensSpecList = (
(nil layer "Poly" minW 0.0 maxW -1.0 currentDensity ((1.1 , 110)))
(nil layer "Metal1" minW 0.0 maxW -1.0 currentDensity ((1.2 , 110)))
(nil layer "Metal2" minW 0.0 maxW -1.0 currentDensity ((1.3 , 110)))
(nil layer "Metal3" minW 0.0 maxW -1.0 currentDensity ((1.4 , 110)))
(nil layer "Metal4" minW 0.0 maxW -1.0 currentDensity ((1.5 , 110)))
(nil layer "Metal5" minW 0.0 maxW -1.0 currentDensity ((1.6 , 110)))
(nil layer "Metal6" minW 0.0 maxW -1.0 currentDensity ((1.7 , 110)))
(nil layer "Cont" minW 0.0 maxW -1.0 res 1.0 currentDensity ((2.1 , 110)))
(nil layer "Nimp" minW 0.0 maxW -1.0 res 1.1 currentDensity ((2.2 , 110)))
(nil layer "Pimp" minW 0.0 maxW -1.0 res 1.2 currentDensity ((2.3 , 110)))
(nil layer "Via1" minW 0.0 maxW -1.0 res 1.3 currentDensity ((2.4 , 110)))
(nil layer "Via2" minW 0.0 maxW -1.0 res 1.4 currentDensity ((2.5 , 110)))
(nil layer "Via3" minW 0.0 maxW -1.0 res 1.5 currentDensity ((2.6 , 110)))
(nil layer "Via4" minW 0.0 maxW -1.0 res 1.6 currentDensity ((2.7 , 110)))
(nil layer "Via5" minW 0.0 maxW -1.0 res 1.7 currentDensity ((2.8 , 110)))
)

iRCX Files for EM analysis

Voltus-Fi supports interoperable interconnect extraction (iRCX) files as an input for running EM analysis. This file contains process and EM model information for EM analysis and is provided by the foundry.

The iRCX file is further divided into two separate files, iRCX-RC and iRCX-EM. The iRCX-RC file is an encrypted file that contains confidential technology information of the foundry, whereas the iRCX-EM file is a plain text file that contains EM model information. The iRCX-EM file can further be converted into the ICT-EM file.

The iRCX-EM file is supported in both the qrcTechFile flow and the emDataFile flow. However, the qrcTechFile flow is the recommended flow to be used in Voltus-Fi-XL.

Set the following parameters in the EMIR control file (emir.conf) to directly use an iRCX file in Voltus-Fi-XL:

emirutil rcIrcxFile=[./RC_your_file.ircx]

emirutil emirIrcxFile=[./EMIR_your_file.ircx]

Support of iRCX Files in the qrcTechFile Flow

When you get a new iRCX or ICT-EM file from the foundry, you must update the qrcTechFile with the updated EM model information using the Techgen utility.

The Techgen utility is located in the bin directory of the Quantus installation tree. For newer process nodes, use the latest EXT release to ensure correctness.

You can use one of the following ways to update the qrcTechFile using Techgen:

Note:

Support of iRCX Files in the emDataFile Flow

When you get a new iRCX file, you must convert it to the ICT format using the ircxtoict utility and then generate an emDataFile using the ict2emfiles utility.

The ircxtoict utility is located in the bin directory of the Quantus installation tree. The ict2emfiles utility is located in the bin directory of the Voltus-Fi installation tree.

Do the following:

  1. Use the following command to convert the iRCX file to the ICT format with EM rules:
    ircxtoict –i <ICT output> <iRCX file>
  2. Use the following command to generate the emDataFile:
    ict2emfiles -i <ict_file> <-eps|-ic|-both> [-im <mapping_file>] [–w <width_file> OR –l <lef_technology_file> -lm <lefdef_layer_map>]

Conversion of EM Data File into ICT File

Voltus-Fi-XL supports the conversion of an EM data file (emDataFile) into an interconnect technology (ICT) file in batch mode. The converted ICT file can then be used, both in batch and GUI modes, to perform EM analysis in Voltus-Fi-XL.

To convert an EM data file into an ICT file, perform the following step:

convert_emdatafile_to_ict

convert_emdatafile_to_ict
-emDataFile emDataFile_path \
[-ictfile converted_ict_file] \
[-cmdfile additional_cmd_file] \
-extracted_lib_name lib_name \
-extracted_cell_name cell_name \
-extracted_view_name view_name 

Converts the specified EM data file into an ICT file to be used for performing EM analysis in Voltus-Fi-XL.

Parameters

-cmdfile additional_cmd_file

Specifies the name of the command file that is generated from the specified emDataFile. If this parameter is not specified, a file with the name additional.cmd is created in the current working directory.

This is an optional parameter.

-emDataFile emDataFile_path

Specifies the location of the emDataFile that is to be converted into the ICT file.

This is a required parameter.

-extracted_cell_name cell_name

Specifies the cell name for the design.

This is a required parameter.

-extracted_lib_name lib_name

Specifies the library name for the design.

This is a required parameter.

-extracted_view_name view_name

Specifies the view name for the design.

This is a required parameter.

-ictfile converted_ict_file

Specifies the name of the converted ICT file. If this parameter is not specified, a file with the name, toolgenerated.ict is generated in the current working directory.

This is an optional parameter.

Example

In the following example, the emDataFile.txt file in the amsPLL/vco/layout cellview is converted into the myict.ict file. The command file, mycmd.cmd, is generated from the emDataFile.txt file.

convert_emdatafile_to_ict \
-emDataFile emDataFile.txt \
-ictfile myict.ict \
-cmdfile mycmd.cmd \
-extracted_lib_name amsPLL \
-extracted_cell_name vco \
-extracted_view_name layout

Supported EM Rules for Converting EM Data File into ICT File

The following EM rules are supported in the conversion of an EM data file into an ICT file:

Rule Description

currentDensityMPV

Specifies the current density of via in milliamps per via instead of the standard milliamps per micron.

deltaT

Specifies the maximum rise in temperature in degree Celsius, caused due to Joule heating. It must be a positive value. If the value is not specified, Voltus-Fi uses a default value of 5 degree Celsius. This is an ideal condition where the design must be EM free.

deltaT can be used in defining the Current Density limit: Irms

For example,

(nil layer "M1" minW 0.09 maxW 12.0 currentDensity 

(((sqrt(18.33*deltaT*(w-.016)*(w-.016)*(w-.016+.352)/(w-.016+.0443) )/w), 110)))

recoveryFactor

Calculates the effective DC electromigration in bipolar current wave forms. This accounts for some 'sweep back recovery' of EM during the negative portion of the current wave form. The recovery factor is specified in the EM Rules specification file as:

recoveryFactor=<value>

where the user-specified value ranges from 0 to 1.0. The default value is 1.

The following equation shows how the recovery factor is used by the software while calculating the total average EM current:

I (avg) = max( I+, I- ) - (recovery factor)* min( I+, I-)

where I+ is the average of I in the positive direction and I- is the average of I in the negative direction.

recoveryFactorList

Specifies the list of layers and the corresponding recovery factors to be used for these layers during EM analysis. The following example shows how different recovery factors are specified for layers, Via1 and mt1.

recoveryFactorList=(("Via1" 0.7)("mt1" 0.3))
If both recoveryFactor and recoveryFactorList are specified, the list of layers and their corresponding values specified using the recoveryFactorList keyword get preference.

cadGrid

Specifies the minimum width of parasitic resistor. The unit of measurement is micrometer (um) or micron.

routingLayers

Specifies the names of the DFII layers that are used for routing. Include only the poly and metals. For example:

routingLayers=("poly1" "m1" "m2" "m3" "m4" "m5" "m6" "m7" "m8" "m9" "MD")

viaLayers

Specifies the DFII layer names of via layers.

( Metal1      Cont            Poly)//the via layer is Cont

An example of the viaLayers syntax follows:

viaLayers=("cw" "v1" "v2" "v3" "v4" "v5" "v6" "v7" "v8")

xrefLayers

These are the cross-reference layers that provide mapping between the Quantus layer names, Current Density names, and the DFII layer names. If a layer is not present in xreflayers mapping, its DFII name is used as the Current Density name and Quantus name.

(("QuantusName" ("currentDensityName" "DFIIName"))

CurrentDensSpecList

Refers to the Current Density specification declared by the foundry. The syntax allows one layer to support two different Current Density specifications according to the width of the material. The following Current Density specifications are supported: avgCurrentDensSpecList, avgAbsCurrentDensSpecList, rmsCurrentDensSpecList, DCrmsCurrentDensSpecList, peakCurrentDensSpecList, and ACpeakCurrentDensSpecList

The following optional parameters are supported:

minW, maxW, minL, maxL, minLu, maxLu, minWu, maxWu, minWb, maxWb, minLb, maxLb

The conversion procedure of emDataFile to ICT file categorizes the Current Density specification rule in the following two ways:

Standard Form:(EQU/w)*JmaxFactor

Non-Standard Form: Any form except the above. The software uses interpolation for specifying the EM Rules in the ICT file.

LayerStack

The layer stack contains a list of via names and the corresponding upper metal and bottom metal layer names.

(("LayerName" ("upperMetalLayerName" "bottomMetalLayerName"))
  • LayerName is the layer name specified in the layout view
  • upperMetalLayerName is the upper metal layer name in the layout view
  • bottomMetalLayerName is the bottom metal layer name in the layout view

viaWidthList

Specifies the minimum via width. For example:

viaWidthList=(("Cont" 0.2)("Via1" 0.2))

Where,

Cont is the DFII name of via layer.

0.2 is the minimum width of the default via for this layer.

extViaWidthList

Specifies the minimum via width. For example:

extViaWidthList=(("extCont" 0.2)("extVia1" 0.2))

Where

extCont is the Quantus (Extraction) name of via layer.

0.2 is the minimum width of the default via for this layer.

viaWidthList will be ignored if extViaWidthList is specified.

DesignResistors

Specifies the list of design resistor cell names. For each cell name, you can specify the resistor property name, width property name, length property name, and units for width and length property names for which the design resistors are to be analyzed.

The default unit for both width and length property name is meter. Specifying the resistor property name, width property name, length property name, and unit name is optional. If any of these property names is not specified, the software uses “r”, “w”, and “l” as the default values for these properties.

The width and length property names are specified when the names of these properties are different from the “w” and “l” in the layout view.

Syntax:

DesignResistors = ("CellName1" "CellName2" "CellName3")
DesignResistors = ("CellName.*")

junctionTemp

Specifies the temperature to be used for EM analysis. Used as tj in ICT.

applyRThreshold

Specifies the threshold ratio r for AC-Peak analysis. The default value of threshold ratio is 0.05.

rmsMultiplierPin

Specifies the RMS relaxation factor for EM power-grid analysis. The default value is 1.0.

rmsMultiplierSignal

Specifies the RMS relaxation factor for signal EM analysis. The default value is 1.0.

Unsupported EM Rules for Converting EM Data File into ICT File

The following EM rules are not supported in the conversion of an EM data file (emDataFile) into an ICT file:     

Rule Description

Jmaxlife

Specifies the scaling factor that applies to the Current Density limits for different lifetimes.

BulkTerminal

Specifies the bulk terminals of the design resistors that are to be ignored while performing EM analysis.

minI

Used to limit the reporting of small currents that are of little or no interest.

durationTime

Specifies the maximum time period for which violations are allowed.

technologyNode

Specifies the technology-dependent calculation.

viaLengthList

Specifies the via length.

extViaLengthList

Specifies the via length. It get preference over viaLengthList.

selectResistors

Selects resistors by their names. All other resistors are ignored for the analysis.

selectLayers

Selects resistors based on the layer name. All resistors on other layers will be ignored for the analysis.

ignoreLayers

Ignores resistors based on the extracted layer name. All resistors on other layers will be selected for the analysis.

ignoreResistors

Ignores resistors by their name. All other resistors will be selected for the analysis.

meshR

Specifies regions for mesh resistance extraction.

fracture_vias

Specifies whether or not there are dummy vias present.

Thickness

Specifies the thickness of the layers.

preExecuteFiles

Includes the list of pre-loaded custom files when reading the emDataFile.


Return to top
 ⠀
X