2. 并行测试概念
先问大家一个实际的问题:你手头有 1000 颗芯片要测试,每颗测试时间是 10 秒。串行测试需要 10000 秒,快 3 个小时。客户催货,产线等着发货,这时候你会怎么做?
我刚开始做 ATE 的时候,就遇到过这种“等得心焦”的场景。后来我才真正理解,并行测试不是简单的“多开几个站点”,而是一套系统性的工程思维——把时间轴上的单任务拆成空间上的多任务,让测试设备的每个资源都在干活,而不是闲着。
1. 并行测试到底是什么
并行测试(Parallel Test),说白了就是同一时间对多颗芯片执行相同的测试内容。但这里有个关键点——不是简单的“复制粘贴”测试程序,而是要让测试仪的通道资源、电源资源、时序资源同时服务于多个 DUT。
举个例子:你有一个 128 通道的测试机,测一颗芯片需要 48 个通道。如果只测一颗,剩下的 80 个通道就空着了。并行测试就是把空着的通道用起来,同时测 2 颗甚至更多。
| 对比维度 | 串行测试 | 并行测试 |
|---|---|---|
| 测试对象 | 同一时间只测 1 颗芯片 | 同一时间测多颗芯片 |
| 资源利用率 | 通道、电源、时序资源大部分闲置 | 资源尽可能满载运行 |
| 测试时间 | 逐颗累加,线性增长 | 多颗重叠,时间大幅缩短 |
| 程序复杂度 | 单一线程,简单 | 多站点同步/异步,较复杂 |
| 故障隔离 | 容易定位单颗问题 | 需要区分站点失效还是芯片失效 |
我个人习惯:评估一颗芯片适不适合并行测试,先看它占用的通道数是不是测试机总通道数的约数。比如 48 通道的芯片在 128 通道机器上,做 2 站点并行 (96 通道) 比做 3 站点 (144 通道) 更现实,因为后者超出资源上限。
2. 并行测试的核心分类
并行测试不是只有一种玩法。根据并行维度的不同,我把它分成三类,每类解决的问题不一样。
- 硬件并行(多站点):多个 DUT 同时上电、同时施加测试向量、同时测量结果。这是最常见的场景,适用于数字逻辑、存储器等芯片。
- 时间并行(流水线):同一颗芯片的不同测试项在不同硬件模块上同时执行。比如一边做 DC 测试,一边做功能测试,互不干扰。
- 混合并行:把硬件并行和时间并行结合起来。也就是说,多个站点同时跑流水线测试。这种方案效率最高,但程序设计和硬件资源调配也最复杂。
我曾经在一个项目里碰到过这种情况:芯片本身只占 32 个通道,但测试机只有 128 通道,做 4 站点并行绰绰有余。结果发现测试项里有 3 个长波形向量占了大部分时间,其他测试项都是毫秒级的事。我当时就把这 3 个向量单独拿出来,让它们在不同站点的时间窗口里交错运行——说白了就是让测试机忙个不停,没有空等的时间。这就是混合并行的思路。
3. 串行测试 vs 并行测试——用数据说话
有人可能会说:“并行测试好是好,但程序复杂,调试麻烦,会不会得不偿失?” 咱们直接看一组真实数据。
假设我们测 100 颗芯片,单颗测试时间 8 秒(包含上下料 2 秒 + 测试 6 秒),测试机有 8 个独立站点。
- 串行模式:总时间 = 100 × 8 = 800 秒
- 并行 8 站点:理想情况总时间 = 100 / 8 × 8 = 100 秒(因为上下料可以批量并行)
- 实际并行:考虑站点间差异、芯片失效 rerun 等因素,通常有 10%~25% 的效率损失,实际约 120~130 秒
你看,哪怕打了 30% 的折扣,并行测试也把 800 秒干到了 130 秒左右,效率提升 6 倍以上。那点程序复杂度还是值得的。
避坑指南:我曾经有一个项目,并行测试跑起来后良率突然掉了 3 个点。排查了三天,最后发现是某一个站点的电源接触电阻偏大,导致那一路芯片供电不足。后来我在每个站点的测试程序里都加上了 ContactCheck 和 SiteMask 机制——一旦某个站点连续失效超过 N 颗,自动屏蔽该站点并报警。这个做法后来成了我们团队的标配。
4. 并行测试的三大前提条件
别急着上并行测试,先看看你的“家底”够不够。我总结了三个必要条件:
- 硬件资源够用:每个站点需要的通道、电源、数字时钟等资源必须独立且充足。如果资源不够强行并行,会导致信号质量下降甚至时序违规。
- 测试程序支持多站点:程序里要能区分站点 ID、独立控制各站点的启动/停止、独立采集数据。很多老旧的测试程序是单站点设计的,改造成本不低。
- 上下料系统匹配:并行测试再快,如果 Handler/Prober 的上下料速度跟不上,产线照样堵。我见过一个惨痛的教训:并行 4 站点本来 30 秒跑完一轮,但 Handler 一次只有两个料盘切换,结果实际节拍被拉长到 45 秒——白白浪费了并行能力。
特别注意:并行测试的“并行”不等于“同时”。有些测试机虽然支持多站点,但实际底层总线是共享的,当多个站点同时请求同一个资源(比如同一个 ADC 测量模块)时,会变成串行等待。这种情况叫做“伪并行”。选测试机的时候一定要查清楚它的架构:是独立站点资源,还是分时复用?
5. 一个实际的并行测试流程示例
我用一个简单的代码片断来展示并行测试的基本结构。这段是伪代码,但思路和真实 ATE 平台(比如 Teradyne J750 或 Advantest T2000)是一致的。
// 并行测试主流程(简化版)
Config.SiteCount = 4 // 配置 4 个站点
Config.SiteResources = [48,48,48,48] // 每个站点分配 48 个通道
// 站点初始化循环
for each site in 0..3:
PowerUp(site) // 站点独立上电
ApplyPattern(site, "scan_test") // 加载扫描向量
Measure(site, "IDD") // 测量电流
Result[site] = Compare(site) // 判断 Pass/Fail
// 结果汇总
TotalPass = 0
for site in 0..3:
if Result[site] == PASS:
TotalPass++
print "本轮测试通过率: ", TotalPass/4 * 100, "%"
这段代码看起来很朴素,但实际工程里你要考虑更多:比如某个站点突然下电怎么处理、不同站点测试时间不一致时如何同步、测试结果如何按站点分类存储到日志里。
6. 从概念到工程——我的建议
并行测试这件事,说白了就是“空间换时间”。你多用几倍的硬件资源,换取数倍甚至十几倍的测试效率。但我见过不少团队,一上来就想做 8 站点并行,结果折腾两个月代码跑不通,最后只能退回到 2 站点。
我的建议是:先小规模试点。从 2 站点或者 4 站点起步,跑通后再逐步扩容。
- 第一周:实现 2 站点并行,验证基本功能和良率一致性。
- 第二周:增加到 4 站点,排查站点间串扰和资源竞争问题。
- 第三周:优化上下料流程,让并行测试的节拍真正匹配产线。
- 第四周:稳定运行后,再考虑是否要增加到 8 站点。
记住,并行测试的核心不是“测得多快”,而是“测得多稳”。良率掉一个点,那省下的时间全白搭。
我个人习惯在并行测试投产前做一次“站点一致性验证”:用同一颗 golden 芯片轮流通过所有站点去跑,比对每个站点的测试结果是否一致。误差超过规格的 1% 就要排查硬件连接或站点补偿参数。