热度 10| ||
RCX Runset1
Q1:准三维方法是啥?
o就是把整个三维结构拆成一层层的二维平面来处理(像是2.5D那种)。
o竖着看呢,用现成的公式套(比如平行板电容模型),横着看就用场求解器去算。
o最后把好几层二维的结果堆起来,假装是三维的。这样速度是快了,但精度嘛,就得牺牲点儿。
Q2:为啥准三维方法精度有误差?
·模型太简单了:有些复杂结构的电场耦合被忽略了(比如边边角角不是方方正正的,或者曲面效果)。
·层和层之间是近似处理的:竖着用的那些公式,没法儿完全模拟真实的电场分布(比如高度有变化或者结构是斜的)。
·网格划分跟不上:二维网格很难对付三维那些不规则形状。
Q3:工艺截面图(Cross-Section)咋描述?
·里面都有啥:
1.每层是啥得标清楚:像Metal1、Via1、Poly这些材料是啥,多厚,介电常数多少。
2.形状得画出来:导线多宽、离多远,绝缘层多厚,过孔在哪儿。
3.关键尺寸得标上:那些重要的尺寸(CD)和设计规则要求的值。
·工具咋输入:通常是把GDSII图层对应到工艺文件(Techfile)里,或者用PDK(工艺设计套件)来定义堆叠结构。
Q4:主流工具咋描述工艺?
|工具|格式|关键内容|
|----------------|-----------------------------|------------------------------------------|
|Synopsys StarRC| NXTGRD/ITF/Techfile | 说清楚每层是啥材料、多厚、导电好不好、介电常数多少,还有规则(比如最小间距) |
|Cadence Quantus| LEF/DEF + Techfile | 根据图层对应电阻电容模型,支持QRC规则文件 |
|Siemens Calibre| xRC Rule File (RULES) | 用SVRF语法来定义提取规则和工艺参数 |
Q5:主流工具咋运行?
·Calibre xACT:`calibre -xrc -hier -3d -input runset.rules -gds layout.gds`
·StarRC:`read_itf tech.itf`
`read_parasitic_tech tech.tch`
`extract -pattern_map layer.map`
·Quantus QRC:`set_tech -tech_file tech.tf`
`extract -config qrc_config`
RCX Runset2
Q1:咋验证Runset准不准?
·跟黄金数据比:跟场求解器(比如Raphael)的结果对一下。
·做测试结构实测:在测试芯片(Test Chip)上实际量电容电阻值。
·查寄生一致性:把提取出来的网表跟原理图仿真结果(比如SPICE LVS + 仿真)比比看。
Q2:BEOL测试结构(Test Pattern)长啥样?测啥?
·典型结构:
o蛇形线(Meander):测导线电阻和旁边的电容。
o叉指结构(Comb):测同一层里面导线之间的耦合电容(C_c)。
o金属平行板:测不同层之间的电容(C_via)。
·组合参数:用不同的线宽、间距、层组合,专门覆盖设计规则允许的极限情况。
·精度咋比:
o看相对误差。
o做相关性分析:线性拟合的斜率最好接近1.0。
Q3:MEOL测试结构(Test Pattern)分析啥?
·包含的器件:跟晶体管直接连的那些层(比如Contact、Local Interconnect)。
·PCell自动生成:
o用SKILL或者Python脚本,生成不同大小、不同间距的Contact(接触孔)和Via(通孔)阵列。
·内部电容分析:
o分别提取包含晶体管内部寄生电容(比如栅极电容)和不包含的网表。
o对比仿真结果(如果延迟差超过5%,模型就得改)。
Q4:自动化精度分析软件咋用?
·工具流程:`import rcx_analyzer`
`analyzer.compare_data(golden_data, extracted_data)`
`analyzer.plot_error_distribution()`
`analyzer.generate_report()`
·看啥指标:平均绝对相对误差(AARD)、95%分位的误差值。
RCX Runset3
Q1:30%误差咋分析?
1.结构拆开看:把电路分成小块结构(比如单根线、交叉的线、环栅结构)。
2.参数分开提:用3D工具当黄金标准,单独提取这些关键结构的电容。
3.找误差在哪儿:
o如果交叉结构误差大 → 耦合电容模型有问题。
o如果长线电阻误差大 → 电阻分段算法不行。
o如果器件边上误差大 → MEOL提取规则搞错了。
Q2:LVS图层重叠问题咋避免?
·图层定义优化:
o用逻辑运算(比如ANDNOT)保证图层之间不重叠。
o例子:`METAL1_clean = METAL1 NOT VIA1`
·Runset检查:LVS报告报“SHORT”错误得先修好。
Q3:Conformal结构描述错了啥样?
·错法:把对称结构标成了不同层(比如M1_top和M1_bottom没合并)。
·结果:电容提取漏掉了相邻层的耦合(比如忽略了上下两层M1之间的耦合)。
Q4:器件内部电容忘了忽略啥后果?
·案例:没把MOS管栅极内部电容(C_gg)排除掉。
·影响:总电容算大了,仿真出来的延迟也偏大(比如反相器链延迟误差超过15%)。
Q5:5个Corner啥意思?
|Corner|意思|参数方向|
|------------|------------------|------------------|
| RCbest | 互连速度最快 | R↓ + C↓ |
| RCworst | 互连速度最慢 | R↑ + C↑ |
Q6:11个Corner里的CCbest/CCworst啥意思?
·CCbest:耦合电容最小(C_c↓),串扰噪声最乐观(最小)。
·CCworst:耦合电容最大(C_c↑),串扰噪声最悲观(最大)。
·啥时候用:分析对噪声特别敏感的电路(比如SRAM、模拟模块)。
RCX Runset4
Q1:咋在版图上直接看寄生参数?
·工具方法:
o用Cadence virtuoso + Quantus Visualization:高亮想看的线网,会显示寄生R/C的值。
oSynopsys Custom Designer:用“Net Annotation”显示节点电容值。
Q2:寄生参数跟图形咋关联?
·操作步骤:
1.选中目标线网(比如Metal2的线)。
2.运行`show_parasitics -net NET_NAME`命令。
3.图形界面上就会叠加上显示R/C标签(比如C=0.12fF, R=3.5Ω)。
Q3:耦合电容预估值咋手动验证?
·手动算:
o公式:`C_coupling = ε * A / d`(A是相邻面积,d是间距)。
·工具验证:
o在版图上量间距(d)和重叠长度(L)。
o对比提取值跟公式算的值(误差最好小于10%)。
Q4:VGDS工具自动干啥?
·自动功能:
o自动找附近的线网,生成耦合报告(比如:NetA vs NetB: Cc=0.08fF)。
o3D视图显示电场分布(需要OpenGL支持)。
·咋用:`vgds -tech_file tech.tf -layout layout.gds`
`vgds::analyze_coupling -range 2.0 -report coupling.rpt`
RCX Runset5
Q1:3D IC和TSV是啥?
·3D IC:把好几层晶圆竖着堆起来(比如cpu叠Memory),用硅通孔(TSV)连起来。
·TSV:就是穿过硅片的金属柱子(直径1~10μm),负责层和层之间的电连接。
·堆叠应用:
Q2:TSV提取工具有啥弱点?咋克服?
|弱点|解决方法|
|------------------------|----------------------------------|
|忘了算耗尽层电容| 集成半导体方程求解器(比如Sentaurus) |
|没考虑温度分布影响| 跟热分析工具(比如ANSYS RedHawk)一起用 |
|高频效应算得太简单| 用全波电磁场求解器(比如HFSS+SIwave) |
Q3:TSV电压相关的电容模型咋建?
·公式:`C_{tsv}(V) = \frac{C_{ox} \cdot C_{dep}(V)}{C_{ox} + C_{dep}(V)}`
o其中`C_dep(V) ∝ √(V)`(耗尽层电容会跟着电压变大)。
Q4:多个TSV快速场求解咋加速?
·加速方法:
o用等效边界法(BEM)压缩矩阵求解(比如FastCap)。
o用机器学习拟合(比如训练个生成模型来代替仿真)。
Q5:多个晶圆的网表咋合并?
·按线网名合并:
o要求:每一层的线网名字必须全局唯一(比如加个层级前缀)。
o适用:数字电路(标准单元自动布局)。
·按坐标合并:
o提取晶体管坐标,按位置匹配连接点(需要精度对准)。
o适用:模拟电路/自定义版图。
RCX Runset6
Q1:为啥要RC Simplify(简化)?
·目的:减少仿真节点,避免SPICE算不动(比如从十亿+节点简化到百万节点)。
·原理:把小电阻短路、弱电容开路,在保持电路效果的前提下简化连接关系。
Q2:Simplify咋做?
·电阻短路:如果R < R_thresh(比如1Ω),就把节点合并(可以设个电压容忍范围)。
·电容开路:如果C < C_thresh(比如0.01fF)或者RC延迟影响很小(小于总延迟的百分之多少),就把电容删掉。
·流程例子:`simplify_rc -res_threshold 0.5 -cap_threshold 0.02`
Q3:Plumb工具咋用?
·运行:`plumb -netlist input.sp -report report.txt`
`plumb::set_simplify -res 0.2 -cap 0.01`
·结果看啥:
o报告节点合并了多少(比如Nodes Reduced: 85%)。
o检查关键路径延时变了多少(要求ΔDelay < 1%)。