EM analysis in VP » History » Version 2
jun chen, 03/29/2025 11:23 PM
1 | 1 | jun chen | # EM analysis in VP |
---|---|---|---|
2 | |||
3 | 2 | jun chen | ## EM calculation |
4 | |||
5 | ### debug level policy |
||
6 | 1 | jun chen | Please follow the IR process and output debug message according to levels□ Usage□set_app_var em em_debug 20 |
7 | debug 0 (not set param): nothing will happen; |
||
8 | debug < 10: will print flow message: (such as "START: xxx" and "FND: xxx" debug < 20: will print driver current calculate information□ |
||
9 | debug >= 20 : will print segments current/limit—current calculate information□ debug = 100 : will print detail message, only for RD can know code function□ |
||
10 | |||
11 | 2 | jun chen | ### AVG EM limit current |
12 | 1 | jun chen | VP calculate average EM limit current related parameters: |
13 | |||
14 | set—app—var em half—node—scale—factor 0.9 set—app—var em temperature—em 110 |
||
15 | |||
16 | DC limit current = polymonial_current_cal * temp_rating_factor |
||
17 | |||
18 |  |
||
19 | |||
20 | 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. |
||
21 | avg length: (0.695+0.05+1.4+0.05+2.21) * 0.9 = 3.9645 nm |
||
22 | For width, using each shape width, and multiplied by half node scale. width: 0.05 * 0.9 = 0.045 nm |
||
23 | temp_rating_factor table: (based on .itf or .ircx) |
||
24 | |||
25 |  |
||
26 | |||
27 | VP [add_em_rule_advance] DC rule demo: |
||
28 | 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. |
||
29 | 2 | jun chen | |
30 | **DC limit current = polymonial_current_cal * temp_rating_factor** |
||
31 | 1 | jun chen | |
32 | 髻髻 For l-ayer AVG FM rule |
||
33 | add—em—rule—advance -measure dc -mask—num 1 -polynomial "switch |
||
34 | |||
35 | |||
36 | { |
||
37 | case 1 > 4.5 and w< 0.09 : 1.2 * 0.605000 * (W - 0.003); |
||
38 | case 1 > 4.5 and w >= 0.09 : 2.4* 0.605000 * (W- 0.003); |
||
39 | case 1 <= 4.5 : 4.8 * 0.605000 * ( W - 0.003 ); |
||
40 | default: -1; |
||
41 | }" \ |
||
42 | -temp—rating factor "Switch |
||
43 | { |
||
44 | 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; |
||
45 | default: -1; |
||
46 | } |
||
47 | |||
48 | ## PEAK EM limit current |
||
49 | VP calculate Peak EM limit current related parameters: |
||
50 | |||
51 | set—app—var em half—node—scale—factor 0.9 |
||
52 | set—app—var em em—peak—source—equation—techfile false |
||
53 | When em_peak_source_equation_techfile == true Peak limit current = polymonial_current_cal When em_peak_source_equation_techfile == false |
||
54 | Peak limt current = polymonial_current_cal * [1/sqrt(r)] |
||
55 | |||
56 | VP [add_em_rule_advance] PEAK rule demo: |
||
57 | w: width (half node scale) td: pulse width |
||
58 | r: duty ratio |
||
59 | 髻髻 For l-ayer PFAK FM rule |
||
60 | add—em—rule—advance -measure peak -mask—num 1 -polynomial "switch |
||
61 | { |
||
62 | 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); |
||
63 | case w>= 0.135 and w <= 0.18 and td >= 0.5 : 42.88 * (w - 0.003); |
||
64 | 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 |
||
65 | .135 and td <0.5 and td >= 0.001 and r >= 0.05 : 53.6 * (w - 0.003) / sqrt(r); |
||
66 | 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 |
||
67 | (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); |
||
68 | ... |
||
69 | more information in Part 2 "Advance FM rule format" |
||
70 | |||
71 | ## RMS EM limit current |
||
72 | VP calculate RMS EM limit current related parameters: |
||
73 | |||
74 | 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 |
||
75 | RMS_current_limit = polynomial_current_cal * spacing_factor * rating_factor |
||
76 | |||
77 | Rating factor: |
||
78 | N (metal line number) For 28nm N=3 |
||
79 | |||
80 | |||
81 | rating factor table: |
||
82 | |||
83 |  |
||
84 | |||
85 | via-via spacing factor: |
||
86 | S (via-via spacing) |
||
87 | Related param: set_app_var em average_option false |
||
88 | |||
89 |  |
||
90 | |||
91 | When shape no down vias, didn't consider spacing factor. |
||
92 | |||
93 |  |
||
94 | |||
95 | via-via spacing using signal actually direction, sum of those distance and half node scale also used. |
||
96 | |||
97 | via-via spacing: (0.03+0.575+0.1+1.35+0.1+2.09+0.03) * 0.9 = 3.8475 |
||
98 | |||
99 |  |
||
100 | |||
101 | VP [add_em_rule_advance] RMS rule demo: |
||
102 | 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 |
||
103 | 髻髻 For l-ayer RMS FM rule |
||
104 | add—em—rule—advance -measure rms -mask—num 1 -polynomial "Switch |
||
105 | { |
||
106 | default : sqrt ( 19.ll * delta—T * ( w - 0.003) " 2 * ( w - 0.003 + 0.264) / ( w - 0.003 + 0.0443 |
||
107 | )); |
||
108 | }" \ |
||
109 | -via—via—spacing—factor "switch |
||
110 | { |
||
111 | 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; |
||
112 | 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; |
||
113 | default: -1; |
||
114 | }" \ |
||
115 | -metal line no rating factor "switch case n >= 9: 1.0; |
||
116 | 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; |
||
117 | }" |
||
118 | |||
119 | ## PEAK current [TBD] |
||
120 | |||
121 | ## RMS current [TBD] |
||
122 | |||
123 | ## AVG current [TBD] |
||
124 | |||
125 | More detail: attachment:"EM_calculation.pptx" |
||
126 | |||
127 | ## Advance EM rule format |
||
128 | |||
129 | 髻髻髻 advanced FM rule sample |
||
130 | 髻髻 For l-ayer PFAK FM rule |
||
131 | add—em—rule—advance -measure peak -mask—num 1 -polynomial "switch |
||
132 | { |
||
133 | 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); |
||
134 | case w>= 0.135 and w <= 0.18 and td >= 0.5 : 42.88 * (w - 0.003); |
||
135 | 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 |
||
136 | .135 and td <0.5 and td >= 0.001 and r >= 0.05 : 53.6 * (w - 0.003) / sqrt(r); |
||
137 | 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 |
||
138 | (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); |
||
139 | case w < 0.135 and td < 0.5 and td >= 0.001 and r < 0.05 : 53.6 * (w - 0.003) / sqrt(0.05); |
||
140 | |||
141 | ; |
||
142 | case w < 0.135 and td < 0.001 and td >= 0.0001 and r >= 0.05 : l5.04 * (w - 0.003) / sqrt(r); |
||
143 | 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) / |
||
144 | 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); |
||
145 | 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); |
||
146 | case w <0.135 and td < 0.0001 and r <0.05 :10l.20 * (w-0.003) / sqrt(0.05); |
||
147 | 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; |
||
148 | } |
||
149 | 髻髻 For l-ayer AVG FM rule |
||
150 | add—em—rule—advance -measure dc -mask—num 1 -polynomial "switch |
||
151 | { |
||
152 | case 1 > 4.5 and w< 0.09 : 1.2 * 0.605000 * (W - 0.003); |
||
153 | case 1 > 4.5 and w >= 0.09 : 2.4* 0.605000 * (W- 0.003); |
||
154 | case 1 <= 4.5 : 4.8 * 0.605000 * ( W - 0.003 ); |
||
155 | default: -1; |
||
156 | }" \ |
||
157 | -temp—rating factor "Switch |
||
158 | { |
||
159 | 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; |
||
160 | default: -1; |
||
161 | } |
||
162 | 髻髻 For l-ayer RMS FM rule |
||
163 | add—em—rule—advance -measure rms -mask—num 1 -polynomial "Switch |
||
164 | { |
||
165 | default : sqrt ( 19.ll * delta—T * ( w - 0.003) " 2 * ( w - 0.003 + 0.264) / ( w - 0.003 + 0.0443 |
||
166 | )); |
||
167 | }" \ |
||
168 | -via—via—spacing—factor "switch |
||
169 | { |
||
170 | 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; |
||
171 | 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; |
||
172 | default: -1; |
||
173 | }" \ |
||
174 | -metal line no rating factor "switch case n >= 9: 1.0; |
||
175 | 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; |
||
176 | }" |
||
177 | |||
178 | ## EM analysis reference flow |
||
179 | |||
180 | 髻髻髻 FM analysis reference flow |
||
181 | 髻 Input design data source config.tcl |
||
182 | 髻 Setup design |
||
183 | compose—top—design �top—def �blk—def �tf—file �lefl-ist set—link—path �libl-ist |
||
184 | import—liberty -all—linkpath �liblist |
||
185 | link—prollect |
||
186 | 髻 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 |
||
187 | set—app—var em em—peak—source—equation—techfile true set—app—var em temperature—em 110 |
||
188 | 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" |
||
189 | source �em—file |
||
190 | 髻 Input rlc |
||
191 | purge—rlc—model [lindex [list—rlc—model]0] source �rlc—file |
||
192 | set—parasitic—condition �rlc—name |
||
193 | 髻 Input SPFF |
||
194 | set—app—var lpe force—wire—type 3 髻 import—parasitics �spef—file |
||
195 | import—parasitics -module—rc—file �spef—cfg |
||
196 | 髻 source -echo �ploc |
||
197 | 髻 Input twf file, got timing information import—twf -module—twf—file XXX.twf—cfg report—twf |
||
198 | update—twf -default—transition 0.1 -missing—period 0.5 |
||
199 | 髻 Set SWA info set—switching—activity -clear |
||
200 | 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 |
||
201 | report—power—analysis |
||
202 | 髻 Report PFAK/DC/RMS signal em |
||
203 | report—signal—em -mode peak |
||
204 | report—signal—em -mode avg |
||
205 | report—signal—em -mode rms |
||
206 | |||
207 | ## Debug method (From Lin Gu) |
||
208 | |||
209 | 可以选中net,叩Dexport单条netD息□export_def -routing -object [get_sel],翻net连叩的instD息叩DexportDdefD |