Project

General

Profile

Actions

EM analysis in VP

EM calculation

debug level policy

Please follow the IR process and output debug message according to levels□ Usage□set_app_var em em_debug 20
debug 0 (not set param): nothing will happen;
debug < 10: will print flow message: (such as "START: xxx" and "FND: xxx" debug < 20: will print driver current calculate information□
debug >= 20 : will print segments current/limit—current calculate information□ debug = 100 : will print detail message, only for RD can know code function□

AVG EM limit current

VP calculate average EM limit current related parameters:

set—app—var em half—node—scale—factor 0.9 set—app—var em temperature—em 110

DC limit current = polymonial_current_cal * temp_rating_factor

To calculation average EM limit current, EM rule based on length and width. For each shape, avg length are sum of block length, and multiplied by half node scale.
avg length: (0.695+0.05+1.4+0.05+2.21) * 0.9 = 3.9645 nm
For width, using each shape width, and multiplied by half node scale. width: 0.05 * 0.9 = 0.045 nm
temp_rating_factor table: (based on .itf or .ircx)

VP [add_em_rule_advance] DC rule demo:
When got avg length and width, can lookup polynomial table and calculated polynomial based results. Lookup temp_rating_factor table got temperature factor set by parameter.

DC limit current = polymonial_current_cal * temp_rating_factor

髻髻 For l-ayer AVG FM rule
add—em—rule—advance -measure dc -mask—num 1 -polynomial "switch

{
case 1 > 4.5 and w< 0.09 : 1.2 * 0.605000 * (W - 0.003);
case 1 > 4.5 and w >= 0.09 : 2.4* 0.605000 * (W- 0.003);
case 1 <= 4.5 : 4.8 * 0.605000 * ( W - 0.003 );
default: -1;
}"
-temp—rating factor "Switch
{
case TFMPFRAT..RF FM == 85: 5.066; case TFMPFRAT..RF FM == 105: 2.293; case TFMPFRAT..RF FM == 110: 1.599; case TFMPFRAT..RF FM == 125: 1.0; case TFMPFRAT..RF FM == 150: 0.212;
default: -1;
}

PEAK EM limit current

VP calculate Peak EM limit current related parameters:

set—app—var em half—node—scale—factor 0.9
set—app—var em em—peak—source—equation—techfile false
When em_peak_source_equation_techfile == true Peak limit current = polymonial_current_cal When em_peak_source_equation_techfile == false
Peak limt current = polymonial_current_cal * [1/sqrt(r)]

VP [add_em_rule_advance] PEAK rule demo:
w: width (half node scale) td: pulse width
r: duty ratio
髻髻 For l-ayer PFAK FM rule
add—em—rule—advance -measure peak -mask—num 1 -polynomial "switch
{
case w > 0.18 and td >= 0.5 : 26.8 * (w -0.003); case w<0.135 and td>=0.5:53.6*(w - 0.003);
case w>= 0.135 and w <= 0.18 and td >= 0.5 : 42.88 * (w - 0.003);
case w > 0.18 and td < 0.5 and td >= 0.001 and r >= 0.05 : 26.8 * (w - 0.003) / sqrt(r); case w <0
.135 and td <0.5 and td >= 0.001 and r >= 0.05 : 53.6 * (w - 0.003) / sqrt(r);
case w>= 0.135 and w <=0.18 and td< 0.5 and td >= 0.001 and r >= 0.05 : 42.88 * (w - 0.003) / sqrt
(r); case w > 0.18 and td < 0.5 and td >= 0.001 and r < 0.05 : 26.8 * (w - 0.003) / sqrt(0.05);
...
more information in Part 2 "Advance FM rule format"

RMS EM limit current

VP calculate RMS EM limit current related parameters:

set—app—var em half—node—scale—factor 0.9 set—app—var em em—rms—metal—line—no 3 set—app—var em average—option false
RMS_current_limit = polynomial_current_cal * spacing_factor * rating_factor

Rating factor:
N (metal line number) For 28nm N=3

rating factor table:

via-via spacing factor:
S (via-via spacing)
Related param: set_app_var em average_option false

When shape no down vias, didn't consider spacing factor.

via-via spacing using signal actually direction, sum of those distance and half node scale also used.

via-via spacing: (0.03+0.575+0.1+1.35+0.1+2.09+0.03) * 0.9 = 3.8475

VP [add_em_rule_advance] RMS rule demo:
When got N and S, then lookup via_via_spacing_factor and metal_line_no_rating_factor table to got factor. RMS_current_limit = polynomial_current_cal * spacing_factor * rating_factor
髻髻 For l-ayer RMS FM rule
add—em—rule—advance -measure rms -mask—num 1 -polynomial "Switch
{
default : sqrt ( 19.ll * delta—T * ( w - 0.003) " 2 * ( w - 0.003 + 0.264) / ( w - 0.003 + 0.0443
));
}"
-via—via—spacing—factor "switch
{
case s >= 9 and AVFRAGF—OPTION == false : 1.0; case s >= 9 and AVFRAGF OPTION == true : 1.2; case s > 2.l and s <9: 1.05;
case s > 0.9 and s <= 2.l: 1.3; case s > 0.2l and s <= 0.9: 2.0; case s <= 0.2l: 2.2;
default: -1;
}"
-metal line no rating factor "switch case n >= 9: 1.0;
case n >= 5 and n <9: 1.05; case n >= 3 and n < 5: 1.32; case n >= 1 and n < 3: 1.5; default: -1;
}"

