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 Quantus technology file (
qrcTechFile) - The ICT, ICT-EM (EM Rules only) file
- Interoperable interconnect extraction (iRCX) file
-
The EM data file (
emDataFile).
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
- Conversion of EM Data File into ICT File
- Parameters for Limit-Based EM Analysis in Voltus-Fi-XL
- Supported Current Density Keywords in Voltus-Fi-XL
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.
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.
Where star ‘*’ implies that ‘_w’ and ‘_n’ rules are also supported.
-
em_jmax_ac_peak_wis an optional parameter that is essentially the same asem_jmax_ac_peak, with the exception that it is specified for wide wires (as defined byem_W_n). -
em_jmax_ac_peak_nis an optional parameter that is essentially the same asem_jmax_ac_peak, with the exception that it is specified for narrow wires (as defined byem_W_n).
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.
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:
-
Single Value Current Density
Specifying a single value or an equation is an enhancement for width or area dependent parameters (such asem_jmax_ac_avg). -
Piece-wise Linear (PWL) Interpolation
In a width-dependent model for a conductor layer, or for an area-dependent model for a via layer, PWL interpolation uses a series of data points that are points on a graph of X versus Y, where X can be either a value or an expression and Y is a value. For example, current density value and area<value1> <area1>, current density value and width<value1> <width1>, current density expression and area<expression1> <area1>, or current density expression and width<expression1> <width1>.
The following syntax are supported:em_jmax_dc_avg PWL <value1> <area1/width1> <value2> <area1/width1>
em_jmax_dc_avg PWL (<value1> <area1/width1> <value2> <area1/width1>)
em_jmax_dc_avg PWL (<expression1> <area1/width1> <expression2> < area1/width1>)
For example:em_jmax_dc_avg PWL 0.3582 0.001444 0.5694 0.003364 0.7164 0.0038
em_jmax_dc_avg PWL (0.3582 0.001444 0.5694 0.003364 0.7164 0.0038)
em_jmax_dc_avg PWL (0.05*0.5 0.002 0.1*0.5 0.004 0.2*0.5 0.008)
-
Equations in EM Model
The EQU keyword denotes the definition of an equation for current density.
An EOL or one of the qualifiers (jmax_factor,current_direction,orsingle) marks the end of an equation specifying the Current Density limit. If the equation resolves into two separate equations, then this will result in an error.
For EQU, the following operators (not case-sensitive) are supported:
Where,expr1is a conditional expression. Ifexpr1evaluates totrue, thenexpr2is evaluated, elseexpr3is evaluated.
For example:
Life_factor= ((A < 5 and B > 2)? 3:4)
em_jmax_dc_avg EQU 3.0*w * Life_factor jmax_factor 50 1.1 110 1.0 125 0.92 L > 5Square brackets ‘Spaces are permitted to make an equation more readable.[]’ are not supported. A comma ‘,’ implies multiple equations, and results in an error. The period ‘.’ is ambiguous and should not be used to indicate multiplication (use * instead).
Variables within equations will be populated by the analysis tool at run-time. Use theem_variablesparameter in the process definition to globally declare variables that are used within the variousem_models. List of supported variables are provided below:-
a:area of the resistor -
w:width -
l:length -
La:length of pseudo via -
La_x:length of pseudo via along the x-axis -
La_y: length of pseudo via along the y-axis -
N:number of vias -
delta_T: rise in temperature in degree Celsius -
r:duty ratio -
Tref: refers toem_tref, the nominal temperature for EM analysis defined in the process section of the ICT file. Ifem_trefis not defined, then default value(110C) is set. -
cdf_percentage: This variable lets you use the value specified using the keywordcdf_percentagein the emir config file or command file, in the EM rules. For example,conductor "m1" {
min_spacing 0.3
min_width 0.3
height 1.05
thickness 0.53
resistivity 0.1
gate_forming_layer false
thermal_conductivity 0.39
em_model {
cxyz=exp(normsinv(cdf_percentage*10.0))
em_jmax_dc_avg EQU 2*w*cxyz L > 5
em_jmax_dc_avg EQU 3*w*cxyz L <= 5
}
}
-
Tlife: This variable provides the value of lifetime at which EM analysis is performed. This value can be specified in hours or years.
The value of lifetime can be specified in the config file as follows:emirutil Tlife = "20000 hours"
It can also be specified in techfile in the process block section as follows:em_lifetime 20000
-
jmax_factor_multiplier: This variable provides the value of jmax_factor for the resistor. -
jmax_life_multiplier: This variable provides the value of jmax_life for the resistor.
For example:derate = jmax_factor_multiplier * jmax_life_multiplier
em_jmax_dc_avg EQU 3.0*derate jmax_factor 50 1.1 110 1.0 125 0.92 L > 5
The equation definition ends when reaching the end of line (EOL) or another keyword (jmax_factor, current_direction, orsingle).
The following are supported for equations in the ICT EM file:-
Support for min max functions: The min and max functions accepts two arguments:
min(a,b) => It returns the smallest value of a and b
max(a,b) => It returns the largest value of a and b
Nested min and max functions are also supported as shown below:min(a, max(b, c))
max(max(a, b), c)
min(min(a, b), max(c, d))
max(min(a, b), max(c, d))
-
Support for defining the normsinv function: The
normsinvfunction accepts a single argument. It returns the value by taking the inverse normal distribution of the fractionx. The value ofxmust always be between 0 to 1.normsinv(x)
-
Support for defining variables: Variables can be defined to be used in equations specifying the current density limit. An example of how these are specified in the ICT file is shown below. In the below equation, s1, s2, s3 and s4 are variables.
em_model {
s1 = 2.0*w
s2 = s1*1.0
s3 = 3.0*w
s4 = s3
em_jmax_dc_avg EQU s2*4 jmax_factor 50 1.1 110 1.0 125 0.92 L> 5
em_jmax_dc_avg EQU s4*2 jmax_factor 50 1.1 110 1.0 125 0.92 L<=5
}
-
Support for keyword “cond” and logical operator “not”: The keyword “cond” can be used to group multiple conditions logically for EM rules. for example:
em_jmax_dc_avg EQU 0.1*w cond (L <=0.024 and L>=0.026)
em_jmax_dc_avg EQU 0.2*w cond (((L == 0.020) or (L == 0.030))and (W < 0.01))
em_jmax_dc_avg EQU 0.2*w cond ( not(L == 0.020 or L == 0.030))
-
Support for jmax_factor_dc_avg and jmax_factor_ac_avg: These are specified for defining the jmax_factor information at the layer level.
jmax_factor_dc_avg: specifies the jmax_factor information for the DC avg EM rules at the layer level.
jmax_factor_ac_avg: specifies the jmax_factor information for the AC avg EM rules at the layer level.
For example:conductor "M1" {
em_model {
jmax_factor_dc_avg 85 3 90 2 100 1 110 0.6 120 0.2 125 0.1
jmax_factor_ac_avg 85 3 90 2 100 1 110 0.6 120 0.2 125 0.1
em_jmax_dc_avg EQU 2 * w L < 0.5
em_jmax_ac_avg EQU 2 * w L < 0.5
em_jmax_dc_avg EQU 1.5 * w L >= 0.5
em_jmax_ac_avg EQU 1.5 * w L >= 0.5
}
}
-
Support for jmax_life_dc_avg and jmax_life_ac_avg: These are specified for defining the jmax_life information at the layer level.
jmax_life_dc_avg: specifies the jmax_life information for the DC avg EM rules at the layer level.
jmax_life_ac_avg: specifies the jmax_life information for the AC avg EM rules at the layer level.
When the lifetime has an exact match in the PWL, jmax_life gets the corresponding value from the PWL. If not, then the expression in the below syntax is evaluated to get the value of jmax_life.jmax_life_dc_avg <life1> <scale1> <life2> <scale2> <life3> <scale3> jmax_life_equ <expression>
jmax_life_ac_avg <life1> <scale1> <life2> <scale2> <life3> <scale3> jmax_life_equ <expression>
For example:jmax_life_dc_avg PWL 43800 1.8 52560 1.5 61320 1.3 70080 1.2 78840 1.1 87600 1 131400 0.6 175200 0.5 jmax_life_equ (10/Tlife)^0.9
jmax_life_ac_avg 43800 1.8 52560 1.5 61320 1.3 70080 1.2 78840 1.1 87600 1 131400 0.6 175200 0.5 jmax_life_equ (10/Tlife)^0.9
-
-
Order Dependency
The actual Current Density limit (value, piece-wise linear or PWL pairs, or equation) should follow immediately after the Current Density keyword (em_jmax_dc_avg). Any of the qualifiers (jmax_factor,current_direction, orsingle) will come after that. The order of the qualifiers is not important. -
Units of Values
The unit should be specified in accordance with the setting defined by theem_conductor_unit,em_via_unit, andem_via_area_unitparameters defined in the process definition. Units are specified as: -
JMAX Factor
jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]
jmax_factoris the optional scaling factor to use at different temperatures compared to the reference temperature (defined byem_trefin the process definition). The temperature forjmax_factorshould be specified in degrees Celsius.
Scaling factor is a positive integer:>1 to scale up, <1 to scale down, or 1 for no scale effect.
If the specified temperature,T, falls between the defined minimum and maximum temperatures, the software will calculate a new scale factor (RT) using the formula,TTF=A*J^(-n)*exp(Ea/kT).
For example:RT = RT1*exp((Ea/kT)*(1/T-1/T1))
whereEa/kT=(T1*T2/(T1-T2))*ln(RT2/RT1)
Note:
- The temperatures T, T1, and T2 mentioned in the above formula are in Kelvin.
-
If the specified temperature,
T, is either below or above the defined minimum and maximum temperatures, the software will use the minimum and maximum temperature for calculating the scale factor, respectively. - When setting scale factors for multiple temperatures, they should be specified in an ascending sequence to enable interpolation.
-
Format of the Conditions
Condition =[L/W/Lu/Wu/Lb/Wb/Lv2v/Sv/Td/r/a/N < | <= | > | >= | == | != <value in microns/micro seconds> | ground_net | supply_net | Vu_current_direction {up | down}] | [Itolerance < | <= | > | >= | == | != <value in percentage> ]
Conditions =[condition]*
TheLparameter specifies the length-based jmax values in microns.
TheWparameter specifies the width-based jmax values in microns.
LandWare applicable for both metals and vias.
Lu, Lb, Wu,andWbare applicable for vias only.
Lv2vandItoleranceare applicable only for thepower_railrule.
Where,
L= lengthW= WidthLu= Upper metal lengthLb= Bottom metal lengthWu= Upper metal widthWb= Lower metal widthLv2v= Distance between terminal viasSv= Distance between the two top vias enclosing a metal/via. For metals, it indicates the distance between the immediate top vias across a metal. For via, it indicates the distance between two neighboring vias with the same current direction.Vu_current_direction {up | down}= Current direction of the top vias across a metal/via. For metal, it indicates the current direction of the immediate top vias across a metal layer. For via, it indicates the current direction of the immediate top vias across a particular via.supply_net= specifies that the EM rule is applicable only to the supply netground_net= specifies that the EM rule is applicable only to the ground netItolerance= Difference in the current values of terminal vias. For example, if a difference of up to 5 percent is acceptable, then specify 'Itolerance <= 0.05'.Td= Time duration in micro second or total ‘On Time” periodr= Duty ratioa= Area of the single cut in the via or in the via arrayN= Number of vias in the via array
Voltus-Fi-XL supports metal length/width rules above and below vias, where, the dimensions to be checked for the rules are different for the metal above and the metal below. In this case,Lu/Wurefers to dimensions of the metal above the via andLb/Wbrefers to dimensions of the metal below the via. -
Single
The keyword,singlecan be specified to differentiate between a single square cut via and square viaarray. The following example shows how to use thesinglekeyword:em_jmax_dc_avg PWL 0.022 0.01 jmax_factor 105 1.1 110 1.0 115
0.9 120 0.8 125 0.7 130 0.6 140 0.5 150 0.4 current_direction up
Lb > 4 Wb >= 0.05 current_direction up single
-
JMAX Life
The keyword,jmax_lifeprovides the ability to set the scaling factor that applies to the Current Density limits for different lifetimes. The syntax is as follows:jmax_life <life1> <scale1> [<life2> <scale2>.......]
The software will take the unit of lifetime from theem_lifetime_unitsparameter specified in the process section of the ICT file. In case the specifiedlifevalue does not match any of thelifevalues provided usingjmax_life, the software performs linear interpolation to calculate theTlifefactor. -
rating_factor
The keyword,rating_factorspecifies the temperature derating factor for different lifetimes using the rating factor table. The table is used along with the global lifetime factor table that lists the lifetime variables for different lifetimes. These variables can be used in the EM equation. For example,em_model {
GLOBAL_LIFETIME_FACTOR = ( ( LIFETIME HOURS LF0 LF1 )
( 3_YEAR 26280 5.0 6.0 )
( 4_YEAR 35040 7.0 8.0 )
( DEFAULT 100000 9.0 10.0 )
)
RATING_FACTOR = (
( LIFETIME 100 105 110 115 120 125 130 140 150 )
( 3_YEAR 2.0 1.7 1.3 1.0 0.9 0.8 0.7 0.6 0.5 )
( 4_YEAR 2.0 1.6 1.4 1.2 1.0 0.4 0.3 0.2 0.1 )
( DEFAULT 1.8 1.7 1.6 1.4 1.1 0.9 0.5 0.4 0.3 )
)
em_jmax_dc_avg EQU 2.0*w*1.0*LF0 rating_factor L > 5 em_jmax_dc_avg EQU 2.0*w*3.0*LF1 rating_factor
}
Where,
The different lifetimes,3 years,4 years..., are specified in therating_factortable and the lifetime variables for these lifetimes,LFO,LFI,are specified in the global lifetime factor table. -
Length
[L < | <= | > | >= <value in microns>]
The L parameter specifies the length-based jmax values in microns. -
Width
[W < | <= | > | >= <value in microns>]
Similar to the L parameter, the W parameter specifies the width-based jmax values in microns. -
Current Direction
current_direction [up | down | both]can be specified for via current direction. The syntax ofcurrent_directionis:-
up- means the direction of the current is from bottom to top and specifies to use the length and width of the metal belowLb/Wbfor the VIA Jmax factor -
down- means the direction of the current is from top to bottom and specifies to use the length and width of the metal above Lu/Wu for VIA Jmax factor -
both- This rule is applicable only when the direction of the current is uncertain. This rule is unlikely to be applied since the software calculates the current direction
-
-
Via Range
via_range <value>
via_rangeis an optional parameter which can be used with the via layers. The value ofvia_rangedenotes the number of vias for which the calculated limits are valid.
via_rangeis specified as a positive integer. -
Power Rail/Power Grid
The keywordpower_railorpower_gridcan be specified to enable the particular EM rule for power-rail analysis. When power-rail analysis is enabled, an EM rule with thepower_railorpower_gridkeyword will have a higher priority than any other rule.em_jmax_dc_avg PWL 0.022 0.01 jmax_factor 105 1.1 110 1.0 115
0.9 120 0.8 125 0.7 130 0.6 140 0.5 150 0.4
Lb > 4 Wb >= 0.05 current_direction up
power_rail Lv2v <= 5 Itolerance <= 0.05
-
ApplyR
The keywordapplyRcan be used to modify the threshold value of ratio “r” in AC-Peak analysis. The default value of this parameter is0.05. Modifying this parameter is useful in scenarios where the value of “r” is very small. A small “r” value results in an unreasonable increase in theIpeak_aclimit. You can avoid such scenarios by resetting the value of “r” in the ICT file. For example:em_jmax_ac_peak EQU 4.0 r < 0.01 applyR 0.01
-
Priority
Specifies the priority of a rule. It is an integer number. Currently the only value that is supported is1. The syntax is as follows:priority==<integer no.>
-
Device
This keyword is used to specify different EM rules for device resistors, which are subsets of other layers. The syntax is as follows:
For example, the following keyword specifies that the particular EM rule is applicable only to device with the model names, “device=="device model names"devRA devRB”.device=="devRA devRB" -
Subconductor
This keyword is used to specify different EM rules for subconductors, which are subsets of poly or other layers. The syntax is as follows:
sub_conductor=="subconductor names"
For example, the following keyword specifies that the particular EM rule is applicable only to subconductor layers,pployandgpoly.
sub_conductor=="ppoly gpoly" -
bridge_via
This keyword is used to specify that the particular EM rule will apply only to bridge vias. -
Color
This keyword is used to specify that the particular EM rule is applicable only to the resistor with the specified color number.
For example,
color==”2 4 5”specifies that the particular EM rule is applicable only to the resistor with property,$M=2 OR $M=4 OR$M=5. -
Masks
This keyword is used to specify that the particular EM rule is applicable only to the resistor with the specified mask number.
For example,
mask==2specifies that the particular EM rule is applicable only to the resistor with property,$M=2. -
hi_em
This keyword is used to specify that the particular EM rule is applicable only to the design resistor with the specified value ofhi_emparameter.
For example,
hi_em==1specifies that the particular EM rule is applicable only to the design resistor with the property,hi_em=1.
Rules for Specifying Via Area
You can specify PWL in either one of the following ways:
-
Provide PWL for a specific area:
For example,em_jmax_* PWL Value_1 area_1 … Value_N areaNem_jmax_* PWL 1.3 2.0 1.7 3.0
-
Provide PWL for a specified area range:
em_jmax_* EQU <equation with 'a'> conditions
For example,em_jmax_* EQU (1.3 * a)/2.0 a>=0.0 a<2.5
em_jmax_* EQU (1.7 * a)/3.0 a>=2.5 N>=3
em_jmax_* EQU (1.9 * a)/3.0 a>=2.5 N<3
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:
-
setenv VOLTUSFI_SPLIT_ACDC_RULES true
set_variable splitACDCRules trueWhen this variable is specified using the set_variable command, it takes priority over the setenv variable. -
Set the variable,
splitACDCRules, totruein the Variables form. You can open this form from the EM tab of the IR/EM Results form.
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 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:
- device --> highest priority
- sub_conductor
- bridge_via
- priority
- power_grid/power_rail
- color
- mask
- current_direction
- Conditions
- Area matching in case of PWL
- Base rule
- Optimistic/pessimistic rules --> lowest priority
-
device
When a device is specified in the EM rule file, the software first looks for thedevicekeyword and applies the EM rules to the specified device.
For example, for a device with model name,devRA, if the following rules are specified in the ICT file:1. em_jmax* … device==“devRA”
2. em_jmax* … device==“devRB”
3. em_jmax* …
Then the software follows the order of priority provided below: -
sub_conductor
When a sub conductor is specified in the EM rule file, the software first looks for thesub_conductorkeyword and applies the EM rules to the specified sub conductor.
For example, for a resistor on layer,ppoly, if the following rules are specified in the ICT file:1. em_jmax* … sub_conductor==“ppoly”
2. em_jmax* … sub_conductor==“gpoly”
3. em_jmax* …
Then the software follows the order of priority provided below: -
bridge_via
When abridge_viais specified in the EM rule file, the software first looks for thebridge_viakeyword and applies the EM rules havingbridge_viakeyword for the bridge via. In case, the via is not bridge via, rules havingbridge_viakeyword will be ignored.
For example, for a bridge via, if the following rules are specified in the ICT file:1. em_jmax* … bridge_via
2. em_jmax* …
Then the software follows the order of priority provided below:
In case, the via is not bridge via, then the software will match rule 2. -
priority
When a priority is specified in the EM rule file, in the following manner:1. em_jmax* … priority==1
2. em_jmax* …
Then the software follows the order of priority provided below: -
power_rail/power_grid
When thepower_rail/power_gridkeyword is specified in the EM rule file, in the following manner:1. em_jmax* … power_grid
2. em_jmax* …
Then the software follows the order of priority provided below: -
color
When thecolorkeyword is specified in the EM rule file, in the following manner:1. em_jmax* … color==”1 3 5”
2. em_jmax* …
For example, if a resistor has color number 5, specified using$M=5, then the software follows the order of priority provided below: -
mask
When themaskkeyword is specified in the EM rule file, in the following manner:1. em_jmax* … mask==2
2. em_jmax* …
For example, if a resistor has mask number 2, specified using$M=2, then the software follows the order of priority provided below: -
current_direction
When thecurrent_directionkeyword is specified in the EM rule file, in the following manner:1. em_jmax* … current_direction up
2. em_jmax* … current_direction down
3. em_jmax* …
Then, for a resistor withcurrent_direction up, the software follows the order of priority provided below: -
Conditions
When conditions are specified in the EM rule file, in the following manner:1. em_jmax* … L <=5
2. em_jmax … L > 5
3. em_jmax* …
Then the software follows the order of priority provided below: -
Area Matching from the PWL
When the PWL for specific via areas are specified in the EM rule file, in the following manner:1. em_jmax* … PWL VAL_1 AREA_1 VAL_2 AREA_2 L <=5
2. em_jmax … PWL VAL_3 AREA_3 VAL_4 AREA_4 L <=5
Then the software follows the order of priority provided below: -
Base Rule Selection
When the PWL for specific via area is specified in the EM rule file, without any conditions in the following manner:em_jmax* … PWL VAL_1 AREA_1 VAL_2 AREA_2
Then the software follows the order of priority provided below: -
Optimistic/Pessimistic Rule Selection
When multiple rules are selected after all conditions match, the software selects the optimistic/pessimistic value based on whether the variable,optimisticEMRuleSelection, is set totrueorfalse.
By default, the software selects the pessimistic value.
For example, when the following rule set is provided:1. em_jmax* EQU 1.5 …
2. em_jmax* EQU 3.5 …
3. em_jmax* EQU 2.5 …
- Rule 1 is selected by default because it is more pessimistic as compared to rules 2 and 3
-
When the variable,
optimisticEMRuleSelection,is set totrue, then rule 2 is selected because it is more optimistic as compared to the other rules - Rule 2 is skipped because it is neither the most pessimistic nor the most optimistic
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 tool will select rules 1 and 2 because they match the current direction “
up” -
Of the two selected rules, the tool will discard rule 1 because of the non-matching condition,
L>=5and it will select rule 2 because of the condition,L==3, which matches the conditionL<5
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 tool will first select rule 3 as it matches the current direction “
down” -
The tool will then discard the selected rule 3 because of the non-matching condition,
L>=5 -
The tool will then select rule 4 from the remaining rules, as rule 4 does not have any current direction condition but it matches the condition,
L<5
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
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.
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.
You can use one of the following ways to update the qrcTechFile using Techgen:
-
Use the following recommended option for advanced nodes:
Techgen –update_em <qrcTechFile> <RC.iRCX EM.iRCX| ICT-EM>
-
Use the following option if a single iRCX file contains both RC and EM information:
Techgen –update_em <qrcTechFile> <iRCX | ICT-EM>
-
Use the following option for a non-encrypted ICT or iRCX file:
Techgen -process_out <qrcTechFile>
It dumps theRCGEN.ictfile containing EM model information. However, it works only when the qrcTechFile is compiled with theopenprocessoption.ircxtoict –i <ICT output> –em_update <ICT with/without EM> <iRCX file>
It updates the ICT file with the EM models specified in the iRCX file.Techgen –update_process <qrcTechFile> <ICT from ircxtoict>
It updates the qrcTechFile with the EM models specified in the ICT file.
- If the qrcTechFile is encrypted, contact the foundry to get the original ICT file that was used to compile the encrypted qrcTechFile.
- It is recommended not to generate an ICT file from scratch using the ircxtoict utility and the iRCX file. It is strongly recommended to start from an ICT file dumped out of an existing qrcTechFile for updating the EM model information.
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.
-
Use the following command to convert the iRCX file to the ICT format with EM rules:
ircxtoict –i <ICT output> <iRCX file>
-
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:
-
Provide information about the
convert_emdatafile_to_ictcommand in the command file, which is specified using thevfibatchcommand.
Thevfibatch -cmdcmd-file-nameconvert_emdatafile_to_ictcommand converts the specified EM data file into an ICT file.
convert_emdatafile_to_ict
convert_emdatafile_to_ict -emDataFileemDataFile_path\ [-ictfileconverted_ict_file]\ [-cmdfileadditional_cmd_file]\ -extracted_lib_namelib_name\ -extracted_cell_namecell_name\ -extracted_view_nameview_name
Converts the specified EM data file into an ICT file to be used for performing EM analysis in Voltus-Fi-XL.
Parameters
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:
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:
Return to top