测试压缩 EDT:解压器、压缩器与 X 态如何把扫描测试时间砍下来
更新时间:2026-09-24。DFT/测试进阶层。扫描测试为什么要把寄存器串成链、ATPG 又是什么,先读 ATPG 扫描链和固定型故障模型打底;这一篇只回答一个量产线上的真问题:链那么长、向量那么多,测试机时费谁来扛。答案就是测试压缩,商用实现以 Siemens(原 Mentor)的 EDT(embedded deterministic test)最出名,Synopsys 的 TestKompress、Cadence 的 CT 原理同源。
本文要回答的问题
- 扫描向量数据量为什么随芯片规模爆炸?测试时间到底由哪几个数相乘得到?
- decompressor(解压器)长在扫描输入(SI)端,是怎么把几条 ATE 通道「展开」成几百条内部链的?
- compactor(压缩器)在扫描输出(SO)端做的是异或压缩,为什么一个 X 就能污染一片输出?
- X-mask 和 X-tolerant 两种处理 X 的路线各有什么代价?
- 压缩比(compression ratio)拉到多少合适,它和测试时间、引脚数、故障覆盖率之间怎么算账?
一、扫描向量数据量为什么会爆炸
先把测试时间的账摆出来。全扫描设计里,一个向量的测试时间近似为
T_test ≈ 向量个数 N_pattern × 最长扫描链长度 L_chain × 移位时钟周期 T_shift三个乘数今天全都在涨。晶体管规模每两三年翻一番,触发器数量同步膨胀,一条扫描链轻松达到几万级;故障模型也不止 stuck-at(固定型故障)一家,transition(跳变故障)、路径时延、桥接、各种物理缺陷模型轮番上阵,固定型故障模型里一套 stuck-at 向量也许只要几千条,加上 at-speed transition 往往翻几倍;再算上多种工作模式、多个时钟域和 IP 各自的向量集,N_pattern 同步水涨船高。
最朴素的想法谁都有:把一条长链切成很多条短链并行移入移出。链长从 L 降到 L/k,移位周期数理论上也降到 1/k。可是并行短链需要并行的扫描输入、扫描输出通道,而 ATE(automatic test equipment,自动测试设备)的通道数是稀缺资源——高端数字测试机每通道都是钱,封装引脚数更是出厂就钉死了。一个几百万门的设计内部想铺几百条链,封装上不可能给几百个扫描脚。矛盾于是很明确:链要多、要短,但外部通道只有寥寥几条。片上测试压缩就是架在这对矛盾之间的桥。
二、EDT 的整体数据通路
EDT 在原有扫描结构里插进两块硬件:SI 端的 **decompressor(片上解压器)**和 SO 端的 compactor(片上压缩器)。ATE 只对着少量压缩通道发激励、收响应,展开和收拢都在芯片内部完成。
读图抓三条主线。其一,数据从左到右单向流动:ATE 喂窄流,解压器扩成宽流灌进短链,捕获之后压缩器再收成窄流回 ATE。其二,内部扫描链的数量 n 远大于外部通道数 m,比值 n/m 就是压缩结构的几何宽度。其三,移位过程中插入一拍或几拍 capture,链中触发器在此刻采样被测组合逻辑的值——压缩只改变数据进出的路,不改变扫描测试「移位—捕获—移位」的基本节奏。
没有压缩时,扫描链从芯片输入脚一路串到输出脚;加了 EDT 后,物理上仍是那些扫描触发器,只是被重新分组、两端各挂了一块逻辑。这也决定了压缩逻辑必须和扫描插入(scan insertion)一起做进网表,属于 DFT 结构的一部分。
三、decompressor:窄流怎么展开成宽激励
解压器本质上是一个线性有限状态机:主体是一段 LFSR 风格的移位寄存器(ring generator,环生成器)加一组异或网络,m 条 ATE 输入在若干拍内被编码、扩散,驱动 n 条内部链的扫描输入端。EDT 名字里的 deterministic(确定性)是关键:它不是伪随机填充,ATPG 在生成向量时已经把解压器的线性方程考虑进去——工具求解的是「该往 ATE 通道上喂什么序列,才能在内部链上得到我想要的那组确定值」。
这里有个绕不开的代数限制。m 条输入、经过若干拍,解压器能独立控制的自由度是有限的;内部链上想同时指定位的值越多,方程越可能无解。工程上的处理是给 ATPG 留出少量控制自由度:一部分链位允许工具当 don't care(任意值),ATPG 只对敏化和观测故障真正需要的位提约束。实测扫描向量里 care bit(确定位)的密度通常只有几个百分点,绝大部分位本来就是任意的,这正是压缩能成立的统计学基础——解压器要表达的信息量,远比「填满 n 条链」看起来的小。
把 care-bit 密度的数字走一遍。假设一组向量每条 100 万位,其中真正被 ATPG 指定 0 或 1 的只有 2 万位,密度 2%。这 2 万个约束要分散到整条时间轴上:移位一拍只喂进 m 位新信息,解压器内部还缓存着前几拍的状态,于是每个约束都能写成一条关于「最近若干拍 ATE 输入位」的线性方程。ATPG 求解这组稀疏方程组时,绝大多数方程彼此独立、有解;只有当某个移位窗口内约束挤得太密、方程数超过变量数,才会出现冲突。工具遇到冲突有两种出路:调整其他 don't care 位腾自由度,或把这个故障推迟到下一条向量。压缩比的可行上限,本质上就是「约束最密集的那个窗口」决定的,而不是平均密度——这也解释了为什么按平均 1% 密度算出百倍压缩,实测常常在 50x 附近就开始掉覆盖率。
压缩比可以从 care-bit 密度直观看:若向量只有 1% 的位是确定的,理论上百倍的几何压缩仍有解;工程上还要留余量给编码冲突和诊断,主流量产设计压缩比普遍取 20x 到 100x。盲目把比例拉到两三百,解压器经常给不出 ATPG 想要的值,工具只能插入额外向量或容忍故障不可测,覆盖率和向量数双双恶化——省机时的账反而亏了。
四、compactor 与 X 态:一个未知值为什么能堵死一条路
响应侧的麻烦比激励侧大。最朴素的压缩器是空间异或树:把多条链的当前移位位异或成一位送出,k 条链共享一个输出。0 与任何值异或不变,因此只要其余链输出 0,某一条链上的故障效应(1)就能透到输出被 ATE 看到,这叫 aliasing-free(无混叠)的基本前提。
但异或遇到 X(unknown,未知态)就崩了:1 XOR X = X。X 从哪里来?未初始化的存储单元和触发器、总线浮空与保持器、多周期路径在 capture 沿采不到稳定值、模拟/时钟模块的不可控输出、被 DFT 规则切掉的黑盒 IP。一个 X 进了异或树,那个输出周期直接变成不可预测;而 X 还会沿移位链逐拍流动,污染一长串输出周期,称为 X propagation(X 传播)。压缩器把多条链收敛到一起,收敛度越高,一个 X 的「杀伤面积」越大——这是压缩结构独有的新问题。
工程上处理 X 有两条路线,外加源头治理。
| X 处理方式 | 做法 | 优点 | 代价 |
|---|---|---|---|
| 源头控 X | 加初始化逻辑、时钟可控化、切断 X 源 | 最干净,不损失观测性 | 改设计,覆盖不全所有 X |
| X-mask | 按 ATPG 算出的屏蔽信息,在压缩器前把含 X 的链位强制掩成 0 | 结构简单,X 被彻底挡住 | 屏蔽信号本身要从 ATE 或片上控制器送进来;掩 0 的同时掩掉同周期其他链的故障 |
| X-tolerant 压缩 | 特殊异或/选择结构(如 X-compact、X-blocking),让 X 不参与传播,仍输出其他链的确定值 | 不丢无 X 链的观测性,向量少 | 硬件更复杂,面积略增,容忍 X 的数量有上限 |
| X-bound/X-impact ATPG | 工具在生成向量时主动避开 X 传播路径 | 零硬件成本 | 向量数膨胀,覆盖率可能受限 |
EDT 类商用方案默认走 X-tolerant 路线:压缩器的异或网络经过精心设计,少量 X 进入时输出仍保持确定,故障效应照样可观测;当某拍 X 数量超过结构容忍上限,再配合按向量动态生成的 mask 信号把个别输入掩掉。两种手段叠加,量产芯片常见的 X 密度(通常 1% 以下)基本不影响故障覆盖率。反过来,控 X 永远是性价比最高的第一招——DFT 评审清单里「上电后所有触发器必须能复位到确定态」「三态总线在测试模式要有默认上下拉」这类规则,都是在压缩器上游少给 X 留入口。
还有一个与 X 无关、但面试常被追问的概念:aliasing(混叠)。异或压缩是多对一映射,理论上存在「两条链上的故障效应恰好互相抵消、输出看起来正常」的概率。空间异或每拍独立输出、不做跨拍累加,只要 ATPG 保证同一拍内故障效应落在奇数条相关链上即可观测,商用结构通过控制每条输出连接的链数和连接相位,把混叠概率压到工程可忽略;真正需要担心混叠的是 MISR 那种把响应跨拍累加成一个签名(signature)的时间压缩,BIST 里用得多,而 EDT 的量产压缩输出是逐拍流回 ATE 的,ATE 逐位比对,两者不要混淆。
五、压缩比与测试时间、引脚数的账
把无压缩扫描和 EDT 摆在一起对比,收益和代价一目了然。
| 维度 | 无压缩全扫描 | EDT 压缩扫描 |
|---|---|---|
| 外部扫描通道 | 等于链数,几十到上百 | 个位数到十几条 |
| 内部链长 | L(一条链串到底) | 约 L/k,k 为几何展开度 |
| 每向量移位周期 | L | 约 L/k(解压器/压缩器有少量开销拍) |
| 向量数据量(ATE 存储) | N × L 位 | 约 N × L/k 位 |
| ATPG | 常规扫描向量 | 需解压器模型,求解约束下的向量 |
| X 问题 | X 只影响它所在的链 | 必须配 X-mask / X-tolerant |
| 面积开销 | 无 | 解压器、压缩器、mask 逻辑,约百分之一到几个百分点 |
| 诊断定位 | 直接看链上波形 | 需压缩域诊断流程,通常保留无压缩模式 |
数字算一遍更直观。假设设计有 300 万个触发器,无压缩时用 16 条链,每条约 18.75 万位;向量总数(stuck-at + transition 合计)2 万条,移位频率 50MHz。无压缩总移位周期约 2e4 × 1.875e5 = 37.5 亿拍,仅移位时间就约 750 秒,还没算 capture 和向量切换。改成压缩比 40x 的 EDT:内部 640 条短链、每条约 4700 位,外部仍只需十几条通道,移位时间降到约 19 秒量级。ATE 按秒收费,每颗芯片省下十几分钟,乘以百万级出货量,就是压缩逻辑那点面积开销的千万倍回报。
下图画出压缩比与三个关键量的关系走势。
图里三条支路要合起来看:时间随 k 近似反比下降,引脚数几乎不随 k 变化,而可测性单调恶化。再叠加一个容易漏的因素——几百条短链并行移位意味着同一拍内成千上万触发器同时翻转,capture 期间的开关功耗和 IR-drop 显著高于长链串行场景,压缩比越高翻转越集中。因此压缩比不是孤立由测试时间决定的:要在 ATE 机时价目表、封装引脚预算、ATPG 覆盖率报告、功耗签核(power signoff)四角之间取平衡,真实项目里 20x 到 50x 是最常见的落点。
ATE 侧还有一笔存储与带宽的账。测试机向量存储器要为每个通道保存完整时序波形,无压缩方案下总数据量是「链数 × 链长 × 向量数」,前面 300 万触发器的例子里单套 stuck-at 向量就是几十亿位,老旧 ATE 的向量内存根本装不下,只能分卷(reload)多次加载,换卷要停测试机、换磁盘文件,每颗芯片平白多出重载时间。压缩后总数据量近似除以 k,一套向量装进向量内存一次跑完全部芯片,reload 开销一并消失。同理,现代 ATE 支持按 site 并行测多颗芯片(multi-site),每个 site 占用的通道越少,同机并发 site 数越高:压缩省下的通道可以直接换成 4 site、8 site 并行,单位时间产出再翻几倍。所以压缩比对成本的贡献不止「单颗快」,而是「单颗快 + 向量装得下 + 多颗一起测」三重叠加,这也是为什么哪怕面积敏感的消费级芯片也几乎必上压缩。
六、压缩模式、诊断与常见坑
量产芯片一般同时保留三套测试配置:无压缩扫描(调试和诊断用,故障定位直接映射到链上位号)、EDT 压缩模式(量产主力,跑绝大部分 stuck-at 和 transition 向量)、以及必要时的低频诊断模式。ATPG 工具要分别产出两套向量集,DRC 阶段也会校验解压器、压缩器的连通性和时序。
工程上反复出现的坑值得列一份短清单。
- X 源失控:某类 X 在压缩模式才暴露(如测试模式下绕过了正常初始化序列),压缩器输出成片 X。处理顺序永远是先堵 X 源,再谈加 mask。
- mask 过量:为图省事整周期整链地掩,故障观测性被一起掩掉,覆盖率静默下跌。要看 ATPG 报告里 masked observation 的比例。
- 压缩比只按时间定:忽略并行移位功耗,capture 沿 IR-drop 导致好芯片测出 fail(yield 假象损失)。压缩链分组要配合功耗分析做翻转均衡。
- 压缩逻辑没进时序约束:解压器/压缩器自身的移位路径不过 STA,高频移位出问题。
- 诊断走压缩链:ATE 上看到 fail 却无法直接还原物理位置。保留无压缩模式,或使用工具的压缩域诊断流程。
- IP 黑盒不配合:第三方硬宏的扫描接口无法重分组,在压缩结构边缘形成长链短板,把整体链长拖回去。
这一篇在知识体系里的位置
本篇属于「集成电路大类 · 芯片设计」进阶层的 DFT/测试专题,回答「扫描结构确定之后,量产测试成本怎么压」。前置阅读是 ATPG 扫描链(扫描触发器、链化与移位捕获)和固定型故障模型(故障覆盖率与向量从何而来),at-speed 测试见跳变故障与实速测试,测试访问的标准接口与 TAP 控制器见 JTAG 边界扫描。横向比较,存储器有自己的一套内建自测试体系(MBIST),与逻辑压缩互不替代;向后则进入诊断(diagnosis)、良率分析与物理失效归因的话题。
总结
测试压缩 EDT 在 SI 端放 decompressor、把少量 ATE 通道线性展开成数百条并行短扫描链,在 SO 端放 compactor、把众多响应异或收敛回少数引脚,使移位周期与向量存储量近似按压缩比 1/k 下降而外部引脚几乎不增;它成立的前提是扫描向量里 care bit 本就稀疏,最大的敌人是 X 态——异或遇 X 即失效,需源头控 X 加 X-mask 与 X-tolerant 压缩协同;压缩比越高测试时间越短,但 ATPG 可解性、故障覆盖率和 capture 功耗同步恶化,工程甜点普遍落在 20x 到 50x,并保留无压缩扫描模式供诊断使用。