2. DC参数测试-开短路测试
任务定义
本案例实现芯片引脚的开短路(接触)测试。测试原理:每个芯片引脚对电源(VDD)和地(VSS)均存在ESD保护二极管。当对引脚施加正向或反向偏置电流时,通过测量引脚电压可判断二极管特性是否正常,从而检测引脚是否存在开路(引脚悬空/断裂)或短路(引脚间桥连/对电源地短路)缺陷。
测试原理与判定逻辑
开短路测试通常包含两项子测试:
- 正向二极管测试(对VSS):对引脚施加正向电流(如+100µA),电流从引脚经二极管流向VSS,测量引脚电压。正常范围约0.4V~0.9V(硅二极管压降)。若电压接近0V,说明引脚对地短路;若电压过高(超过1.5V)或无法建立,说明引脚开路。
- 反向二极管测试(对VDD):对引脚施加反向电流(如-100µA),电流从VDD经二极管流入引脚,测量引脚电压。正常范围约VDD-0.9V ~ VDD-0.4V。若电压接近VDD,说明引脚对VDD短路;若电压过低或无法建立,说明引脚开路。
代码实现
以下Python代码模拟ATE测试机对一组引脚执行开短路测试。代码包含:引脚定义、测试参数配置、二极管特性模拟(用于演示判定逻辑)、测试执行与结果判定。
import math
# ========== 配置区 ==========
VDD = 3.3 # 电源电压
I_FORCE = 100e-6 # 正向测试电流 +100µA
I_REVERSE = -100e-6 # 反向测试电流 -100µA
V_FWD_MIN = 0.4 # 正向二极管压降下限
V_FWD_MAX = 0.9 # 正向二极管压降上限
V_REV_MIN = VDD - 0.9 # 反向测试电压下限
V_REV_MAX = VDD - 0.4 # 反向测试电压上限
# 待测引脚定义: (名称, 正向压降模拟值, 反向压降模拟值)
# 模拟值用于演示判定逻辑; 实际测试中由硬件测量得到
pins = [
("PIN1", 0.65, VDD - 0.65), # 正常
("PIN2", 0.02, 0.02), # 对地短路
("PIN3", 2.50, 2.50), # 开路(无法建立压降)
("PIN4", 0.70, VDD - 0.70), # 正常
("PIN5", 0.68, VDD - 0.05), # 对VDD短路
]
# ========== 测试执行 ==========
def run_os_test(pin_name, v_fwd_measured, v_rev_measured):
"""对单个引脚执行开短路判定"""
# 正向测试(对VSS二极管)
if v_fwd_measured < V_FWD_MIN:
fwd_result = "FAIL - 对地短路(压降过低)"
elif v_fwd_measured > V_FWD_MAX:
fwd_result = "FAIL - 开路(压降过高)"
else:
fwd_result = "PASS"
# 反向测试(对VDD二极管)
if v_rev_measured < V_REV_MIN:
rev_result = "FAIL - 开路(压降过低)"
elif v_rev_measured > V_REV_MAX:
rev_result = "FAIL - 对VDD短路(压降过高)"
else:
rev_result = "PASS"
# 综合判定
if fwd_result == "PASS" and rev_result == "PASS":
overall = "PASS"
else:
overall = "FAIL"
return fwd_result, rev_result, overall
# ========== 主流程 ==========
print(f"{'引脚':<6} {'正向电压(V)':<12} {'反向电压(V)':<12} {'正向判定':<22} {'反向判定':<22} {'总判定'}")
print("=" * 100)
for pin_name, v_fwd, v_rev in pins:
fwd_res, rev_res, overall = run_os_test(pin_name, v_fwd, v_rev)
print(f"{pin_name:<6} {v_fwd:<12.3f} {v_rev:<12.3f} {fwd_res:<22} {rev_res:<22} {overall}")
# ========== 统计 ==========
total = len(pins)
passed = sum(1 for _, v_f, v_r in pins
if run_os_test(_, v_f, v_r)[2] == "PASS")
print("=" * 100)
print(f"总计: {total} 引脚, 通过: {passed}, 失败: {total - passed}")
代码说明
代码中pins列表的电压值用于演示判定逻辑——实际ATE测试中,这些电压由测试机对引脚施加电流后测量得到。核心函数run_os_test()接收实测电压值,按阈值区间判定每项子测试结果,并给出综合PASS/FAIL。判定标准:正向压降在0.4V~0.9V之间且反向压降在VDD-0.9V~VDD-0.4V之间时判定为通过。
运行与验证
运行方式:将代码保存为os_test.py,在Python 3环境中执行python os_test.py。
预期输出:程序打印每个引脚的测试电压、各项判定结果和最终统计。根据代码逻辑可推出:PIN1和PIN4应判定为PASS;PIN2因正向压降0.02V低于下限判定为对地短路;PIN3因压降2.50V超出上限判定为开路;PIN5因反向压降3.25V(VDD-0.05)高于上限判定为对VDD短路。最终统计为2通过、3失败。
验证方法:检查输出中每个引脚的判定是否与上述预期一致。若需验证真实硬件,将pins中的模拟电压替换为测试机实际测量值即可。
测试拓扑示意
判定标准:正向测试中引脚电压在0.4V~0.9V区间且反向测试中引脚电压在VDD-0.9V~VDD-0.4V区间时,该引脚判定为PASS;任一子测试超出对应区间即判定为FAIL。实际生产测试中,同一引脚的两项子测试均通过才认为引脚接触良好。