RC parasitic extraction and LPE » History » Version 3
jun chen, 03/29/2025 09:05 PM
1 | 1 | jun chen | # RC parasitic extraction and LPE |
---|---|---|---|
2 | |||
3 | ## ESD |
||
4 | □5田0片0叩D叩陈叩□ 博叩~0 |
||
5 | |||
6 | 3 | jun chen | ESD background introduction: attachment:"Giga_DA_ESD_Models_Devices_and_Analysis.pptx" ESD reference paper: attachment:"ming-douker1999.pdf" (From Dr. Shi) |
7 | 1 | jun chen | |
8 | 3 | jun chen | ESD reference paper: attachment:"02_Simulating_Electrostatic_Discharge.pdf" (From Jeff) |
9 | 1 | jun chen | |
10 | ESD online training: https://www.bilibili.com/video/BV1C34y1p7Jk?share_source=copy_web&vd_source=d04eb1abca6ba586bf0375f4ee96ad31 (From Dr. Chen) |
||
11 | |||
12 | ## LVS |
||
13 | |||
14 | LVS introduction: http://10.30.200.21:8088/projects/hongtu-emir/wiki/LVS_introduction |
||
15 | |||
16 | ## Resistance and capacitance |
||
17 | |||
18 | Professional link (By Xu): http://10.30.200.21:8088/projects/understand-aguda/wiki/Understand_LPE Professional introduction (By Xu): http://10.30.200.21:8088/projects/understand-aguda/wiki/LPE_Basic |
||
19 | |||
20 | ## Cap and resistance introduction |
||
21 | 3 | jun chen | Background knowledge (where cap comes from): attachment:"ECE4121Lec08Wire.pdf" , attachment:"CapacitanceDrivingaLoadannotated.pdf" IR analysis cap contributor: attachment:"about_cap_clean.pptx" |
22 | Resistance usage model and background: attachment:"Resistance_analysis_and_report.pptx" |
||
23 | 1 | jun chen | |
24 | ### [[Chip_RC_Correlation]] |
||
25 | |||
26 | ## Regression and QA method |
||
27 | |||
28 | Regression location: `ut/tests/ut/vp/ir/resistance` |
||
29 | Regression command 1: `qa_report_pg_resistance` |
||
30 | Regression command 2: `qa_report_detail_regression` |
||
31 | Regression command 3(obsolete): `qa_analyze_power_network res golden_res_file test_res_file` |
||
32 | |||
33 | ## Effective resistance |
||
34 | New usage |
||
35 | ``` |
||
36 | analyze—pg—resistance -net VDD -effective [-generate—supply—location (hidden option)] |
||
37 | 髻 by default, 10 worst instance will be reported. if -number—of—worst set to 0 or negative, report |
||
38 | all |
||
39 | report—pg—resistance -net VDD -effective [-number—of—worst 10] report—pg—resistance -net VDD cell—name -effective |
||
40 | 髻 will dump all the result to file |
||
41 | report—pg—resistance -net VDD -effective -number—of—worst 0 -output—file xxx.rpt |
||
42 | 髻 will show heat map in G·r without re-build graph show—effective—resistance—map |
||
43 | 髻 below error out since -detail only support in min-path mode report—pg—resistance -net VDD cell—name -detail |
||
44 | ``` |
||
45 | |||
46 | ~~Old usage:~~ |
||
47 | ``` |
||
48 | set—app—var ir calc—resist—mode Fl.AT |
||
49 | analy江e—power—network -net VDD -res—only [-generate—supply—location] |
||
50 | report—power—network -net VDD -type res |
||
51 | ``` |
||
52 | |||
53 | ## Min-path resistance |
||
54 | New usage |
||
55 | ``` |
||
56 | analy江e—pg—resistance -net VDD [-generate—supply—location (hidden option)] |
||
57 | 髻 by default, 10 worst instance will be reported. if -number—of—worst set to 0 or negative, report all |
||
58 | report—pg—resistance -net VDD [-number—of—worst 10] report—pg—resistance someCell -high—light -detail -net VDD |
||
59 | |||
60 | 髻 will dump all the result to file |
||
61 | report—pg—resistance -net VDD -number—of—worst 0 -output—file xxx.rpt |
||
62 | 髻 will show up heat map in G·r, power min-path, ground min-path, total min-path will display |
||
63 | 髻 if a cell is not connected to power/ground, the color annotation will be skiped. rn the total re sistance calculation, the un-connected net res is regarded as 江ero. |
||
64 | show—min—path—resistance—map |
||
65 | ``` |
||
66 | |||
67 | ~~Old usage:~~ |
||
68 | ``` |
||
69 | set—app—var ir calc—resist—mode S:ORTPAT: |
||
70 | analy江e—power—network -net VDD -res—only [-generate—supply—location] report—power—network -net VDD -type res -inst xxx -high—light report—power—network -net VDD -type res -path—number 4 |
||
71 | ``` |
||
72 | |||
73 | ## Debug pg resistance |
||
74 | |||
75 | See Generic testing SoP: |
||
76 | http://10.30.200.21:8088/projects/hongtu-emir/wiki/Generic_Testing_SoP#section-10 |
||
77 | |||
78 | ## Open-short and missing via check |
||
79 | ``` |
||
80 | verify—power—network |
||
81 | check—pg—vias |
||
82 | ``` |
||
83 | 1. :VP O 叩 check—pg—vias D叩D叩D叩D叩D叩D叩missing viaD |
||
84 | get—ob“—attr [get—violations -checker pgroute] bbox |
||
85 | 2. :VP O 叩 verify—power—network D叩D叩D叩D叩D叩D 叩 open/short/floating (open D叩D )D |
||
86 | get—ob“—attr [get—violations -checker layout—verifier -filter—by {rule == open}] bbox |
||
87 | |||
88 | ## Regression location |
||
89 | ut/tests/ut/vp/ut_run/ir/resistance/xxx |
||
90 | |||
91 | ## VIA resistance (TBD.) |
||
92 | analy江e—via—resistance |
||
93 | |||
94 | ## compare resistance by layer |
||
95 | DDDDD D min-path D叩D叩D叩D叩叩叩D叩度叩0叩D叩D叩D叩D叩D叩叩叩总叩叩叩叩叩映叩D叩导叩ir叩叩叩em叩叩叩 |
||
96 | D 叩D叩D叩DD叩D叩叩叩叩res改叩就叩须叩D static irDDDDDD叩DDDDDD叩DD希叩□ :VP D Ref tool D detail res 门叩叩叩叩叩D叩D叩 |
||
97 | |||
98 | DDD□ :VP D Ref tool D min res detail path门叩叩叩叩叩D叩叩并叩D叩叩叩叩叩 |
||
99 | |||
100 | D叩D |
||
101 | compare—detail—path—resistance -input—file minPath.rk [-output—file compare.result] [-plot—scatter |
||
102 | ] |
||
103 | |||
104 | □叩flowD |
||
105 | ... |
||
106 | set—app—var ir save—graph true analy江e—pg—resistance |
||
107 | compare—detail—path—resistance -input—file minPath.rk -output—file compare.result |
||
108 | DDDinput_fileDredhawkOmin resistance detail path report, D叩DD叩 |
||
109 | |||
110 |  |
||
111 | |||
112 | output_fileDDDDDDODDDDDD叩DD叩 |
||
113 |  |
||
114 | |||
115 | DDDD-plot_scatterDDDDDDDDD田叩 |
||
116 |  |
||
117 | |||
118 | ## RC extraction |
||
119 | |||
120 | 500 |
||
121 | [[LPE_Lecture_and_Reference]] |
||
122 | |||
123 | ### About rlc model |
||
124 | 3 | jun chen | attachment:"RCGEN_USAGE.pdf" (from XuLuo 20230905) |
125 | 1 | jun chen | |
126 | #### Base method (Obsolete) |
||
127 | |||
128 | DDDD layer D DD叩叩DDDDDDD叩叩叩DD 叩 (DD D rlc DODD ) |
||
129 | 1.D叩 1叩set—linear—unit—rlc (DD叩叩叩叩叩叩D导叩叩叩DD候 叩 unitR / width * length |
||
130 | D DDDDD叩DDDDDDDDD叩D叩叩叩叩DDD叩DDDDDDDDDDD |
||
131 | 2.D叩 2叩 set—resistance—table (DODDD伲插叩叩 叩 叩D导叩叩叩DD候 叩 lpm->CalcMetalR叩叩DD导叩叩叩 |
||
132 | D DD叩DD叩叩DD叩D叩D叩DDD |
||
133 | D叩 1DDD叩D叩DD signoff emirDD叩DDD叩D叩 2DD叩 |
||
134 | |||
135 | #### Advanced method: (New engine from Xu, after 20220310) |
||
136 | |||
137 | See: http://10.30.200.21:8088/issues/7418 |
||
138 | first phase changes: |
||
139 | 1.ir rc_multi_threads 1: valid in "ir rc_mode 2", changed to on by default |
||
140 | 2.ir rc_keep_pg_only 0: valid in "ir rc_mode 2", new, off (high accuracy) by default, will be on (medium accuracy, aligned with RH, equivalent to internal param "ir rc_ignore_mode 0x248") controled by other new coming ir params (like "ir accuracy_level high", will be followed up by Jun) |
||
141 | 3.ir rc_mode 0/1/2: 0 existing auto-mode, will be retired, 1 forcedly unitR/C, 2 exact RC extraction like signal (will be on by default for signoff VP, followed up by Jun), no further change for now. |
||
142 | |||
143 | todo list: |
||
144 | 1.px dont_extract_cap 1: on by default for static IR-drop analysis if "ir rc_mode 2" is set |
||
145 | 2.new ir param (e.g., accuracy_level medium [ I low I high]), to be discussed with Jun to turn on below params: |
||
146 | |||
147 | low: |
||
148 | ir rc_mode 1 |
||
149 | |||
150 | medium: |
||
151 | ir rc_mode 2 |
||
152 | ir rc_keep_pg_only 1 |
||
153 | |||
154 | high: |
||
155 | ir rc_mode 2 |
||
156 | ir rc_keep_pg_only 0 |
||
157 | 3.change default value for below two params: |
||
158 | 3.1param "ir rc_keep_pg_only_tv 1" : change default from 0 to 1 for thickness variation. |
||
159 | 3.2param "ir rc_keep_pg_only_cap 1": change default from 0 to 1 for cap weighting factor. |
||
160 | 2 | jun chen | |
161 | ## Advanced method: (Default method in EMIR Obsoleted after 20220310) |
||
162 | |||
163 | D叩 signal RC 引叩D叩PG RC: |
||
164 | set—app—var ir rc—mode 2 |
||
165 | to enable MT run (temp param, default off for now, could be on by default if stable): set—app—var ir rc—multi—thread 1 |
||
166 | |||
167 | D叩rlcDDD叩PG RC: |
||
168 | |||
169 | 调叩resistance D capacitance ODD叩列DD叩 D田RC□DDDD |
||
170 | 1. DDDDDDDDDDDDDDDDDOresDcapDO叩 |
||
171 | set—app—var ir rc—mode 1 |
||
172 | 髻 for debug for debug purpose set—app—var ir debug—rc 1 |
||
173 | |||
174 | 2. DDDDDDDDD DDODDDDDDDODDDDDDDDDDDDDDDDDDDDDDDDDrlcDDDOetchingDD |
||
175 | 髻 default minimal spacing 3.5 set—app—var ir r—spacing—factor 1.5 set—app—var ir c—spacing—factor 1.5 |
||
176 | |||
177 | 3. DD02DDworkD叩叩DDparamD |
||
178 | 50micron X 50micron DDDtableDDDDDDwindowDODDDDDDDDD |
||
179 | set—app—var ir r—density 1.5 set—app—var ir c—density 1.5 |
||
180 | |||
181 | 4. DDD叩甩叩 R C spacing factor: ooD加O app_var 有叩高叩先叩 |
||
182 | set—pg—rc—config |
||
183 | |||
184 | 5. verify resistance value by |
||
185 | report—pg—rc -layer M1 -area {llx lly urx ury} |
||
186 | report pg rc for "ir mode 2" using sigal like RC extraction model report—pg—rc -bbox {llx lly urx ury} -net VDD -layer M1 |
||
187 | |||
188 | Example: if a wire start from 2327.765 to 2330.39, width is 0.15 micron. Run below command to check rc engine |
||
189 | set—app—var rc—mode 2 |
||
190 | report—pg—rc -bbox {232l.l65 3354.l8-0.0l5 2330.39 3354.l8+0.0l5 } -net DVDD |
||
191 | |||
192 | 6. test case and data |
||
193 | |||
194 | ### about spef |
||
195 | |||
196 | 判叩 spef DDDD叩 lpe::HasFileRC |
||
197 | |||
198 | 6. import rlc model by (From Xu Luo): |
||
199 | |||
200 | after source .rlc file, you shall set the command "set—parasitic—condition cmax" for l.PF module to use this cmax model. |
||
201 | besides, you may report pg rc by setting -length/-width, |
||
202 | |||
203 | e.g., "report—pg—rc -layer M1 -length 10 -width 1" instead of "report—pg—rc -layer M1", |
||
204 | |||
205 | as empty -length/-width is equivalent as 江ero length/width for the command. |
||
206 | |||
207 | ## RC for DMP |
||
208 | |||
209 | DDDD田DDDDDcacheDDDDDDDD |
||
210 | |||
211 | "analy江e—pg—resistance -net VDD" |
||
212 | "cache—pg—resistance db -net VDD -graph—name "vdd.pgraph1" " //当DD叩□ cache叩二叩制DO叩 |
||
213 | |||
214 | masterD叩DD田DDDDDload DDDOpgraph DDDDDDDDDpgraphDD行DDDOD |
||
215 | |||
216 | "restore—pg—graph db -net VDD -graph—name "vdd.pgraph1 vdd.pgraph2 .... " " //当DD叩□ cache叩二叩制DO叩 |
||
217 | |||
218 | ## sanity resistance check |
||
219 | |||
220 | D田田D轻叩DrlcDD叩测Dhvp compose_top_design DDsource D rlcDDD就田田D始D行叩测DD叩根叩叩Dref toolOmin pathDD成叩样D叩叩工叩叩 |
||
221 | |||
222 | "sanity—check—resistance -detail—path—file reftool—min—path.rpt -path—limit 10 -layer—sample—limi t 10 -error—tolerance—threshold 0.2 -output—report out.rpt" |
||
223 | -detail—path—file |
||
224 | |||
225 | :DD ref tool □□D min path report叩DDD叩DDD O D叩旧伲D layer 叩 叩 space 叩width 叩 density叩 golden res叩DD hvpDD叩h vp叩D引伲叩DDD hvpD res叩 DD D golden res D diff叩 |
||
226 | -path—limit: D ref toolDD旧伲D少叩min path叩default D 10 |
||
227 | -layer—sample—limit : D ref toolDD layerD旧伲DDDD叩default D 10 |
||
228 | -error—tolerance—threshould : D D hvp res D golden resD diff tolerance叩叩叩范叩 |
||
229 | -output—report: DD输叩DO |
||
230 | |||
231 | DB00DD经叩□叩 |
||
232 | DD叩DDDDBODDDDDODD□叩叩 |
||
233 | |||
234 | ref tool run RC check |
||
235 | DDDrun ref toolOresistance analysis□□D田田田D□D田DinstanceOeff/min resistanceD叩田田田D得DDDinstanceOeff/minODDD |
||
236 | ``` |
||
237 | "perform res—calc -thread 8 -loopmode -instFile fileName -o ./adsRpt/effective—res.rpt" |
||
238 | // DDD fileNameDDD叩DDDD instance name(DD叩DD instance name) |
||
239 | 叩D叩DD□DD instD eff resDDDDDDO叩effective—res.rpt叩 |
||
240 | "perform min—res—path -instFile instFileName -simplified—report -o ./adsRpt/min—path—res.rpt " |
||
241 | //DDD instFileNameDDD叩DDDD instance name(DD叩DD instance name) |
||
242 | 叩D叩DD□DD instD min path DDDDDDO叩min—path—res.rpt叩叩 |
||
243 | ``` |
||
244 | |||
245 | Dwukong runDDDcase |
||
246 | DD designDDD |
||
247 | |||
248 | /reg/wukong/wukong u七 -b {binary} -d {case pa七h} -q {queue} -k DODD |
||
249 | 1.DDinpu七DDDDDDgoldenDDD |
||
250 | 2.DDDDDD七es七.七cl |
||
251 | |||
252 | [[Chip_RC_Correlation]] |
||
253 | |||
254 | 切□designODD |
||
255 | |||
256 | ``` |
||
257 | partition—top—design -colu 3 -row 3 -verbose |
||
258 | //DDD叩D□ top designOO 3x3DD叩00D□叩叩DD 叩 .hvp—partition—data DO0叩D partition—top—design -region {left—bottom—x left—bottom—y right—top—x right—top—y} |
||
259 | partition—top—design -region {0 20.0 100.0 200.0} |
||
260 | ``` |
||
261 | |||
262 | [[Probe_Node]] |
||
263 | |||
264 | 叩叩叩叩DDDDDDD Probe NodeDD叩叩叩叩 |
||
265 | 1. DDDD probe node |
||
266 | add—pg—probe—node -net VDD -layer "metal1" -name test—node -location {100 200} |
||
267 | analy江e—pg—resistance -net VDD -virtual—mode |
||
268 | |||
269 | 2. 叩DOD叩DDDD probe nodes |
||
270 | add—pg—probe—node -probe—file probe—file.csv |
||
271 | analy江e—pg—resistance -net VDD -virtual—mode DODDD叩D |
||
272 | 髻net—name metal—name x y current |
||
273 | |||
274 | ||||| |
||
275 | |--|--|--|--| |
||
276 | |VDD|metal1|100|200|0.1| |
||
277 | |VDD|metal1|300|400|0.01| |
||
278 | |||
279 | 叩static ir叩DDDDDDD Probe NodeDD叩叩叩叩 |
||
280 | |||
281 | 3. DDDD probe node |
||
282 | add—pg—probe—node -net VDD -layer "metal1" -name test—node -location {100 200} |
||
283 | analy江e—static—ir—drop -virtual—mode |
||
284 | |||
285 | 4. 叩DOD叩DDDD probe nodes |
||
286 | add—pg—probe—node -probe—file probe—file.csv analy江e—static—ir—drop -virtual—mode |
||
287 | |||
288 | DODDD叩D |
||
289 | 髻net—name metal—name x y current VDD metal1 100 200 0.1 |
||
290 | VDD metal1 300 400 0.01 |
||
291 | ... |
||
292 | |||
293 | ## Debug resistance SOP: |
||
294 | |||
295 | ### debug min path resistance: |
||
296 | |||
297 | ### debug eff resistance: |
||
298 | eff叩叩叩0DD SOP叩叩版叩 |
||
299 | ``` |
||
300 | 1.□叩by-layer res scatter DD叩D叩叩DD叩D叩DDDDDDDDD叩D metalD叩 |
||
301 | compare—detail—path—resistance -input—file rh—golden—detail—paht.rpt |
||
302 | 2.D叩D叩DD metal DDD伲metalD diffDDD instance叩 |
||
303 | 3.叩hvpD rh叩别门叩伲instanceDDD伲叩叩叩D path叩(rhD叩直伲grep report file) |
||
304 | □DD golden rhD伲叩D0叩hvpDDDD叩D叩debug—pg—resistance |
||
305 | 4.2 D0D叩0叩叩00 |
||
306 | □DDD叩metalD叩叩DD叩叩邻DDDD叩叩0叩D0D叩叩0叩D叩report—pg—rc 门D叩rh伲叩DD叩叩叩hvpDD叩DDD叩 |
||
307 | ``` |
||
308 | |||
309 | ### debug resistance report: |
||
310 | 1. set—app—var node—reduction—effort -1 //D叩node reduction防叩干叩叩叩 |
||
311 | |||
312 | ## DBDDDD : |
||
313 | |||
314 | 3. set_site: |
||
315 | 叩tech fileD叩DD叩set—siteDDDD MACRO,叩O D heightDDDDD default cell height |
||
316 | |||
317 | 3. DDDOregression: |
||
318 | vp—regression -d -r {ut—run/}case伲 叩 //唯D叩 叩 ut—run伲叩D需叩 |
||
319 | 叩wukongDDO case |
||
320 | /reg/wukong/wukong ut -b {binary} -d {case path} -q {queue} -k |
||
321 | 3.ODprofile0叩: |
||
322 | <pre> |
||
323 | vi Makefile.hvp |
||
324 | FXPORTFD—DFFrNFS:=-D—B·rl.D—VP=1 -D—FMrR—PROFrl.F=1 |
||
325 | 叩叩DO叩ODODD PROFrl.FR() |
||
326 | </pre> |
||
327 | |||
328 | 4. compose_top_designDD |
||
329 | ``` |
||
330 | D D叩D emirTcl·tilityFlow.tcl |
||
331 | assemble—physical—top—design |
||
332 | ``` |
||
333 | |||
334 | 5. 产加rlcDDDD |
||
335 | |||
336 | !58F3D26l-84F2-4l40-ABlF-A8F2F8B3FB49! |
||
337 | 本叩□□明D rlcDO |
||
338 | RCGFN -no—auto—enc□叩明D rlc DDDD叩D叩D叩D叩□□ viaD rlc |
||
339 | lp—test dump—rlc—via -rlc—model <model—name> -layer <vial.ayerName> |
||
340 | *list—rlc—model* 显伲hvp rlc信叩 |
||
341 | 6. 产加OT techDDDD |
||
342 | |||
343 | D itf□□ techDO |
||
344 | rhtech -i itf.name D ircx□□ techDO |
||
345 | ircx2tech -i ircx.name |
||
346 | |||
347 | 7. OTAKU local run DD□D |
||
348 | 叩田地叩: /home/ljxie/emir_tools/check_sum.csh |
||
349 | 1.且DD己Orun dataDD( |
||
350 |  |
||
351 | ) |
||
352 | 2.0 行叩田 |
||
353 |  |
||
354 | 3. 叩Dhtml main branchDDD localODDD叩叩田叩叩加DDDDD叩加DD再叩DDD田 |
||
355 |  |
||
356 |  |
||
357 | |||
358 | 出叩graph edgeDDDDD SOP: |
||
359 | 1.check input D入D田叩DDDD |
||
360 | 2.田D版田田叩DDDD |
||
361 | 3.node reduction -1; |
||
362 | 4.debug_pg_resistance -location {x1 y1}; // report 田Dnode DDOpgraphD田0叩D 5.set_power_network_mode -area {x1 y1 x2 y2} //甩叩田D叩D□D区叩 |