很多人第一次听到"ATE测试机",脑子里浮现的是一台带屏幕的万用表,或者是实验室里那台带旋钮的示波器。我当年入行第一天也是这么想的,直到站在一台两人高的机柜前面,看着它一分钟内把几百颗芯片挨个"审"了一遍,才意识到这东西和实验室仪器的关系,大概相当于集装箱码头和一把螺丝刀的关系。ATE,Automated Test Equipment,自动测试设备,在芯片行业里它是一个产线设备、一个成本中心、一个数据源头,也是芯片出厂前最后一道真正意义上的"体检关"。这篇东西写给三类人:刚入行或者准备入行的测试工程师、跟测试部门打交道但一直没搞懂他们在忙什么的硬件/版图/产品工程师,以及纯粹好奇"一颗芯片凭什么敢焊到板子上"的技术爱好者。我尽量不用教科书语言,按我这些年在一线看到的、踩过的东西来讲。
1. 先把"ATE测试机"这个词拆开:它测的到底是什么
1.1 芯片出厂前必须回答的三个问题
任何一颗芯片在离开产线之前,产线都必须回答三个问题,而且必须是以毫秒级的速度、对每一颗芯片逐一回答。
第一个问题是"它通电会不会炸"——更准确地说,是它的电源脚和地脚之间有没有短路、它的输入脚有没有被静电打穿、它的输出脚能不能正常拉高拉低。这类检查在ATE里叫开短路测试或者连通性测试,通常是一份测试程序里最先跑的几个测试项,因为它最快、最能筛掉明显的坏片,而且能保护后面昂贵的测试硬件不被一颗短路的芯片带崩。
第二个问题是"它的功能对不对"——给它加上规定的电压、灌进规定的时序向量,看它吐出来的波形是不是符合设计。这部分可能是跑一段功能向量,也可能是跑扫描链、内建自测、内嵌存储器自测,具体用哪种手段取决于芯片类型和测试成本预算。
第三个问题是"它的参数合不合规"——功能对了不代表能卖,因为芯片是要在规格书的边界条件下工作的。工作电压偏低一点、温度高一点、时钟快一点,它还能不能撑住?这个"撑住"的边界在哪里?ATE要做的就是把这些边界量化出来,然后跟规格书对比,决定这颗芯片是进良品箱还是废品箱,或者是降级到低规格档次去卖。
三个问题听起来简单,但要在几百毫秒内对每一颗芯片都回答一遍,而且要在一条一年跑几千万颗的产线上保持稳定,这就是ATE存在的全部理由。ATE不是"测量仪器",它是一台专门用来做判定、并且必须做出海量判定的产线设备。
1.2 ATE与实验室仪器的本质区别:从"测量"到"判定"
这个区别非常关键,很多新人转不过来。实验室里那台高精度源表,你接上一个器件,它给你一个读数,读数是 1.2345 mA,你把这个数字记下来,自己判断合不合格。ATE不是这么工作的——你事先把判定条件写进程序里,机器跑完,直接告诉你"这颗是 PASS"或者"这颗是 FAIL,失败在 3 号测试项,实测值 1.8 mA,上限 1.5 mA"。
换句话说,实验室仪器输出的是数据,ATE输出的是结论。这个差异带来了一连串工程上的后果:
- 仪器追求的是测量精度,ATE追求的是一致性和节拍。一台ATE如果测得很准但每颗要跑两秒,那它在量产线上没有价值。
- 仪器可以人盯着看,ATE必须无人值守连续跑几十个小时,所以它的自诊断、校准周期、探针磨损监控、温漂补偿这些"非测量"功能,工作量往往不亚于测量本身。
- 仪器的错误代价是"重测一次",ATE的错误代价是"几万颗芯片误判",所以ATE里充满了各种防呆机制:限值上下限、接触检查、复测策略、bin分布监控。
我在刚转岗的时候干过一件蠢事:拿着一台台式源表去校ATE的某个参数测量单元,觉得读数差 2 mV 是个大问题,花了半天时间查。后来带我的师傅说,你这个通道的量产限值是 ±50 mV,2 mV 的偏差在 guardband 里面已经被吃掉了,你把它当问题是在浪费时间。这个教训我一直记着:ATE的精度必须放在整个测试链路的误差预算里看,孤立的精度没有意义。
1.3 一台ATE由哪几块拼起来
从外面看是一排机柜,从工程视角看,它至少可以切成五块,每一块出问题都能让产线停摆。
| 组成 | 干什么 | 常见故障表现 |
|---|---|---|
| 测试主机(含各类板卡) | 产生激励、采集响应、做判定 | 某个通道失效、时序漂移、板卡自检不过 |
| 测试接口(负载板、探针卡、Socket板) | 把机台信号引到芯片引脚上 | 接触电阻升高、开路、串扰、阻抗不匹配 |
| 机械搬运(探针台或分选机) | 把芯片送到测试位、测完分类 | 定位偏差、卡料、温控失效 |
| 测试程序与软件 | 定义测什么、怎么测、怎么分档 | 版本错乱、限值设错、bin定义冲突 |
| 数据系统 | 记录每颗芯片的结果、做统计 | 数据丢失、统计口径不一致、追溯断链 |
新手最容易犯的错是只盯着第一块。实际上在量产阶段,停线原因里"接口和机械"的占比往往比"机台本身"高得多。一颗芯片的测试结果飘了,先查程序改动,再查接触,最后才怀疑机台主板——这个排查顺序不是拍脑袋定的,是按故障概率排的。
2. 晶圆到成品:ATE在产线上守着哪几道关
2.1 CP:在划片之前把坏die挑出来
CP,Chip Probing,晶圆测试,也有人叫中测或者晶圆针测。这一步发生在一片晶圆刚做完前道工艺、还没有划成一颗颗小芯片的时候。ATE这时候配的机械是探针台,接口是探针卡,探针卡上一排排细针(或者垂直探针、MEMS探针)压到晶圆的焊盘上,让机台和某一颗 die 建立电气连接。
为什么要在这么早的阶段测?最直接的理由是钱。封装是要花钱的,塑封、打线、基板、测试、运输,每一步都是成本。一片晶圆上如果有 5% 的 die 是坏的,你在划片封装之前把它们标出来,这 5% 的封装费就省了。对于大芯片,一颗的封装成本可能比晶圆上单颗的硅成本还高,这时候 CP 的经济意义非常明显。
CP 阶段还有一个不可替代的价值:它能看到封装后看不到的东西。有些失效机理在封装之后会被掩盖,有些参数在晶圆状态下测出来才是真实的裸片性能。比如某些器件的漏电在封装后因为应力变化会有偏移,很多设计者更愿意相信 CP 阶段的数据。
CP 的技术难点集中在接触上。探针要压到几十微米见方的焊盘上,压下去的力度、扎针深度、探针磨损程度,全都影响接触电阻。这一次压下去接触良好,下一次可能就多出几欧姆,测出来的参数就飘了。所以 CP 程序里几乎必然有接触检查项,而且量产中要定期做探针清针(用研磨材料把针尖氧化物磨掉)。我见过最典型的情况是一片晶圆跑到中途良率突然掉 20%,所有人都以为是工艺出了问题,最后发现是探针卡的某几根针磨损到接触不良,换卡就恢复了。
2.2 FT:封装之后的风险点全在这一关暴露
FT,Final Test,成品测试。芯片已经封装好,一颗颗躺在料管或者卷带里,测试机配的是分选机,接口是 Socket(测试座)加负载板。分选机把芯片从料盘抓起来、压进 Socket、测完按结果丢进不同的 bin(分档料盒)。
FT 覆盖的风险点和 CP 不一样。封装过程本身会引入失效:打线虚焊、塑封空洞、芯片裂纹、引脚变形、基板分层。这些在 CP 阶段根本不存在,只能在 FT 抓。所以 FT 的测试项虽然往往是 CP 的子集,但判定限值、测试条件、甚至某些专项测试(比如开短路、引脚连通、某些漏电项)都会重新设计。
另外一个现实差异是速度。CP 是一片晶圆上成百上千颗 die 在一个卡盘上移动,index 时间相对可控;FT 是分选机一颗颗机械搬运,index 时间往往占总测试时间的相当比例。所以 FT 程序对测试项的取舍更狠——一个测试项如果只能多抓 0.01% 的失效,但要多花 20 ms,那它在量产程序里很可能被砍掉或者改成抽样。
2.3 SLT与老化:ATE管不到的那部分为什么还要存在
如果 ATE 这么强,为什么很多芯片在 FT 之后还要做 SLT(系统级测试)和老化?这个问题新人问得最多,答案其实很朴素:ATE 测的是"参数在不在规格内",不是"装到板子上能不能用"。
ATE 用向量激励,向量是设计者根据功能模型写出来的,它能覆盖设计者想到的情况。但真实系统里的情况是设计者想不到的:多路电源上电的时序、时钟抖动、相邻器件的干扰、操作系统启动时的负载突变。SLT 就是把芯片插到一个类真实的板子上,跑一段真实软件,看它能不能启动、能不能跑完。它的覆盖率和 ATE 是互补的,不是替代的。
老化(Burn-in)的逻辑又不一样。它是在高温高压下让芯片持续工作一段时间,把那些"早期失效"的潜在缺陷提前激发出来。这类缺陷在出厂时参数完全正常,跑几百小时之后才暴露。ATE 在出厂那一刻是测不出来的,因为它还没有发生。老化本质上是拿时间换可靠性,代价是产能和成本,所以只有对可靠性要求极高的场景才会做完整的全片老化。
这三者的关系,我一般这么跟人解释:ATE 是体检,SLT 是试驾,老化是耐久测试。体检能查出指标异常,试驾能查出开起来别扭,耐久测试能查出三年后会不会坏。三者缺一不可,但成本依次上升,所以实际用哪几个,是产品和成本的权衡。
3. 测试程序里的内容:一份程序从空文件到能跑量产
3.1 程序骨架:setup、pattern、test block、binning
一份 ATE 测试程序,抛开各家平台语法差异,结构上基本都是四块。
Setup 部分定义硬件和全局条件:用了哪些板卡、通道怎么映射到芯片引脚、电源怎么配置、时序集怎么定义、电平条件是什么。这部分最容易出低级错误,因为它是"配置"而不是"逻辑",出错时程序照样能跑,只是测出来的东西全错。通道映射错一位,可能把 VDD 加到某个信号脚上,芯片当场就废了。
Pattern 部分是激励数据。功能向量的本质是一串 0/1 加上时序信息,告诉机台在每个周期把哪些引脚拉高、哪些拉低、在哪个时刻采样。这部分通常由设计端提供,测试工程师负责转换格式、做仿真验证、压缩向量、调整时序。
Test block 部分是测试项的组织。每个 block 是一个具体的测试:某个引脚的漏电、某个电源的静态电流、某段功能向量的执行、某个扫描链的翻转。每个 block 有自己的条件(电压、温度、时序集)、自己的测量方式(单点测量、扫描、比较)和自己的限值。
Binning 部分决定结果归类。硬 bin 决定物理去哪,软 bin 记录失败原因。这里的设计非常讲究:bin 分得太粗,失效分析没有线索;分得太细,产线统计会碎成一地。我见过的比较合理的做法是,硬 bin 控制在个位数,软 bin 按测试项和失效模式细分到几十个,然后在数据系统里再做聚合。
这四块里,真正花时间的不是写,是验证。一份新程序从能跑通到能上量产,中间的验证工作量通常是编写工作量的三到五倍。
3.2 DC与功能测试:最朴素也最容易出问题的部分
DC 测试是所有测试里最不起眼、但最不能省的一块。典型项包括:
- 连通性/开短路:给引脚灌一个小电流,测二极管压降,判断 ESD 二极管是否完好、有没有虚焊。
- 输入漏电:给输入脚加高低电平,测流进去的电流,判断输入级是否正常。
- 输出驱动:在额定负载下测输出电压,判断驱动能力够不够。
- 静态电流:芯片处于静态时测总电流,判断有没有内部短路或者工艺偏差。
- 输出短路电流:把输出脚拉到地,测它能吐出多少电流,判断输出级是否过强。
这些项的技术含量看起来不高,但它们在量产中的检出率往往不低,而且测试时间短、成本低,性价比极高。麻烦在于它们对接触质量极其敏感。一个 100 nA 级别的漏电测量,接触电阻多几欧姆、探针上多一点氧化物、地线回路多一段,读数就可能翻倍。所以做 DC 测试的工程师,一半时间在写程序,一半时间在跟接触和接地较劲。
功能测试则是另一个极端。它跑真实向量,覆盖真实逻辑,但代价是向量长、时间长、调试难。一颗复杂 SoC 的功能向量可能几百万个周期,跑一遍几百毫秒,而且一旦失败,你要在海量周期里定位是哪一个周期出的问题。所以实际量产中,功能向量通常会被压缩和筛选——设计端提供的全向量用于首件验证和失效分析,量产程序里跑的是精简版。
3.3 Scan、BIST与高速接口测试:结构化测试接管了什么
芯片越复杂,靠功能向量覆盖内部逻辑就越不现实。于是结构化测试成了主流。
扫描链测试的思路是把芯片内部的触发器串成移位寄存器,测试时通过扫描链把激励"灌"进去、把结果"抽"出来,然后用自动测试向量生成工具算出能覆盖故障的图形。它的好处是覆盖率高、生成自动化、对机台要求相对低。坏处是图形量大、测试时间长,所以实际用的时候要做压缩——片上解压电路把外部灌进来的压缩数据展开成内部图形,测完再压缩输出。这个压缩比通常能到几十倍甚至上百倍。
内建自测更进一步,把一部分测试逻辑做进芯片里。存储器自测负责测片上存储阵列,逻辑自测负责测关键逻辑块,还有一些专门的自测用于模拟模块。自测的好处是机台只需要给个启动信号、读个结果,测试时间短、对机台资源占用小。坏处是占芯片面积、增加设计复杂度,而且自测本身的覆盖率要靠设计端保证,测试工程师能干预的空间有限。
高速接口测试是另一个世界。当接口速率上到几 Gbps 甚至更高,普通数字通道已经喂不进去了,需要专门的仪表化通道或者环回测试。环回测试的思路很巧:让芯片自己发、自己收,或者两颗芯片对接互相收发,机台只负责配置和判定,把高速信号的处理交给芯片自己。这样既省了昂贵的仪表资源,又贴近真实工作状态,代价是需要芯片支持环回模式,而且误码率的统计要跑足够长的时间。
3.4 Guardband:为什么测试限值不能贴着规格书
这是新人最容易搞错的一点。规格书上写某个参数最小 1.0 V,很多人的第一反应是测试限值就设 1.0 V。这是要出事的。
原因是测量本身有误差。你的机台有精度误差、你的接触有电阻、你的板卡有漂移、你的温度控制和规格书标称值有偏差。如果限值贴着规格书,那么一颗真实值是 1.001 V 的合格品,在测量误差下可能读成 0.999 V,被判成不良。这在量产里叫误杀(Overkill),直接吃良率。
反过来,如果限值放得太松,一颗真实值 0.98 V 的不合格品可能读成 1.01 V,被判成合格,流到客户端,这叫漏放(Underkill),代价是客诉和召回。
Guardband 就是在这两者之间找平衡。常见的做法是先做测量系统分析,把测量重复性、再现性、机台间差异量化出来,然后按统计方法(比如取若干倍标准差)确定保护带宽度。有一种常见但粗糙的做法是直接按规格的百分比留余量,比如 ±3% 或者 ±5%,这在要求不高的场景能用,但对高精度模拟芯片就太随意了。
我个人的经验是:guardband 不能一次定死,要在量产爬坡阶段用数据反向校准。先按保守值跑一批,看 bin 分布,看失败项的实测值离限值有多远。如果发现某一项的失败值全都挤在限值边缘,说明要么 guardband 不够,要么这一项的工艺能力本身就在边界上,需要跟工艺端一起看。
4. 决定成本和产能的几个硬指标
4.1 Site数与并测:多测一颗不是简单地×N
Site 数就是一台机器同时能测几颗芯片。早期机器一个 site,后来四个、八个、十六个,高端平台能到几十甚至上百。听起来是线性收益:site 数翻倍,产能翻倍,成本减半。
实际远没有这么简单。
第一,site 之间必须一致。同一批芯片分到不同 site 上测,如果 site 之间有系统偏差,就会导致某些 site 的良率明显偏低。这在量产里叫 site 差异,必须监控。常见的做法是定期跑一颗"金样本"(一颗已知良品和一颗已知不良品),确认所有 site 的判定一致;同时在数据系统里按 site 统计良率,一旦某个 site 偏离整体均值超过阈值就报警。
第二,多 site 会加剧电源和地的压力。几十个 site 同时工作,峰值电流叠加,地弹和电源噪声都会恶化,本来 margin 就紧张的项目更容易出问题。所以高 site 数往往需要更强的电源板卡和更讲究的接地设计。
第三,测试程序的并行化改造有成本。原来的程序可能假设只有一个 site,所有的资源命名、数据记录、异常处理都是单份的。改成多 site 需要把资源复制、把数据按 site 分开记录、把判定逻辑改成逐 site 处理。这个改造不是改几个参数的事,有时候要重写相当一部分结构。
4.2 Test time与Index time的拆账
产能计算的公式很朴素:每小时产出 = 3600 / (单次测试时间 + 单次搬运时间) × site 数。看起来简单,但这两个时间的构成值得细拆。
| 时间构成 | 内容 | 典型量级 | 优化手段 |
|---|---|---|---|
| 程序加载与初始化 | 加载代码、校准、自检 | 秒级(每批次一次) | 减少批次切换频率 |
| Setup/建立时间 | 上电、稳定、继电器切换 | 几毫秒到几十毫秒 | 合并测试条件、减少切换 |
| 测试执行 | 实际跑测试项 | 几十毫秒到几秒 | 并行执行、优化向量、减少冗余项 |
| 数据记录与判定 | 记录结果、分档 | 毫秒级 | 批量写、减少实时IO |
| Index/搬运 | 换下一颗芯片 | 几十到几百毫秒 | 提高机械速度、多site并行 |
从这张表能看出来一个反直觉的结论:当测试时间被压到和搬运时间同一量级时,继续优化测试时间的收益会急剧下降,此时该优化的是机械。我见过不少团队在测试时间上死磕,把 80 ms 压到 70 ms,高兴了半天,回头一看 index 时间是 150 ms,总时间只降了 4%。
反过来,在测试时间远大于搬运时间的场景(比如复杂 SoC 跑几百毫秒),测试时间就是主战场,这时候向量压缩、测试项裁剪、多 site 并行才有意义。
4.3 通道数、向量速率与时序精度:选型时看哪个
买机器的时候销售会给你一串参数,很容易看晕。我的经验是按芯片类型倒推,先确定哪个参数是瓶颈。
| 芯片类型 | 最看重的指标 | 原因 |
|---|---|---|
| 数字逻辑/SoC | 通道数、向量深度、扫描链支持 | 引脚多、向量长 |
| 存储器 | 并行site数、地址通道数、测试算法支持 | 单片简单但量大,靠并行摊成本 |
| 模拟/电源管理 | 测量精度、低电流测量能力、多路电源 | 参数精度是核心 |
| 射频 | 频段覆盖、调制分析能力、噪声底 | 需要专门的射频资源 |
| 图像传感器 | 高速数据接口、图像处理能力、光学接口 | 输出的是图像数据流 |
时序精度这一项值得单独提一下。它指的是机台能在多精确的时刻把信号边沿放到指定位置,通常用边沿放置精度来衡量,好的平台能到几十皮秒量级。这个指标对高速接口、对时序敏感的存储器、对需要精确采样窗口的模拟测试很关键。但如果你的芯片是低速的电源管理芯片,这个指标对你就没意义,多花钱买的是用不上的能力。
我见过一次选型失误:团队为了"以后可能要做高速接口"买了一个通道速率很高的平台,结果主力产品是电源芯片,需要的是高精度低电流测量能力,而那个平台在这个方向上反而偏弱,最后不得不额外配一台专用机。教训是:选型按当前和未来两年真实在跑的产品线来定,别按"理论上可能"来定。
4.4 一张成本账:测试到底吃掉多少利润
测试成本通常按每颗芯片分到多少秒机时、再乘以机时单价来算。机时单价里包含设备折旧、场地、人力、维护、耗材。一台高端平台的采购价可能到百万美元量级,按五年折旧、每年有效运行几千小时算,每小时的折旧成本就相当可观,再叠上探针卡、Socket 这些耗材,单颗成本很容易被推到几美分到几十美分。
对于单价低的芯片,这个数字是致命的。一颗卖几毛钱的芯片,测试成本几美分,就已经吃掉一大块毛利。所以低价值芯片的测试策略极其克制——能测三项绝不测五项,能并行到上百 site 绝不只做十六个,能用便宜的接口板绝不上贵的。而对于单价高、失效代价大的芯片(比如车载、工业、服务器),测试成本占比可以低到几个百分点,这时候策略完全反过来,宁可多测也要保证可靠性。
这个逻辑解释了为什么同一个测试团队,做不同产品线的时候风格会完全不一样。不是人的水平差异,是经济模型决定的。
5. 硬件那头:探针卡、Socket、Load Board才是良率杀手
5.1 探针卡:CP阶段唯一与die接触的东西
探针卡是整个 CP 测试里唯一直接碰到芯片的东西,也是消耗品里最贵的之一。常见的几类:
悬臂针,一根根细金属针斜着压到焊盘上,成本低、制作周期短,适合焊盘排在芯片周边、引脚数不多、频率不高的场景。缺点是针尖容易磨损、扎痕较深、高频性能一般。
垂直针,针垂直立在基板上,靠针的弹性形变提供压力,适合焊盘阵列分布、密度高的场景。扎痕浅、寿命长,但制作复杂、成本高。
MEMS探针,用微加工工艺做出来的微小探针,能做到极高的密度和很好的高频特性,适合高引脚数、高速、细间距的芯片。代价是贵,而且很娇气,被一颗凸点高的 die 顶一下可能就报废一片。
不管哪种,使用中都要盯几个指标:接触电阻(每根针都要在可接受范围内,且分布要均匀)、扎针深度(太浅接触不良,太深损伤焊盘甚至打穿下面的结构)、清针周期(用多久磨一次针尖)、寿命计数(扎了多少次之后必须换)。
我在一个项目上吃过亏:探针卡的寿命计数没人管,跑到标称寿命的两倍还在用,某天开始某几根针的接触电阻慢慢升高,测出来的是"某个模拟参数偏高",报废了一批本来合格的晶圆。事后复盘发现,如果当初在程序里加一个接触电阻的监控项并设报警阈值,这批损失是可以避免的。
5.2 Socket与Load Board:FT阶段的接触电阻与信号完整性
FT 阶段芯片是通过 Socket 和负载板跟机台连接的。Socket 的种类很多,弹簧针式、导电胶式、弹片式,各有各的适用场景。选择的时候主要看引脚间距、插拔次数要求、接触电阻稳定性、以及高频性能。
Socket 是典型的消耗品,插拔几万到几十万次之后接触就会劣化。产线通常有寿命管理,但实际操作中经常出现"没到寿命但已经不行了"的情况——比如某个批次的芯片引脚镀层异常,磨损速度比正常快很多,Socket 提前老化。所以除了按次数管理,还要按实际测试数据监控:同一批芯片在同一个 Socket 上测出来的良率突然下滑,第一怀疑对象就是 Socket。
负载板的问题更多在信号完整性上。高速信号走线长度不匹配、阻抗不连续、地平面不完整、去耦电容位置不对,都会让波形变形,导致本来能过的芯片过不了。这些问题在低频测试里看不出来,一旦上到几百兆以上就开始显形。我印象很深的一次是某个接口的时序测试良率只有 70%,查了程序、查了芯片、查了机台都没问题,最后用示波器在负载板上量波形,发现某几根走线比其他长了将近一厘米,采样点正好落在边沿上。改板之后良率回到 99%。
5.3 温控与接地:很多"玄学不良"的真身
温度是测试里最容易被低估的变量。芯片的很多参数对温度极其敏感——漏电随温度指数上升,驱动能力随温度下降,某些模拟基准的温漂直接决定精度。所以测试程序里必须明确测试温度,而且实际温度必须被监控和记录。
问题在于,机台显示的温度不等于芯片结温。分选机的温控气流、Socket 的热阻、芯片自身的功耗发热,都会让实际结温偏离设定值。一颗功耗大的芯片在测试中被连续激励,自身发热可能让结温比环境高出十几度,这时候测出来的参数跟规格书上的等温条件就对不上了。
对策通常是:在测试程序里控制连续激励的占空比、在关键测试项前加等待稳定时间、用一颗带温度传感器的监控芯片定期验证实际温度。这些手段都会增加测试时间,所以要在精度和产能之间找平衡。
接地问题更隐蔽。地线回路长、地平面分割不当、多点接地形成环路,都会引入噪声,表现为某些低电平测量项读数不稳、重复性差。这类问题的典型特征是"同一颗芯片连测三次结果不一样",而且换台机器可能就好了或者换一批芯片又正常了。这种间歇性特别折磨人,排查方法是从最靠近芯片的接地点开始,逐段检查接地路径,确保每个测量点都有清晰、短、低阻抗的回流路径。
6. 相关性、Shmoo与量产爬坡:经验密度最高的部分
6.1 机台相关性:两台"一模一样"的机器为什么会测出不同结果
同一个型号的两台机器,配置相同、程序相同,测同一批芯片,结果就是会有差异。这个差异可能来自板卡校准的残余偏差、来自线缆和接口的差异、来自环境温度、来自机械定位的微小不同。量级通常很小,但如果你的 guardband 留得不够,这个小小的差异就足以让两台机器的良率差出零点几个百分点,在量产规模下就是真金白银。
处理这件事的标准动作叫相关性验证:选一批覆盖各种参数范围的芯片(通常包括明显良品、边缘良品、各类不良品),在两台机器上各测一遍,把每个测试项的实测值做配对比较,算偏差和分布。判定标准通常是:偏差均值要接近零,偏差的分散程度要在测量误差预算之内。
更严格的做法是建立机台家族的相关性矩阵,定期做全网比对,一旦发现某台机器的偏差漂移超出阈值,就把它从量产队列里摘出来重新校准。这个工作听起来枯燥,但它是多机台量产的生命线。我见过一个产线因为新进的一台机器没做相关性就直接投产,导致那台机器测出来的良率比别的机器低 3%,所有人都去查芯片,浪费了两周。
6.2 Shmoo图:把二维扫描当成问诊工具
Shmoo 图这个东西,是 ATE 里少有的"可视化诊断"手段,值得单独说。它的做法是把两个条件(最常见的是电源电压和时钟周期,或者电压和温度)做成二维网格,在每个格点上跑一遍测试,把通过和不通过画成图。画出来的形状像一块地图,边界线就是这颗芯片的工作边界。
它是怎么用的?举几个典型场景:
- 看工艺裕量:如果一批芯片的 Shmoo 边界离规格点很近,说明工艺裕量不够,量产良率会不稳。
- 看失效机理:不同的边界形状对应不同的失效原因。比如边界随电压下降而收缩,可能是驱动能力不足;边界随频率升高而收缩,可能是时序路径不够快;某个角落单独出现失败区,可能是某种特定的耦合或者噪声问题。
- 做失效分析:一颗失败芯片的 Shmoo 图形往往能直接指出问题方向,比盲猜快得多。
Shmoo 的代价是时间。一个 20×20 的网格就是 400 次测试,如果每次几百毫秒,一次完整扫描要几分钟。所以它主要用于工程阶段和失效分析,量产中不用。但工程阶段不做 Shmoo,量产阶段就会用大量时间做无效的猜测。
6.3 量产release与版本管理:程序改动是最大的风险源
测试程序一旦上量产,任何改动都是高风险动作。原因很简单:程序是判定的唯一依据,改错一行限值,可能几万颗芯片的判定就错了,而且这种错误在被发现之前会一直持续。
所以正规的流程是这样的:程序改动必须走版本控制,每次改动有记录、有原因、有审批;改动后的程序必须先在离线环境验证,再在小批量上验证,对比改动前后的 bin 分布和参数分布;确认无异常之后才逐步放大到全量;放量后的头几天要加密监控。
我经历过一次很典型的事故:某个测试项的限值被"顺手"改宽了,改的人觉得这一项失败率太高可能是限值太严,但没有做验证。结果头两天良率涨了两个百分点,大家都挺高兴,第三天客户反馈某批次不良率高。追查下去发现,那一项恰恰是关键参数,放宽限值放出去的芯片在客户端批量失效,损失远大于省下的那点良率。
这件事之后我形成了一个习惯:看到某个测试项失败率异常高,第一反应不是改限值,而是查清楚为什么会高。可能是工艺真的飘了,可能是接触出了问题,可能是程序有 bug,可能是限值当初就设错了。这几种情况的处理方式完全不同,直接改限值是最偷懒也最危险的做法。
7. 我在这一行踩过的几个坑
7.1 把"测不过"当成"芯片坏了"
新人最容易有的思维定式是:机器说不过,那就是芯片有问题。这个判断在理想情况下成立,在现实中经常不成立。
我统计过自己做过的失效分析,真正芯片本身缺陷的大概占一半多一点,剩下的是接触不良、程序问题、接口板问题、机台状态异常、甚至测试环境温度不对。所以一个成熟的测试工程师看到失败数据,第一反应应该是"这个失败可不可信",而不是"这个失败说明了什么"。
判断可信度的常用手段:看复测结果(同一颗芯片重测一次是否还失败)、看失败项的分布(是集中在某个 site 还是分散、是集中在某个测试项还是随机)、看失败值(是刚好超一点还是离谱地超)、看时间相关性(是不是某个时间段开始集中出现)。这几个维度交叉一下,往往就能区分"真失效"和"假失效"。
7.2 接触不良伪装成功能失效
这是最典型的一类"假失效",因为它伪装得很好。接触电阻升高,会让某些依赖电流的测量项读数偏离;接触完全开路,会让功能测试直接在某个引脚上失败,报出来的错误信息看起来像是芯片那部分逻辑坏了。
识别的方法其实有套路:如果是接触问题,失败往往跟物理位置相关——同一个 site 反复失败、同一片晶圆上相邻 die 都失败、同一批料里某些位置集中的失败。真正的芯片缺陷,失败分布通常是随机的(除非是工艺系统性问题,那会有另一种规律)。
还有一个更直接的办法:在程序里加接触检查项,每次测试前先确认每个引脚的连通性。这会增加测试时间(通常几毫秒到几十毫秒),但能省下大量误判和失效分析的时间。这笔账我觉得非常划算,只是有些项目为了抠测试时间会把它砍掉,砍完之后良率数据就变得不可信了。
7.3 给想入行的人:先学什么,后学什么
经常有人问我,想做芯片测试,应该先学什么。我的建议顺序是这样的。
先学电路基础。不是要你考满分,是要你能看懂一个引脚的等效电路、知道二极管怎么工作、知道运放的输入输出关系、知道传输线的阻抗匹配是什么。这些是后面所有工作的地基,缺了会一直靠猜。
再学测量原理。四线法为什么能消除引线电阻、采样保持电路为什么会有孔径误差、屏蔽和接地为什么能抑制共模干扰。这些知识决定了你看到异常读数时,能不能判断是芯片的问题还是测量的问问题。
然后学芯片测试的专属知识:DC 参数测试、功能测试、扫描测试、内建自测、混合信号测试各自的做法和适用场景。
最后才是具体平台的编程。这一步反而是最快的,因为平台语法大同小异,而前面的知识决定了你能不能写出一个有意义的程序,而不是一份能跑但不知道在测什么的程序。
我见过太多人一上来就啃平台手册,学会了一堆函数调用,但写出来的程序限值随意、条件混乱、失败不分类,一出问题就抓瞎。基础打牢了,学任何平台都是几周的事。
另外一个建议是多去产线待着。测试工程师如果只在办公室写程序,永远不知道自己的程序在现场是什么样子。去看着分选机跑、看着探针台压针、看着操作员换料、看着设备工程师擦针,你就知道自己的一个参数设置会在现场引起什么反应。我很多程序上的改进想法,都是站在产线旁边看出来的。
最后提一句我自己的体会:这个岗位最反直觉的地方在于,它的核心能力不是"测得准",而是"判断得对"。机器给你一堆数字,判断这堆数字可不可信、说明了什么问题、下一步该查哪里,这些是任何手册上都写不出来的。而这些判断力,只能靠在一次次误判、一次次复盘、一次次被现实打脸之后慢慢积累。