
简介这份资料是 TSMC 关于 MIM 电容与 RF 电阻模型的官方技术文档面向模拟/射频 IC 设计工程师、版图工程师及微电子相关专业学习者用于解决 MIM 电容建模、电阻参数提取与电路仿真中的参数取值问题。压缩包内共 1 个 PDF 文件约 2.2MB内容为原厂规范文档便于直接查阅与归档。已有 1853 人学习下载具备较高的工程参考价值。文档围绕测量结果展开给出 Sheet Resistance Table 与 Film Parameters覆盖 P poly、N poly、P diff、N diff 等 film 类型在有无 silicide 条件下的 Rp、Rint、Rgrain 参数并列出 TC1、TC2、VC1、VC2 等温度与电压系数同时提供电阻等效电路模型及 R0 由 Rsh 与 deltaL、deltaW 计算的关系式说明 -40°C~125°C 温度范围与 -3.3~3.3V 电压范围内的适用条件。读者可据此理解 MIM 电容性能、完成电阻模型参数代入与设计校核适合作为设计参考与学习资料。1. 拿到一份“名不副实”的工艺文档MIM 电容标题下全是电阻模型如果你在找 MIM 电容的工艺参数翻到一份标题写着 MIM 电容介绍、正文却整页都是 P poly、N poly、diff 电阻表格的文档先别急着关掉。这份材料真正值钱的地方恰恰是那张 Sheet Resistance Table 和后面那套电阻等效电路模型——它把版图尺寸、方块电阻、温度系数、电压系数串成了一条能直接算数的链路。做模拟前端、偏置网络、RC 滤波或者匹配网络的工程师只要用到 poly 电阻或扩散电阻这份文档就是绕不开的底稿。它适合两类人一是要手算阻值、评估温漂的模拟设计者二是要把工艺参数落进仿真模型、做 corner 分析的版图与建模人员。下面按“参数怎么读、模型怎么套、坑在哪”拆开讲。2. 拆解 Sheet Resistance TableRp、Rint、Rgrain 到底谁管谁2.1 四种 film 的阻值分层逻辑文档把电阻膜分成四类P poly w/o silicide、N poly w/o silicide、P diff w/o silicide、N diff w/o silicide另外还给了带 silicide 的 poly 和 diff 的方块电阻。这里最容易翻车的是把“带 silicide”和“不带 silicide”的模型混用。带 silicide 的 poly电流主要走上面的低阻硅化物层所以模型退化成单一 R0 加温度、电压修正不带 silicide 的 poly电流被迫穿过整个多晶硅膜界面和晶粒边界开始主导于是才有 Rint、Rgrain 这两个额外项。从表格看P poly w/o silicide 的 Rp 是 311±65 Ω/sqRint 是 66.98 Ω·umRgrain 是 39.39 ΩN poly w/o silicide 对应 292±66、14.84、37.22。注意 Rint 的单位是 Ω·um不是 Ω/sq它跟宽度相关套公式时必须先除以有效宽度。扩散电阻那边N diff w/o silicide 是 59±5.8 Ω/sqP diff 是 133±19 Ω/sq这两个没有给 Rint、Rgrain 的分项直接用 R0 加 TC、VC 修正即可。提示表格里 Rp 那一列下面还有一串 TC1、TC2、VC1、VC2 的数字它们不是独立参数而是分别对应 Rp、Rint、Rgrain 三个分量的温度/电压系数读表时按行对齐别串行。2.2 有效宽度与 deltaW 的修正关系带 silicide 的 poly 表格里有一列 deltaWP 是 -0.051 umN 是 -0.065 um。这个负值意味着实际导电宽度比画出来的 W 要宽计算 R0 时公式是 Rsh*(L-deltaL)/(W-deltaW)deltaW 为负相当于分母变大、阻值变小。很多新手直接拿 drawn W 去算结果跟实测差出几个百分点在匹配要求高的偏置电路里就是致命的。不带 silicide 的 poly 没有单独列 deltaW但 Rint 项里写的是 Rint/(W-DeltaW)说明同样要做宽度修正。我一般会先把 deltaW 代进去算一遍再用 drawn 尺寸算一遍两者差值超过 3% 就说明这个电阻对宽度敏感版图上要留够余量。扩散电阻的表格没给 deltaW但注明了带 silicide 的 N、P diff 方块电阻是 geometry dependent意思是窄条和宽条的 Rsh 不一样不能一个值用到底。2.3 用 Python 把表格参数变成可算的阻值把表格抄进脚本是第一步关键是让公式和参数一一对应。下面这段代码把 P poly w/o silicide 的完整模型跑一遍输入 drawn L、W 和温度、偏压输出总电阻。# P poly w/o silicide 电阻估算参数取自文档表格 Rp_sheet 311.0 # Ohm/sq, Rp 均值 Rint 66.98 # Ohm*um Rgrain 39.39 # Ohm deltaW 0.0 # 该 film 未单列 deltaW先按 0 处理 TC1_Rp, TC2_Rp -13.80e-6, 581.1e-9 TC1_Rint, TC2_Rint -1.790e-3, -7.245e-6 TC1_Rgrain, TC2_Rgrain 2.979e-3, -2.295e-6 VC1_Rp, VC2_Rp 78.52e-9, -488.9e-15 VC1_Rint, VC2_Rint 229.9e-9, -1.779e-12 VC1_Rgrain, VC2_Rgrain 291.0e-9, -426.7e-15 def poly_resistor(L, W, T25.0, dV0.0, nc2): dT T - 25.0 # 三个分量各自做温度、电压修正 rp Rp_sheet * (L / (W - deltaW)) * (1 TC1_Rp*dT TC2_Rp*dT**2) \ * (1 VC1_Rp*abs(dV) VC2_Rp*dV**2) rint (Rint / (W - deltaW)) * (1 TC1_Rint*dT TC2_Rint*dT**2) \ * (1 VC1_Rint*abs(dV) VC2_Rint*dV**2) rgrain Rgrain * (1 TC1_Rgrain*dT TC2_Rgrain*dT**2) \ * (1 VC1_Rgrain*abs(dV) VC2_Rgrain*dV**2) # 两端各一份 Rint 和 Rgrain接触电阻按 nc 分摊 return 2*rp 2*rint 2*rgrain print(poly_resistor(L10, W1, T85, dV0.3))这段代码的逻辑是严格照文档的 R 2Rc 2Rint 2Rgrain Rp 展开其中 Rp 用 Rsh(L-deltaL)/(W-deltaW) 算Rint 和 Rgrain 各自带温度和电压修正。参数说明L、W 用 umT 用摄氏度dV 是电阻两端压差nc 是接触孔个数默认 2。注意 Rint 项里除的是 (W-deltaW)不是 W宽度越小这一项越大窄电阻的界面电阻占比会明显上升。跑完可以改 T 到 -40 和 125看阻值漂多少这就是后面 corner 分析的输入。3. 套用电阻等效电路温度系数与电压系数的正确打开方式3.1 带 silicide 与不带 silicide 的公式分叉文档把电阻分成两组公式。带 silicide 的 poly 和 diff 用 R R0*[1VC1dVVC2dV²][1TC1dTTC2*dT²]一个 R0 打天下不带 silicide 的 poly 则拆成 Rint、Rgrain、Rp 三项每项都有自己的 TC、VC 系数而且 Rint 和 Rgrain 的电压项用的是 |dV| 而不是 dV。这个绝对值不是笔误它反映的是界面耗尽层对偏压极性不敏感正反偏都会让阻值变化。如果你在代码里漏了 abs负偏压下的结果会偏。电压有效范围也要盯住带 silicide 的 poly 是 -3.3~3.3VN diff 是 0~3.3VP diff 是 -3.3~0V。扩散电阻是单边的因为它是靠衬底偏置工作的反偏方向不能随便用。不带 silicide 的 poly 给的是 0~0.5mA/um 的电流密度限制不是电压限制换算时要用电流乘电阻反推压降别直接套 3.3V。3.2 温度扫描与电压扫描的实操步骤做温漂评估时固定 dV0把 T 从 -40 扫到 125步长 5 度画一条阻值曲线。做电压系数评估时固定 T25把 dV 在有效范围内扫注意 poly w/o silicide 要用电流密度上限反算最大 dV。下面这段脚本把两种扫描一起跑输出极值点。import numpy as np temps np.arange(-40, 126, 5) vals [poly_resistor(L10, W1, Tt, dV0.0) for t in temps] print(Tmin R:, min(vals), Tmax R:, max(vals)) print(drift %:, (max(vals)-min(vals))/vals[0]*100) # 电压扫描先按 0.5mA/um 电流密度估最大压降 Imax 0.5e-3 * 1 # W1um Rnom poly_resistor(L10, W1, T25, dV0.0) dVmax Imax * Rnom dvs np.linspace(0, dVmax, 20) vvals [poly_resistor(L10, W1, T25, dVv) for v in dvs] print(dVmax:, dVmax, R range:, min(vvals), max(vvals))逻辑说明第一段扫温度看 -40 到 125 的阻值漂移百分比这个数直接决定偏置电流的温漂预算。第二段先用电流密度上限估出最大压降再在这个范围内扫电压避免超出文档给的有效偏置区。参数上Imax 按每微米宽度 0.5mA 算W1um 就是 0.5mA乘标称电阻得到压降上限。如果算出来的 dVmax 超过 3.3V说明这个尺寸的电阻不能用到满电流密度要么加宽要么降电流。3.3 接触孔个数 nc 对总阻值的影响文档在电路模型里写了 Rcon Rc/ncnc 默认 2。这意味着接触电阻是并联分摊的接触孔越多Rcon 越小。但注意 Rint 和 Rgrain 是串在电流路径上的不随 nc 变。所以窄电阻、少接触孔的结构里Rcon 可能占总阻值的可观比例。我一般会在脚本里把 nc 做成参数版图定下来之前先跑 nc2 和 nc4 两版看差多少差得多就在版图上多加孔。注意文档只给了 Rcon 的表达式没给 Rc 的具体数值实际使用时 Rc 要从工艺侧或测试结构里取别自己拍一个数填进去。4. 避坑与排查五个让仿真和实测对不上的细节4.1 现象仿真阻值比实测低一截原因漏了 deltaW 修正带 silicide 的 poly 表格里 deltaW 是负值P 为 -0.051umN 为 -0.065um。如果按 drawn W 直接算分母偏小阻值偏大但很多人反过来把 deltaW 当正值减掉结果分母更小阻值更大。正确做法是 W-deltaWdeltaW 为负时相当于加宽。排查方法拿一个 W1um 的电阻分别用 W 和 W-deltaW 算差值应该在 5% 上下对不上就检查符号。4.2 现象负偏压下阻值算出来偏大原因Rint、Rgrain 的电压项没取绝对值不带 silicide 的 poly 模型里Rint 和 Rgrain 的电压修正用的是 |dV|Rp 用的是 dV。如果统一写成 dV负偏压时一次项变号阻值走向就反了。排查时把 dV 设成 -0.3 和 0.3 各跑一遍正确模型下 Rint、Rgrain 两项应该对称Rp 项不对称。对不上就回去看公式里的绝对值符号。4.3 现象扩散电阻在负压区仿真报错或结果离谱原因有效电压范围用反了N diff 的有效范围是 0~3.3VP diff 是 -3.3~0V。这两个是单边偏置因为扩散电阻依赖衬底结的反偏。如果在 N diff 上加负压模型公式还能算但已经出了文档给的有效区结果不可信。排查方法在脚本入口加一个范围检查超出就打印警告别让错误数据静默流进 corner 表。4.4 现象高温下阻值漂移比预期大原因TC2 项被忽略TC1 是一次项TC2 是二次项在 125°C 时 dT100TC2dT² 的量级不一定小。比如 Rp 的 TC2 是 581.1E-9乘 10000 是 5.8E-3跟 TC1dT 的 -1.38E-3 同量级甚至更大。只留 TC1 会低估高温漂移。排查把 TC2 置零和不置零各跑一遍差值超过 1% 就不能省。4.5 现象接触孔从 2 加到 4阻值几乎没变原因Rc 没进模型或占比太小RconRc/nc如果 Rc 本身很小nc 翻倍对总阻值影响有限。这时候别怀疑公式先算 Rcon 占总阻值的比例。占比低于 2% 就说明这个结构对接触孔数不敏感版图上不必为此加孔。反过来如果占比高但改 nc 没反应检查脚本里 nc 是不是真的传进去了。5. 把参数表变成可复用的 corner 模板一个电阻模型的落地习惯走到这一步表格里的数已经不是用来“看”的而是用来“跑”的。我习惯把四类 film 的参数写成一个字典每个 film 带自己的公式分支跑 corner 时只换 T、dV 和工艺偏移不碰公式本体。下面这个结构可以直接抄走。FILMS { P_poly_silicide: {Rsh: 7.8, dW: -0.051, TC1: 2.88e-3, TC2: 5.01e-7, VC1: -7.89e-4, VC2: 6.19e-3, vrange: (-3.3, 3.3)}, N_poly_silicide: {Rsh: 7.4, dW: -0.065, TC1: 2.92e-3, TC2: 2.66e-7, VC1: 1.35e-3, VC2: 7.15e-3, vrange: (-3.3, 3.3)}, N_diff: {Rsh: 59.0, dW: 0.0, TC1: 1.47e-3, TC2: 8.32e-7, VC1: 7.55e-4, VC2: 1.97e-4, vrange: (0, 3.3)}, P_diff: {Rsh: 133.0, dW: 0.0, TC1: 1.43e-3, TC2: 7.82e-7, VC1: -1.19e-3, VC2: -1.80e-4, vrange: (-3.3, 0)}, } def simple_res(film, L, W, T25.0, dV0.0): p FILMS[film] lo, hi p[vrange] if not (lo dV hi): print(fwarning: dV{dV} out of {film} range {p[vrange]}) dT T - 25.0 r0 p[Rsh] * (L - 0.0) / (W - p[dW]) return r0 * (1 p[VC1]*dV p[VC2]*dV**2) \ * (1 p[TC1]*dT p[TC2]*dT**2)这个模板只覆盖带 silicide 的 poly 和扩散电阻因为它们的公式统一不带 silicide 的 poly 单独走前面那个三分量函数。字典里 vrange 用来做入口检查dW 为负的 film 在分母里自动加宽。跑 corner 时把 Rsh 按 ±3σ 偏移、T 取 -40/25/125、dV 取范围两端三组一组合就是一张能直接贴进仿真报告的阻值表。最后说个血泪经验我最早做偏置网络时直接拿表格里的 Rsh 均值算完就投了版图没跑温度扫描结果高温下电流掉了将近两成回头查才发现 TC2 项在 125°C 贡献了将近一半的漂移。从那以后我每次拿到这类工艺文档都强制先把 TC1、TC2、VC1、VC2 四项代进去跑一遍全温区扫描再决定电阻尺寸和接触孔数。这份材料的价值不在标题在那几张表和那组公式照着跑一遍比读十页说明都管用。希望帮到你。本文还有配套的精品资源点击获取