2、测试向量基础:测试向量定义、ATE测试原理、故障模型简介

2.1 测试向量到底是什么?

说白了,测试向量就是一份「芯片考题」。

你想想看,一颗芯片造出来,你怎么知道它好不好用?你得给它输入一些信号,然后看它输出对不对。这些输入信号和期望输出,组合在一起,就是测试向量。

我个人习惯把测试向量理解成一张「问答卷」:

  • 输入激励:你问芯片的问题(比如:把A端口拉高,B端口拉低)
  • 期望响应:芯片应该给出的正确答案(比如:输出端口C应该是高电平)

我在项目中遇到过一件事:有一次流片回来,芯片功能看起来都正常,但ATE测试就是报错。查了三天,最后发现是测试向量里一个时序约束写错了。嗯,从那以后我每次生成向量都会做一遍「黄金仿真」来比对。

核心要点:测试向量不是随便写的,它必须覆盖芯片的所有功能路径和故障模式。一个好的测试向量集,能让故障覆盖率做到95%以上。

2.2 ATE测试原理——芯片的「体检仪」

ATE(Automatic Test Equipment)就是自动测试设备。你可以把它想象成医院的体检仪器,只不过它体检的对象是芯片。

ATE的工作原理其实不复杂:

  1. 加载测试向量:把写好的测试向量灌进ATE的存储器里
  2. 施加激励:ATE按照向量里的时序,把信号送到芯片的管脚上
  3. 采集响应:ATE同时读取芯片的输出信号
  4. 比对结果:把采集到的输出和期望值做对比,一致就Pass,不一致就Fail

这里有个坑,我必须要提醒你——ATE的时序精度。ATE本身有固定的时间分辨率,比如1ns步进。如果你的测试向量要求0.5ns的精度,ATE根本做不到。我曾经因为这个原因,不得不重新调整整个测试方案。

小技巧:写测试向量时,尽量把时序放宽到ATE能支持的步进倍数。比如ATE是1ns步进,你就用2ns、3ns,别用1.5ns。

2.3 故障模型简介——芯片会怎么坏?

做测试向量之前,你得先知道芯片可能出什么毛病。这就是故障模型存在的意义。

常见的故障模型有这几类:

故障类型 描述 实际案例
固定故障(Stuck-at) 某个节点永远固定在0或1 电源短路到地,信号线永远为0
桥接故障(Bridging) 两条信号线意外连在一起 金属线之间短路,造成逻辑错误
延迟故障(Delay) 信号传播时间超出预期 晶体管老化,门延迟变大
开路故障(Open) 信号线断开 过流烧断金属线,信号悬空

为什么要有这些模型?因为你不可能测试每一种物理缺陷。芯片里几亿个晶体管,每个都可能出问题。但通过故障模型,你可以把问题归类,然后用有限的测试向量覆盖绝大多数情况。

我记得有一次做抗辐照芯片测试,客户要求覆盖「单粒子翻转」导致的软错误。这种故障用传统的固定故障模型根本测不出来。后来我们专门设计了「动态测试向量」,在运行过程中反复注入翻转,才把这个问题搞定。

注意:故障模型只是对真实物理缺陷的近似。不要以为覆盖了所有模型,芯片就100%没问题。实际测试中,总有一些「怪毛病」是模型没考虑到的。

2.4 测试向量与故障模型的关系

这两者的关系,说白了就是「靶子」和「箭」。

故障模型是靶子——告诉你芯片可能坏在哪里。测试向量是箭——你得射中这些靶子,才能验证芯片的好坏。

举个例子:

  • 如果故障模型是「节点A stuck-at 0」
  • 那测试向量就必须设计一个场景:让节点A在正常时应该是1
  • 如果芯片输出是0,说明节点A确实 stuck-at 0了
  • 如果输出是1,说明节点A没问题

你想想看,一个芯片有成千上万个节点,每个节点都要这样测一遍。所以测试向量的设计,本质上是一个「优化问题」——用最少的向量,覆盖最多的故障。

我个人习惯的做法是:先用自动测试向量生成工具(ATPG)跑一遍,然后手动补充一些边界情况。工具能覆盖80%,剩下的20%靠经验。

2.5 本章知识体系

下面这张图,帮你理清本章的核心逻辑:

测试向量基础 · 知识体系 测试向量定义 输入激励 + 期望响应 功能覆盖 + 故障覆盖 时序约束 + 电平约束 ATE测试原理 加载向量 → 施加激励 采集响应 → 比对结果 时序精度是关键 故障模型简介 Stuck-at / Bridging Delay / Open 物理缺陷的近似 三者关系 故障模型 → 定义「测什么」 测试向量 → 定义「怎么测」 ATE → 执行「测的过程」 三者缺一不可,共同构成芯片测试的完整闭环

我的建议:刚开始学测试向量时,别急着写代码。先把故障模型搞清楚,再想怎么测。方向对了,向量怎么写都行。方向错了,写再多也是白搭。


公众号:蓝海资料掘金营,微信deep3321