PEAK current [TBD]

RMS current [TBD]

AVG current [TBD]

More detail: EM_calculation.pptx

Advance EM rule format

髻髻髻 advanced FM rule sample
髻髻 For l-ayer PFAK FM rule
add—em—rule—advance -measure peak -mask—num 1 -polynomial "switch
{
case w > 0.18 and td >= 0.5 : 26.8 * (w -0.003); case w<0.135 and td>=0.5:53.6*(w - 0.003);
case w>= 0.135 and w <= 0.18 and td >= 0.5 : 42.88 * (w - 0.003);
case w > 0.18 and td < 0.5 and td >= 0.001 and r >= 0.05 : 26.8 * (w - 0.003) / sqrt(r); case w <0
.135 and td <0.5 and td >= 0.001 and r >= 0.05 : 53.6 * (w - 0.003) / sqrt(r);
case w>= 0.135 and w <=0.18 and td< 0.5 and td >= 0.001 and r >= 0.05 : 42.88 * (w - 0.003) / sqrt
(r); case w > 0.18 and td < 0.5 and td >= 0.001 and r < 0.05 : 26.8 * (w - 0.003) / sqrt(0.05);
case w < 0.135 and td < 0.5 and td >= 0.001 and r < 0.05 : 53.6 * (w - 0.003) / sqrt(0.05);

;
case w < 0.135 and td < 0.001 and td >= 0.0001 and r >= 0.05 : l5.04 * (w - 0.003) / sqrt(r);
case w >= 0.135 and w <= 0.18 and td < 0.001 and td>=0.0001 and r>=0.05:60.02 * (w - 0.003) / sqrt (r); case w> 0.18 and td < 0.001 and td >= 0.0001 and r<0.05 :3l.52 * (w - 0.003) / sqrt(0.05); case w < 0.135 and td < 0.001 and td >= 0.0001 and r < 0.05 : l5.04 * (w - 0.003) / sqrt(0.05); case w >= 0.135 and w <= 0.18 and td < 0.001 and td >= 0.0001 and r < 0.05 : 60.02 * (w - 0.003) /
sqrt(0.05); case w>0.18 and td <0.0001 and r >=0.05 :3l.52 * (w - 0.003) / sqrt(r); case w<0.135 and td < 0.0001 and r >= 0.05 : l5.04 * (w - 0.003) / sqrt(r);
case w >= 0.135 and w <= 0.18 and td < 0.0001 and r >= 0.05 : 60.02 * (w - 0.003) / sqrt(r); case w> 0.18 and td < 0.0001 and r<0.05:53.60 (w-0.003) / sqrt(0.05);
case w <0.135 and td < 0.0001 and r <0.05 :10l.20 * (w-0.003) / sqrt(0.05);
case w >= 0.135 and w <= 0.18 and td < 0.0001 and r < 0.05 : 85.l6 * (w - 0.003) / sqrt(0.05); default: -1;
}
髻髻 For l-ayer AVG FM rule
add—em—rule—advance -measure dc -mask—num 1 -polynomial "switch
{
case 1 > 4.5 and w< 0.09 : 1.2 * 0.605000 * (W - 0.003);
case 1 > 4.5 and w >= 0.09 : 2.4
0.605000 * (W- 0.003);
case 1 <= 4.5 : 4.8 * 0.605000 * ( W - 0.003 );
default: -1;
}"
-temp—rating factor "Switch
{
case TFMPFRAT..RF FM == 85: 5.066; case TFMPFRAT..RF FM == 105: 2.293; case TFMPFRAT..RF FM == 110: 1.599; case TFMPFRAT..RF FM == 125: 1.0; case TFMPFRAT..RF FM == 150: 0.212;
default: -1;
}
髻髻 For l-ayer RMS FM rule
add—em—rule—advance -measure rms -mask—num 1 -polynomial "Switch
{
default : sqrt ( 19.ll * delta—T * ( w - 0.003) " 2 * ( w - 0.003 + 0.264) / ( w - 0.003 + 0.0443
));
}"
-via—via—spacing—factor "switch
{
case s >= 9 and AVFRAGF—OPTION == false : 1.0; case s >= 9 and AVFRAGF OPTION == true : 1.2; case s > 2.l and s <9: 1.05;
case s > 0.9 and s <= 2.l: 1.3; case s > 0.2l and s <= 0.9: 2.0; case s <= 0.2l: 2.2;
default: -1;
}"
-metal line no rating factor "switch case n >= 9: 1.0;
case n >= 5 and n <9: 1.05; case n >= 3 and n < 5: 1.32; case n >= 1 and n < 3: 1.5; default: -1;
}"

