4. 电阻测试结构:设计、测量与提取

电阻测试结构,听起来简单,但要做到「测出来就是准的」,其实门道不少。我见过不少新同事,把四个焊盘一画就觉得完事了,结果量出来的数据根本没法用。

说白了,一个靠谱的电阻测试结构,要回答三个问题:怎么设计才能避免寄生效应?怎么测才能消除接触电阻?怎么提取才能得到真实的薄层电阻?

核心思路:电阻测试结构的关键,在于把被测电阻与接触电阻、引线电阻分离开。分离得越干净,数据就越真。

电阻测试结构知识体系 设计原则:四端法与开尔文结构 布局关键:传导线与端头 测量方法:恒流源与电压表 提取算法:Greeks法则与校正 电阻主体:L/W 设计 匹配与隔离 传导线:电流电压分离 端头效应修正 恒流源:电流大小选择 电压表:高阻抗输入 自动切换与补偿 多次扫描取平均 原始数据:V/I 换算 电阻 = V / I 薄层电阻:Rs = R * W / L 端头修正系数 α 目标:高精度、高重复性、低寄生

4.1 设计:结构与尺寸

我最早做电阻结构时吃过一次亏。设计的尺寸太小,结果光刻偏差对电阻值的影响非常大,批量数据离散得一塌糊涂。所以设计的第一步,是搞清你要测什么。

4.1.1 四端法结构

四端法,也叫开尔文结构。原理很简单:两条线通电流,两条线测电压。这样电流回路的接触电阻和引线电阻,就不会串到电压测量回路里去。

你想想看,如果只用两端法,接触电阻可能有几欧姆,而你要测的电阻可能才几十毫欧,那数据基本就废了。

设计要点清单:

  • 电流端(Force):从外端接入,走大电流不发热
  • 电压端(Sense):从内端引出,走极小电流不影响电位
  • 传导线长度:过长会增加寄生电阻和压降
  • 端头尺寸:一般取电阻主体宽度的 2-3 倍,以减少端头效应

4.1.2 尺寸选择逻辑

电阻的阻值由 Rs * (L/W) 决定。Rs 是薄层电阻,单位是 Ω/□。但实际结构中,端头电流会扩散,等效的 L 和 W 会变。我用过的一个经验规则是:

  • 长宽比(L/W):至少在 5:1 以上,端头效应才足够小
  • 宽度 W:大于最小设计规则的 3 倍,避免线宽偏差影响过大
  • 长度 L:大于最小尺寸的 10 倍,利于端头修正

我个人习惯:在同一晶圆上放至少三个不同 L/W 的电阻组。比如 5:1、10:1、20:1。这样通过回归就能直接算出 Rs 和端头修正量,比单点靠谱得多。

4.1.3 端头修正

实际电流在端头处不是垂直进出,而是有弧线流动。这会让有效长度 L 变短。修正公式一般是:

R_measured = Rs * (L_eff / W)
L_eff = L_drawn - 2 * ΔL

这个 ΔL 和端头形状、端头与连接孔的间距都有关系。我曾经做过一组实验,发现若端头距离接触孔不足 5 μm,ΔL 会增大 30% 以上。

4.2 测量:硬件与步骤

设计做好了,测量也不能马虎。这里说几个关键点,都是我踩过坑后才明白的。

4.2.1 测量硬件配置

最常用的配置是:恒流源 + 数字电压表 + 开关矩阵。我建议恒流源输出电流稳定度要优于 0.1%,电压表分辨率至少 1 μV。

参数 推荐值 备注
恒流源电流 100 μA ~ 1 mA 视电阻大小调整,防止自发热
电压表输入阻抗 >10 GΩ 避免分流
采样延迟 50 ~ 200 ms 等电流稳定后再采集
扫描次数 ≥ 5 次 取中位数或平均值

4.2.2 编程实现

下面是一个伪代码示例,展示测量流程:

# 恒流源初始化
source.set_current(500e-6)  # 500 μA
source.output(True)

# 遍历所有电阻测试结构
for each structure in DUT_list:
    # 通过开关矩阵连接
    switch.connect(channel_force_high)
    switch.connect(channel_force_low)
    switch.connect(channel_sense_high)
    switch.connect(channel_sense_low)
    
    # 等待稳定
    delay(100e-3)
    
    # 采集电压
    V = voltmeter.measure()
    
    # 记录原始数据
    data[structure.id] = {"I": 500e-6, "V": V}

# 提取电阻
for id, sample in data.items():
    R = sample["V"] / sample["I"]
    # 根据 L/W 计算 Rs
    Rs = R * sample["W"] / sample["L"]

我曾经遇到一个案例:一个同事用 10 mA 电流去测一个 10 Ω 的电阻结构,结果电阻因自发热增大了 5%。测量时一定要确认电流密度不超过 1×10⁵ A/cm² 的经验极限。否则你测出的根本不是真实薄层电阻。

4.3 提取:从数据到物理参数

数据采回来只是第一步。你要从一堆 V/I 数字中,把真正的 Rs 和修正因子提取出来。

4.3.1 Greeks法则应用

Greeks法则是对多结构数据的统计算法。核心思想是:对不同 L/W 的结构,测量其总电阻 R_total,然后做线性回归。

公式是:

R_total = Rs * (L_drawn / W) + 2 * R_contact

其中,R_contact 是单端接触电阻。

画出 L_drawn 和 R_total 的曲线,斜率就是 Rs/W,截距就是 2*R_contact。这个方法能同时分离出薄层电阻和接触电阻,非常实用。

4.3.2 数据筛选

实际测量中,总会有异常点。比如探针打偏了,或者有颗粒污染。我一般用两个指标剔除数据:

  • 残差阈值:拟合残差超过 5% 的点直接剔除
  • 重复性要求:同一组结构的多次测量,RSD 应 < 2%

小技巧:在提取 Rs 时,同时记录 V 和 I 的极性翻转数据。正反向各测一次取平均,可以消除热电势和偏移电压的影响。

4.3.3 温漂与补偿

电阻结构对温度敏感。Si 的电阻温度系数(TCR)大约是 0.1%/℃。如果测量时温度变化 1 ℃,结果偏差能有 0.1%。在量产测试中,我建议在探针台旁边贴一个热电偶,同时记录温度,后处理时做线性补偿。

# 温度补偿范例
def compensate_R(R_measured, T_measured, T_reference, TCR):
    return R_measured / (1 + TCR * (T_measured - T_reference))

# TCR 一般取 0.001 /℃ 作为近似

4.4 常见问题与避坑

问题一:测量值偏小

原因通常是电压端感受压太小,或者探针接触不良。解决方案:用电流-电压四线测试,并定期用标准电阻校准整个测量回路。

问题二:数据离散度大

可能是因为电阻结构旁边的 dummy 不够,或者周边有漏电路径。我建议在结构周围加一圈 guard ring 接地。

问题三:提取的 Rs 与设计值不符

检查端头修正系数是否使用正确。如果没有经过校准的端头修正表,宁可先做一组不同 L/W 的实验标定。

嗯,该说的也就这些了。电阻测试结构,设计与测量各占一半,提取则考验你的数据处理功底。把这些点吃透了,测试出来的 Rs 值才不会坑了后面的工艺监控。