4. 常见测试项目解析

量产测试里,测试项目看着多,但核心就三大类:DC测试、AC测试、功能测试。这三板斧砍下去,芯片90%的问题都能暴露出来。我这些年跟过的项目,不管工艺是90nm还是7nm,套路基本没变过。

今天咱们就把这三类测试掰开揉碎,看看每个项目到底测什么、怎么测、踩过哪些坑。

4.1 DC测试:漏电流与功耗

DC测试,说白了就是测芯片的“静态”特性。电源一加上,管脚电平一固定,剩下的就是看电流对不对。这里面最常碰到的两个项目:漏电流和功耗。

4.1.1 漏电流测试(IDDQ / IDD)

漏电流测试,我习惯叫它“芯片的体温计”。芯片正常工作时,电源到地之间总会有那么一点点漏电。如果漏电突然变大,说明内部可能有短路或栅氧击穿。

测试方法其实很简单:

  • 给芯片上电,所有输入管脚置为固定电平(VDD或GND)
  • 输出管脚不驱动负载(高阻态)
  • 测量VDD到VSS之间的静态电流

这里有个关键点——测试向量。不同的向量组合,漏电流大小不一样。我遇到过最头疼的一次,某个批次芯片IDDQ全超标,换了好几组向量才发现是某个内部节点浮空了。

我的习惯:至少准备3组不同的静态向量,交叉验证。如果3组都超标,基本可以判定芯片有问题;如果只有1组超标,先查测试向量设计。

漏电流的典型规格值,我整理了个表:

工艺节点 典型IDDQ(常温) 异常阈值 常见失效模式
180nm 1~10 µA > 50 µA 栅氧击穿、金属桥接
65nm 10~100 µA > 500 µA 多晶硅残留、接触孔失效
28nm 100 µA ~ 1 mA > 5 mA FINFET漏电、阱穿通
7nm 1~10 mA > 50 mA EOS损伤、栅极漏电
注意:漏电流对温度极其敏感。高温下漏电翻倍是正常的,别一看到高温漏电大就判Fail。我一般会看“温度系数”——如果漏电随温度变化异常陡峭,那才是真有问题。

4.1.2 功耗测试

功耗测试分两种:静态功耗和动态功耗。静态功耗就是上面说的漏电流,动态功耗是芯片在跑功能时的电流。

动态功耗测试,我常用的方法是:

  1. 加载一个“最坏情况”的功能向量(比如全翻转的pattern)
  2. 让芯片跑在最高频率
  3. 用电源上的电流探头或ATE的PMU测量平均电流
  4. P = VDD × IDD,算出来就是动态功耗

这里有个坑——电源去耦电容。ATE的电源路径上通常有去耦电容,如果电容太大,测出来的电流会偏小,因为电容在“帮忙”供电。我曾经因为这个原因,一批芯片功耗测试全Pass,结果客户那边上板子就过热关机。

避坑指南:测动态功耗时,ATE的电源去耦电容要控制在10µF以内。如果ATE板子上的电容拆不掉,那就用“脉冲法”——短时间(比如1ms)内测量电流变化,避开电容的平滑效应。

4.2 AC测试:建立时间与保持时间

AC测试,测的是芯片的“动态”特性。说白了就是看信号跑得快不快、时序对不对。这里面最核心的两个参数:建立时间(Setup Time)和保持时间(Hold Time)。

4.2.1 建立时间测试

建立时间,就是数据在时钟沿到来之前必须保持稳定的最短时间。如果数据来得太晚,触发器就采不到正确的值。

测试方法,我一般用“二分搜索”:

  • 先设一个宽松的建立时间(比如时钟周期的50%)
  • 逐步减小数据相对于时钟的延迟
  • 直到功能测试Fail,那个临界点就是实际的建立时间

举个例子,假设时钟周期是20ns:

// 伪代码示例
setup_time = 10ns  // 初始值
step = 1ns
while (function_test_pass) {
    setup_time = setup_time - step
    apply_timing(setup_time)
}
// 此时setup_time就是临界值
actual_setup = setup_time + step  // 加上最后一步

我记得有一次,某个芯片的建立时间规格是2ns,但测出来只有1.2ns。一开始以为是芯片有问题,后来查了半天,发现是ATE的时钟抖动太大,把测量结果“吃掉”了0.8ns。换了低抖动时钟源,结果就对了。