EM analysis reference flow

髻髻髻 FM analysis reference flow
髻 Input design data source config.tcl
髻 Setup design
compose—top—design �top—def �blk—def �tf—file �lefl-ist set—link—path �libl-ist
import—liberty -all—linkpath �liblist
link—prollect
髻 Setting FM param and input FM rule set—app—var em half—node—scale—factor 0.9 set—app—var em em—rms—metal—line—no 3 set—app—var em average—option true
set—app—var em em—peak—source—equation—techfile true set—app—var em temperature—em 110
set—app—var em em—recovery—factor 0.9 set—app—var em em—rms—delta t 5 set—app—var em em—mode "RK"
source �em—file
髻 Input rlc
purge—rlc—model [lindex [list—rlc—model]0] source �rlc—file
set—parasitic—condition �rlc—name
髻 Input SPFF
set—app—var lpe force—wire—type 3 髻 import—parasitics �spef—file
import—parasitics -module—rc—file �spef—cfg
髻 source -echo �ploc
髻 Input twf file, got timing information import—twf -module—twf—file XXX.twf—cfg report—twf
update—twf -default—transition 0.1 -missing—period 0.5
髻 Set SWA info set—switching—activity -clear
set—switching—activity -clock—net -number—of—toggles 2 -period—of—clock 2 set—switching—activity -signal—net -number—of—toggles 0.15 -period—of—clock 2
report—power—analysis
髻 Report PFAK/DC/RMS signal em
report—signal—em -mode peak
report—signal—em -mode avg
report—signal—em -mode rms

Debug method (From Lin Gu)

可以选中net,叩Dexport单条netD息□export_def -routing -object [get_sel],翻net连叩的instD息叩DexportDdefD

Updated by jun chen 4 months ago · 2 revisions