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