3、扫描链技术(Scan Chain)
各位工程师朋友,今天我们来聊聊扫描链。说实话,这是DFT里最基础也最核心的技术之一。我做了这么多年车规芯片,每次流片回来第一件事就是跑扫描测试——这玩意儿要是没过,那基本等于白干了。
3.1 扫描链原理
扫描链的原理,说白了就是把芯片里的普通寄存器串成一串,像糖葫芦一样。正常工作时,每个寄存器各司其职;测试时,我们通过这根链把测试数据灌进去,再把结果捞出来。
为什么要这么做?你想想看,芯片内部那么多节点,你总不能拿探针一个个去戳吧?扫描链就是给你开了一扇窗,让你能看见芯片内部的状态。
我遇到过最典型的场景:某次车规MCU的SPI模块在高温下偶尔出错。常规功能测试根本复现不了,最后靠扫描链抓到了内部寄存器的时序违例。嗯,这就是扫描链的价值。
3.2 扫描触发器结构
扫描触发器,其实就是普通触发器加了个多路选择器。我习惯把它分成三种结构:
| 类型 | 结构特点 | 面积开销 | 我推荐的使用场景 |
|---|---|---|---|
| muxed-D型 | D端前加2选1MUX | 约10% | 通用场景,最常用 |
| LSSD型 | 双锁存器结构 | 约30% | 高速设计,我很少用 |
| 时钟门控型 | 集成时钟门控 | 约15% | 低功耗设计,我比较推荐 |
我个人习惯用muxed-D型,原因很简单——它够成熟,EDA工具支持最好。你想想看,车规芯片动辄几百万门,要是选个冷门结构,后面ATPG都跑不动。
关键参数:扫描触发器的建立时间通常比普通触发器多0.5~1ns。我在做时序分析时,会专门给扫描路径留出余量。
3.3 扫描链插入流程
扫描链插入,我一般分四步走:
- RTL设计完成——先确保功能正确,别急着插扫描
- 综合时插入——用DC或Genus,指定扫描链长度和顺序
- 验证扫描链——跑仿真,确认链能正常工作
- ATPG生成——根据扫描链生成测试向量
这里有个坑,我踩过好几次:扫描链长度不能太长。我曾经在一个项目里把整颗芯片的寄存器串成一条链,结果测试时间长得离谱,ATE机台都跑超时了。
我的经验:每条扫描链控制在500~1000个触发器比较合适。车规芯片通常需要多条链并行测试,这样能大幅缩短测试时间。
插入扫描链时,还要注意时钟域的问题。不同时钟域的寄存器不能串在一起,否则跨时钟域的时序问题会让你头疼到怀疑人生。
3.4 ATPG基础
ATPG,全称是Automatic Test Pattern Generation。说白了,就是自动生成测试向量。你插好了扫描链,总得知道往里面灌什么数据吧?ATPG就是干这个的。
ATPG的核心算法有三种:
- D算法——最经典,但速度慢,适合小规模设计
- PODEM——比D算法快,我比较常用
- FAN——速度最快,适合大规模芯片
我一般用PODEM算法。为什么?因为车规芯片的故障覆盖率要求高(通常要99%以上),PODEM在覆盖率和运行时间之间平衡得最好。
注意:ATPG生成的测试向量,一定要在仿真环境里跑一遍。我见过有人直接拿ATPG结果去ATE上跑,结果芯片烧了——因为ATPG没考虑功耗约束。
ATPG的输出格式通常是STIL或WGL。我个人习惯用STIL,因为主流ATE机台都支持。你想想看,要是选个冷门格式,到了产线发现机台不认,那可就尴尬了。
最后说一句:扫描链技术看似简单,但真正做好不容易。我建议你在做第一个项目时,多花点时间在扫描链验证上。嗯,这步省了,后面流片回来有你哭的。