我的建议:建立时间测试一定要考虑ATE本身的抖动。如果ATE的时钟抖动是100ps,那测出来的建立时间就要加上100ps的余量。别让ATE的误差变成芯片的“假Fail”。

4.2.2 保持时间测试

保持时间,就是数据在时钟沿之后必须保持稳定的最短时间。如果数据变得太快,触发器同样会采错。

保持时间测试比建立时间麻烦,因为它是“负向”的——你要让数据在时钟沿之后尽快变化,看芯片能不能扛住。

测试步骤:

  1. 先设一个正常的保持时间(比如0ns)
  2. 逐步减小数据相对于时钟的延迟(让数据更早变化)
  3. 直到功能测试Fail

这里有个容易混淆的地方——建立时间和保持时间的关系。我画了个图来说明:

建立时间与保持时间示意图 CLK 时钟沿 DATA 建立时间 保持时间 建立时间:数据在时钟沿前必须稳定的时间 保持时间:数据在时钟沿后必须稳定的时间
关键点:建立时间和保持时间是“跷跷板”关系。你优化了建立时间,保持时间可能变差。量产测试时,两个都要测,不能只测一个。

4.3 功能测试

功能测试,是量产测试里最“实在”的一环。DC和AC测的是芯片的“体质”,功能测试测的是芯片的“脑子”——能不能正确干活。

4.3.1 功能测试的本质

功能测试,说白了就是给芯片输入一组向量,看输出对不对。但量产测试里,功能测试有个特殊要求——覆盖率。

你不能把所有功能都测一遍,那样测试时间太长。你得挑“最有可能出问题”的路径来测。我一般遵循“二八原则”:

  • 80%的测试向量覆盖20%最关键的路径
  • 剩下20%的向量覆盖其他路径

4.3.2 功能测试的向量类型

量产测试里,功能测试向量分几类:

向量类型 特点 适用场景
Scan Pattern 基于扫描链,覆盖率最高 数字逻辑测试
BIST Pattern 内建自测试,ATE负担小 存储器、SerDes
Functional Pattern 模拟真实应用场景 系统级验证
At-Speed Pattern 在芯片最高频率下运行 时序相关缺陷

我个人最看重的是At-Speed Pattern。很多芯片在低频下功能正常,一跑到高频就挂。这种“速度相关”的缺陷,只有At-Speed测试才能抓出来。

4.3.3 功能测试的常见问题

功能测试Fail,原因往往不在芯片本身。我遇到过几次“假Fail”:

  • ATE通道延迟不匹配:不同通道的延迟差了几百ps,导致数据采样错位
  • 负载板走线过长:信号反射导致波形畸变
  • 电源噪声:ATE电源纹波太大,芯片内部逻辑误翻转
经验之谈:功能测试Fail后,别急着判芯片坏。先做三步排查:1)换一台ATE重测;2)换一块负载板重测;3)降低频率重测。如果三步都Fail,那才是真有问题。

4.4 三类测试的协同关系

DC、AC、功能测试不是孤立的。它们之间的关系,我画了张图:

DC/AC/功能测试协同关系图 DC测试 AC测试 功能测试 测试流程建议: 1. 先做DC测试:排除电源短路、漏电过大等“硬伤” 2. 再做AC测试:确认时序参数是否满足规格 3. 最后做功能测试:在DC和AC都Pass的基础上验证功能 4. 如果功能测试Fail,回头检查DC和AC数据 5. 三类测试数据交叉分析,定位效率最高

我的习惯是:DC不过,不测AC;AC不过,不测功能。这样能节省大量测试时间。如果DC就Fail了,后面的测试根本没必要跑。

一个小技巧:量产测试的良率分析,一定要把DC、AC、功能测试的Fail数据分开统计。如果DC Fail率突然升高,可能是工艺问题;如果功能Fail率升高但DC正常,可能是测试向量有问题。分开看,问题一目了然。

好了,DC、AC、功能测试的核心内容就这些。这三类测试是量产测试的“三驾马车”,缺一不可。实际项目中,你可能会遇到各种奇怪的问题,但只要把这三类测试的数据吃透,90%的问题都能快速定位。