方块电阻、分档与四段模型:poly电阻仿真避坑指南
简介面向模拟/射频电路设计工程师与版图人员的 TSMC MIM 电容技术资料聚焦电容相关电阻模型的测量数据与建模方法可用于工艺评估、SPICE 模型核对与电路设计中的参数校核。压缩包内为 1 个 PDF 文件约 2.2MB即 TSMC 官方文档 T-018-MM-SP-001 的节选篇幅紧凑但数据密度高已有 1853 人学习下载。文档给出 Sheet Resistance Table列出 P poly、N poly、P diff、N diff 等 film 在有无 silicide 条件下的 Rp、Rint、Rgrain 均值与范围并附 TC1/TC2、VC1/VC2 温度与电压系数及 deltaW 修正值说明电阻随温度-40 ℃~125 ℃与偏压-3.3~3.3V的变化规律。同时给出电阻等效电路模型与 R0Rsh·(L-deltaL)/(W-deltaW) 等计算式区分 w/i silicide 与 w/o silicide 的串并联表达式便于读者理解 Rp、Rint、Rgrain 的物理含义及版图依赖关系快速完成模型参数提取与设计校核。1. 一份讲电容的规范真正被翻烂的是电阻那几页工艺设计规则design rule与器件模型规范里MIM 电容通常是最先被翻开的一章——做匹配、做滤波第一反应都是先找一个稳定容值。但真到把网表跑通、把 corner 走完卡住人的往往不是电容而是电阻。同一个 P poly 电阻画 2.1 µm 宽和画 1.9 µm 宽模型给的方块电阻是两个值温度从 25 °C 拉到 125 °C只算一阶温度系数会差出十几个百分点同一个膜的电阻文档在不同页给了两个结构不一样的公式。这些都不是玄学而是写死在参数表里的几何分档和二阶修正。把这套模型怎么拼起来搞清楚才解释得了「为什么我手算和仿真对不上」。2. 方块电阻到实际电阻R0 Rsh·(L−ΔL)/(W−ΔW) 里两个修正项在修什么先看最外层的一层皮。有硅化物的 poly 电阻和扩散电阻模型给的主干公式只有一个R R0 × [1 VC1·dV VC2·(dV)²] × [1 TC1·dT TC2·(dT)²]其中 R0 Rsh·(L − ΔL)/(W − ΔW)。看起来平平无奇但真正决定精度的不是那两个二次项而是 R0 里被减掉的两个 Δ。它把「你在版图上画的矩形」换算成「电流实际流过的矩形」这个换算一旦搞错后面所有系数都是在错误基数上做微调。2.1 版图尺寸不等于电学尺寸ΔW 还会是负数无硅化物的 P polyΔL 0.04696 µm、ΔW 0.06061 µmN poly 是 0.07616 和 0.08333。都是正数意思是电学有效尺寸比绘制尺寸小一圈。这符合直觉注入的横向扩散、刻蚀侧壁的非理想、以及两端接触区附近的电场分布让真正参与导电的那段比画出来的短一点、窄一点。但翻到有硅化物的那一档deltaW 变成了 −0.051P poly和 −0.065N poly符号反了。有效宽度反而比绘制宽度大。常见的实现思路是这么理解的这两套参数不是同一套物理口径。无硅化物那套是按「poly 本体导电」建的边缘损失要扣有硅化物那套的拟合里硅化物层把电流摊到了更大的截面上边缘那点差异被吸收进一个负的等效修正量。不管物理图像怎么讲工程上的结论很直接——两套 Δ 不能互换、不能混用你要算哪种电阻就用它自己那一行的 Δ。还有一个容易被忽略的细节有硅化物那张表只给了 deltaW没有给 deltaL。短沟道下 ΔL 不可忽略文档没给并不代表它为零只是在这个档位的常规尺寸范围内影响被 Rsh 的分散度盖住了。我一般会在长宽比大于 5 的结构上把 ΔL 取 0短结构就干脆用仿真器给的实例参数不手算。2.2 同一个膜两个 RshW ≥ 2.0 与 0.18 ≤ W 2.0 的分档逻辑有硅化物 poly 的方块电阻是分两档给的膜层有效宽度Rsh (Ω/sq)TC1TC2VC1VC2deltaW (µm)P poly w/i silicideW ≥ 2.07.8 ± 2.52.88E-35.01E-7−7.89E-46.19E-3−0.051P poly w/i silicide0.18 ≤ W 2.06.7 ± 3.52.88E-35.01E-7−7.89E-46.19E-3−0.051N poly w/i silicideW ≥ 2.07.4 ± 2.02.92E-32.66E-71.35E-37.15E-3−0.065N poly w/i silicide0.18 ≤ W 2.05.7 ± 4.22.92E-32.66E-71.35E-37.15E-3−0.065注意两件事。第一只有 Rsh 分了档温度系数、电压系数、deltaW 都是两档共用——这说明分档的来源是几何相关的制备效应窄线条的硅化物晶粒更细、成核更不充分方块电阻反而更低而不是材料本身变了。第二窄档的分散度明显更差P 从 ±2.5 掉到 ±3.5N 从 ±2.0 掉到 ±4.2N 的相对误差直接翻倍。这个 ±4.2 对 5.7 意味着接近 ±74% 的 3σ 分散你要拿它做精密比例或匹配基本只能靠版图上的同向同尺寸去对冲靠绝对值是没戏的。档位边界在 W 2.0 µm 处是个台阶7.8 跳到 6.7落差 14%。模型本身在这个点就是不连续的这不是 bug是拟合曲线在两个区间各用了一套参数。2.3 从 Rsh 到 R0一次乘法的量纲检查把公式落成代码其实只有几行但这几行里每个参数的单位都必须对得上。def r_silicided(rsh, tc1, tc2, vc1, vc2, L, W, dL, dW, T25.0, dV0.0, Tnom25.0): rsh : 方块电阻, ohm/sq (按 W 的档位选) dL : 长度修正, um (有硅化物档文档未给, 长宽比大时可取 0) dW : 宽度修正, um (注意这里可能是负数) dV : 电阻两端压差, V (一端接地, 另一端加 V) # 有效尺寸 绘制尺寸 - delta, delta 为负时有效宽度变大 R0 rsh * (L - dL) / (W - dW) dT T - Tnom fT 1.0 tc1 * dT tc2 * dT * dT # 温度二阶 fV 1.0 vc1 * dV vc2 * dV * dV # 电压二阶 return R0 * fT * fV # P poly w/i silicide, 窄档: L10um, W1.0um, 125 degC, 零偏 print(r_silicided(6.7, 2.88e-3, 5.01e-7, -7.89e-4, 6.19e-3, L10.0, W1.0, dL0.0, dW-0.051, T125.0)) # R0 6.7 * 10 / 1.051 ≈ 63.75 ohm # fT 1 0.288 0.00501 ≈ 1.293 # 结果 ≈ 82.4 ohm几处必须看清的地方。Rsh 的单位是 Ω/sq乘上 (L−ΔL)/(W−ΔW) 这个无量纲比值才得到 Ω中间没有任何隐藏的 1e-6 或 1e-4。dW 代入时要带着它的符号算W − (−0.051) 是加不是减写成 W − abs(dW) 就直接偏差 5%。最后dV 的定义是「一端接地、另一端施加 V」时的两端压差所以它是单端偏置不是差分电压你在一个两端都浮动的网络里直接套这个公式等于把共模当成了差模。3. 温度与电压系数TC1/TC2/VC1/VC2 的双二阶堆叠为什么能 work公式里温度和电压是两个独立因子相乘而不是相加也不是合成一个 (dT, dV) 的二维多项式。这个结构本身就是个设计选择它假定温度效应和电压效应在一阶上可分离交叉项被忽略。对这个精度量级的器件模型来说这个近似是够用的但你要知道它的边界——高温叠大偏置时交叉项的真实贡献不属于任何一个因子模型不会替你补。3.1 dT 与 dV为什么系数要乘「偏差」而不是「绝对值」dT T − 25 °CdV 是相对零偏的压差。用偏差而不是绝对值好处是系数直接就是「归一化灵敏度」TC1 2.88E-3 读作每偏离 25 °C 一度阻值变化 0.288%。这种写法让参数表可以横向比较不同膜层也让模型在标称点附近天然连续——dT 0 时两个因子都严格等于 1R 精确等于 R0不会因为参考点取整引入系统偏差。代价是中心点被钉死在 25 °C。如果你的电路工作在 −40 °C 到 125 °C 的整个区间误差会在两端各自累积而且不对称125 °C 一侧 dT 100−40 °C 一侧 dT −65同一组系数在两端产生的偏移量不同。做温度补偿时如果按「上下对称」去设计就会在冷端过补偿、热端欠补偿。3.2 二次项不是凑数满量程下它会变成主项很多人看到 TC2 5.01E-7 这种量级第一反应是「太小了可以扔掉」。先别急看一眼它乘的是什么dT²。dT 100 时 dT² 1e45.01E-7 × 1e4 5.01E-3也就是 0.5%。对比一阶项 2.88E-3 × 100 0.288二阶只有一阶的 1.7%。这档确实可以忽略。但换到无硅化物 poly 的 RgrainTC1 4.235E-3、TC2 −6.211E-6dT 100 时一阶贡献 0.4235、二阶贡献 −0.0621比例到了 14.7%。这时候扔掉二阶项125 °C 处的阻值就少算 6 个百分点。同一个文档里有些系数的二次项是装饰有些是主力判断标准只有一个TC2 × dT² 和一阶项比量级差多少。电压方向的情况更反直觉。有硅化物 N poly 的 VC1 1.35E-3、VC2 7.15E-3在 dV 3.3 V有效范围上限时一阶项1.35E-3 × 3.3 ≈ 4.5E-3即 0.45%二阶项7.15E-3 × 10.89 ≈ 7.8E-2即 7.8%二次项比一次项大一个数量级而且符号为正。P poly 更怪VC1 −7.89E-4 是负的VC2 6.19E-3 是正的低压时阻值微降高压时反超上升。这种「先降后升」的形态用纯粹的电场效应解释不通。我一般会这么理解这里的电压二次项在很大程度上吸收了焦耳自热。电阻上加电压就会耗散功率poly 的 TC1 是正的2.88E-3温度一升阻值就升而温升大致正比于功率、也就正比于 V²。所以 VC2 更像是「自热经温度系数折回来的等效电压系数」而不是一个独立的电学效应。这个解读有个可验证的推论VC2 的符号应该和 TC1 一致量级应该随热阻变化。表里四组有硅化物/扩散数据的 VC2 与 TC1 符号确实全同扩散电阻因为衬底导热好、热阻小VC2 只有 1E-4 量级比 poly 小两个数量级——和自热图像吻合。提示如果这个推论成立那么 VC2 是强环境相关的芯片贴在散热好的板上和封在密闭壳里实际表现会不一样。模型给的是标准测试条件下的值。3.3 电压系数用 dV 还是 |dV|极性和有效偏置区的约束无硅化物 poly 的三个分量Rint、Rgrain、Rp在公式里全部用 |dV|而有硅化物的整体公式用 dV。这个差别不是排版不一致。无硅化物 poly 的有效偏置范围给的是电流密度 0 ~ 0.5 mA/µm不是电压范围。这条约束说明它被当作一个「电流通路」来用两个方向都能走电流而界面耗尽层对两个方向的加宽是同向的——不管哪边电位高界面处的载流子耗尽都让电阻变大所以取绝对值才符合物理。扩散电阻的约束是单边的N 扩散 0 ~ 3.3 VP 扩散 −3.3 ~ 0 V。这是由阱/衬底结的正向偏置决定的越过这个边界衬底结开始导通你测的就不再是电阻而是个二极管。仿真器不会拦你它只会照着公式外推给你一个数学上光滑、物理上没意义的值。def bias_ok(kind, dV): 按文档给出的有效偏置范围做前置检查 limits { poly_silicided: (-3.3, 3.3), # N/P poly w/i silicide nplus_diff: (0.0, 3.3), # N diff w/o silicide pplus_diff: (-3.3, 0.0), # P diff w/o silicide } lo, hi limits[kind] if not (lo dV hi): raise ValueError(f{kind}: dV{dV} 超出模型有效范围 [{lo}, {hi}]) return True在网表里批量提取工作点时先过一遍这个检查比事后对着一条形状诡异的曲线猜原因要省事得多。4. 无硅化物电阻的四段串联模型Rcon、Rend、Rint、Rgrain、Rp 是怎么拆出来的有硅化物电阻可以整体当成一块均匀薄层一个 Rsh 加两个修正因子就够了。无硅化物 poly 不行——它上面盖着 CoSi2 和电阻保护层RPO电流从金属进 poly 的那一小段里掺杂浓度是被掏空的电阻高度集中在界面附近。整块用一个 Rsh 描述误差会大到没法用。4.1 从剖面到电路CoSi2 / RPO 界面耗尽层剖面从上往下是CoSi2 接触层、RPO 保护层、P 或 N poly 本体。RPO 挡住硅化物生成所以 poly 本体没被硅化但它和 CoSi2 的交界处掺杂原子被硅化物形成过程消耗掉留下一层低掺杂的耗尽区。这层耗尽区串联在电流路径上贡献了一个额外的电阻 Rend文档里明确写了它是「由 RPO 与硅化物界面处掺杂耗尽引入的附加电阻」。于是电路模型变成两端各一个接触电阻 Rcon两端各一个界面电阻 Rend中间一段本体电阻 Rp全部串联。R 2·Rcon 2·Rend Rp系数 2 是因为电流进出各经过一次结构上下对称。4.2 Rcon Rc/nc接触孔数量为什么是除数Rc 是单个接触孔的电阻nc 是接触孔个数默认值 2。多个孔并联所以是除不是乘。这里有一个文档没给全的地方Rc 的具体数值不在这张表里。表格给了 Rint、Rgrain、Rp 的测量值和温度电压系数唯独 Rcon 要跳回另一节「接触电阻」去取。参数分居两处是最常见的翻车点之一——只抄了这张表就动手算Rcon 要么被漏掉要么被随便填个数。nc 默认 2 这件事也值得警惕。默认值意味着「如果你不特别声明模型就按两个孔算」。你版图上画了四个孔却用默认模型接触电阻就被高估了一倍反过来只画了一个孔那就是低估。4.3 Rend Rint/(W − ΔW) Rgrain界面项按宽度归一界面电阻被拆成两块量纲不一样Rint 单位是 Ω·µm是「单位宽度的界面电阻」所以除以有效宽度 (W − ΔW) 才变成 Ω。宽度越大同样长度的界面上并联的通路越多电阻越小。Rgrain 单位是 Ω是晶粒边界贡献的固定项不随宽度变化直接相加。这个拆分反映了一个物理事实界面耗尽层的电阻正比于 1/W晶粒边界电阻大致正比于 L/W 里的 L 部分被 Rsh 吸收后剩下来的常数项。把两者混成一个「界面电阻」去拟合宽度扫描时会拟合不上。无硅化物 poly 的参数表是这样的参数P poly w/o silicideN poly w/o silicide单位Rp (方块电阻)311 ± 65292 ± 66Ω/sqRint66.9814.84Ω·µmRgrain39.3937.22ΩTC1 (Rp / Rint / Rgrain)−13.80E-6 / −1.790E-3 / 2.979E-3−1.102E-3 / −2.278E-3 / 4.235E-31/°CTC2 (Rp / Rint / Rgrain)581.1E-9 / −7.245E-6 / −2.295E-61.747E-6 / −21.29E-6 / −6.211E-61/°C²VC1 (Rp / Rint / Rgrain)78.52E-9 / 229.9E-9 / 291.0E-997.71E-9 / 371.3E-9 / 368.0E-91/VVC2 (Rp / Rint / Rgrain)−488.9E-15 / −1.779E-12 / −426.7E-15−1.974E-12 / 9.537E-12 / 4.404E-121/V²ΔL / ΔW0.04696 / 0.060610.07616 / 0.08333µm看 P 这一列Rint 是 66.98 Ω·µmW 1 µm 时界面项就是 66.98 Ω而 Rp 在 L 10 µm、W 1 µm 时是 311 × 10 / 0.94 ≈ 3309 Ω界面项只有 2%。但把 W 拉到 10 µm、L 缩到 1 µmRp 降到 33 Ω 量级界面项变成 6.7 Ω占比跳到 17%。这就是为什么窄而短的电阻必须用四段模型几何一变各分量的占比就重新洗牌。另外注意 P 的 TC1(Rp) 是 −13.80E-6几乎是零而 TC1(Rgrain) 是 2.979E-3正得明显。这说明方块电阻的温度特性被两种相反的机制抵消了而晶粒边界项没有被抵消。如果你只测总电阻随温度的变化会得出「这个电阻几乎不随温度变」的错误结论——某些尺寸下确实如此换个尺寸就不成立。4.4 两套公式的边界什么时候必须用四段模型判断标准不是「无硅化物就用四段」而是「界面项占比是否显著」。经验阈值如果 Rint/(W − ΔW) Rgrain 加起来不到 Rp 的 1%用整体 Rsh 单公式误差就在可接受范围内超过 5%四段模型和非四段的差别会直接吃掉你的匹配裕度。def r_nonsilicided(p, L, W, Rc, nc2, T25.0, dV0.0, Tnom25.0): p : dict, 含 rp_sheet / rint / rgrain 及其 tc1,tc2,vc1,vc2 Rc: 单孔接触电阻(ohms), 需从接触电阻章节取, 不在此表内 nc: 接触孔个数, 文档默认 2 dT T - Tnom v abs(dV) # 界面耗尽对两个极性同向, 取绝对值 def corr(base, tc1, tc2, vc1, vc2): fT 1.0 tc1 * dT tc2 * dT * dT fV 1.0 vc1 * v vc2 * v * v return base * fT * fV Rcon Rc / nc Rint corr(p[rint], p[rint_tc1], p[rint_tc2], p[rint_vc1], p[rint_vc2]) Rgrain corr(p[rgrain],p[rg_tc1], p[rg_tc2], p[rg_vc1], p[rg_vc2]) Rp corr(p[rp_sheet] * (L - p[dL]) / (W - p[dW]), p[rp_tc1], p[rp_tc2], p[rp_vc1], p[rp_vc2]) Rend Rint / (W - p[dW]) Rgrain # 界面项按有效宽度归一 return 2 * Rcon 2 * Rend Rp参数说明rp_sheet 走的是 Rp 自己那组 TC/VCrint 和 rgrain 各走各的三组系数不能混用abs(dV) 只作用在 vc 项上tc 项用的是 dT没有绝对值问题Rc 必须外部传入代码里故意不给默认值就是为了避免忘记。4.5 同一个文档里的两个版本这一点比较值得注意文档前面写的是 R 2·Rc 2·Rint 2·Rgrain Rp后面电路模型那节写的是 R 2·Rcon 2·Rend Rp其中 Rcon Rc/nc、Rend Rint/(W−ΔW) Rgrain。两个式子形式不同后一个才是完整的。前一个大概是简写版把宽度归一和孔数分摊都省了——按它算W 10 µm 的电阻界面项会被放大十倍。以电路模型那一版为准因为只有它引入了 nc 参数和宽度归一。5. 避坑与排查模型参数代入后仿真对不上时的五条经验5.1 公式版本与参数口径现象按文档前半页的公式手算无硅化物 poly 电阻和仿真器结果差 20% 以上且宽度越宽差得越多。原因用了简写版 R 2·Rc 2·Rint 2·Rgrain Rp漏掉了 Rint 的宽度归一和 Rc 的孔数分摊。解决以电路模型那一节为准Rcon Rc/nc、Rend Rint/(W−ΔW) Rgrain。改完先做个宽度扫描自查固定 LW 从 1 µm 扫到 20 µm总电阻应该单调下降且下降斜率会随着 W 变大逐渐变缓因为 Rp 项也在变不该出现斜率突然反向。现象同一份参数别人算出来的和你的对不上差一个固定比例。原因deltaW 的符号。无硅化物档 ΔW 是正的 0.06 µm 量级有硅化物档是负的 0.05 µm 量级。用 W − ΔW 时正负号必须保留写成 W − abs(ΔW) 会让有硅化物档的直接偏 5% 左右而且宽度越小偏得越多。解决把 Δ 当成有符号量直接参与运算不要在代码里加 abs。审查时抽查一个 W 0.5 µm 的窄电阻正负号错了在这个尺寸上最容易暴露。5.2 档位与几何边界现象把某个 poly 电阻从 W 2.1 µm 改到 W 1.9 µm其他什么都不动仿真结果的阻值跳了 10% 以上看起来像模型不连续。原因它就是真的不连续。有硅化物 poly 的 Rsh 在 W 2.0 µm 处分档7.8 和 6.7 之间有个台阶模型没有做过渡插值。解决不要把对精度敏感的电阻画在档位边界附近。如果版图空间受限必须靠近就在 W 2.0 两侧各做一次仿真把两个值都记下来当上下界用裕度覆盖这个台阶而不是指望模型平滑。同理±2.5 和 ±3.5 的分散度差异在窄档更明显匹配对要尽量往宽档放。5.3 偏置范围与收敛现象N 扩散电阻在某个工作点给了负电压仿真器不报错跑出来的阻值比标称值低了 15%曲线看着还挺光滑。原因模型的有效偏置范围是 N 扩散 0 ~ 3.3 V、P 扩散 −3.3 ~ 0 V反偏时衬底结开始参与导电公式照常外推但物理图像已经变了。解决在提取工作点的脚本里加前置断言把三类器件的有效区都写成硬约束见 3.3 的 bias_ok越界直接抛错。别指望仿真器帮你拦它只负责解方程。现象无硅化物 poly 电阻上电流设得比较大阻值明显偏离模型直流工作点扫描还出现了不收敛。原因这类电阻的有效偏置范围是电流密度 0 ~ 0.5 mA/µm不是电压。按电压设偏置很容易在窄条上把电流密度顶穿非线性和自热一起上来。解决把电流约束换算成密度检查I/(W) ≤ 0.5 mA/µmW 用有效宽度。这个约束在版图评审阶段就该过一遍等到仿真阶段才发现往往意味着要改尺寸或改结构。6. 查表曲线 vs 系数模型为什么模型宁可塞十几个系数到这里可以回答一个更上位的问题既然最终只是要一个阻值为什么不直接给一条「阻值 vs 尺寸」的查表曲线非要给一堆 TC1、TC2、VC1、VC2、ΔL、ΔW因为查表只能覆盖你想到的那几个点。电阻的自由度至少是四维的——L、W、T、偏置再加上工艺角。要在 −40 ~ 125 °C、−3.3 ~ 3.3 V、0.18 µm 到几十 µm 的宽度范围内都给出可用值一张表要么大到没法维护要么稀疏到需要插值而插值出来的值在档位边界和极性翻转处必然失真。系数模型把这四维压成了几个可分离的因子相乘代价是引入了「可分离」这个近似交叉项被丢掉换来的是任意点上都能算、且在每个维度上都能看出物理含义。这个取舍有一个可验证的副作用如果模型真的抓住了主要机制那么用它外推到参数表没覆盖的尺寸时误差应该随尺寸偏离单调增长而不是随机跳。我一般会拿两个已知点做交叉验证——比如用 W 1 µm 和 W 10 µm 的实测值反解 ΔW看解出来的是不是和表里给的 −0.051 一个量级如果反解出来的值符号相反或者差三倍说明这个尺寸段里还有表没写出来的机制比如窄线宽下的硅化物非均匀性这时候任何外推都不可信。另一个绕不开的取舍是精度和鲁棒性的分配。窄档 N poly 的 ±4.2 Ω/sq 分散度是被刻意保留在模型里的真实工艺波动不是拟合误差。模型不去平滑它因为平滑了就掩盖了「这个尺寸不能做精密匹配」这个事实。反过来温度和电压系数被拟合成光滑的二阶多项式是因为这两维的物理机制足够连续、可以用解析式描述。哪些量该粗、哪些量该细本身就是一份工艺能力的说明书。建模选择覆盖的维度代价单一 Rsh ΔL/ΔW几何窄尺寸下误差大需要分档分档 Rsh几何 工艺非均匀性档位边界不连续TC1/TC2 二阶温度−40 ~ 125 °C交叉项丢失两端不对称累积VC1/VC2 二阶偏置隐含自热强环境相关四段串联Rcon/Rend/Rp界面物理参数分散在多节易漏取 Rc从那以后我每次拿到一份新的器件模型规范都会先做三件事把所有 Δ 的符号单独列一行确认把每个二阶系数乘以它对应变量的满量程平方看它到底是装饰还是主项把所有「有效范围」的约束写成断言塞进提取脚本。这三步花不了半小时但能挡掉后面几天的对不上账。希望帮到你。本文还有配套的精品资源点击获取