4、扫描链调试入门:扫描链失效的常见症状、诊断数据收集、初步分析方法
扫描链调试,说实话,是DFT工程师最常面对的「硬仗」之一。我入行那会儿,第一次遇到扫描链失效,盯着波形图看了整整两天,愣是没找到问题在哪。后来经验多了才发现,其实扫描链失效的症状就那么几种,诊断方法也是有套路可循的。
今天咱们就聊聊扫描链调试的入门功夫。你想想看,一条扫描链动辄几千上万个触发器,只要中间有一个出了问题,整条链就废了。所以,快速定位问题点,是每个DFT工程师的必备技能。
4.1 扫描链失效的常见症状
扫描链失效,说白了就是数据在移位过程中出了岔子。我在项目中遇到过各种各样的失效模式,归纳起来主要有这么几类:
核心观点:扫描链失效的本质是「移位错误」——数据从SI到SO的传输路径上,某个环节出了问题。
4.1.1 全链失效(All-Fail)
症状很直观:扫描链输出端SO始终是固定的0或1,或者完全无响应。这种问题通常出在链的起点或终点。
- 时钟问题:扫描时钟没给到,或者时钟门控被关掉了。我有个项目就是时钟树综合时漏了一条分支,整条链静默。
- 复位问题:扫描触发器一直被复位,数据进不去。嗯,这里要注意,异步复位在扫描模式下必须被释放。
- SI/SO端口问题:顶层端口没接对,或者pad的IO方向配置错了。
4.1.2 固定故障(Stuck-at Fault)
症状是:移位到某个位置后,输出就一直卡在某个值上不动了。比如你灌入一串010101,结果输出到第100拍后变成了000000。
为什么会这样?大概率是某个触发器的Q端或D端短路了,或者某个组合逻辑门卡死了。我记得有一次,查了三天才发现是一个AOI门内部短路,输出被拉死了。
4.1.3 时序故障(Timing Fault)
症状比较隐蔽:低频测试能过,高频测试就挂。或者某些pattern能过,某些过不了。
这种问题通常和时钟偏斜、信号串扰、或者触发器本身的建立/保持时间违例有关。我个人习惯,遇到时序故障先看STA报告,看看有没有临界路径正好落在扫描链上。
4.1.4 桥接故障(Bridging Fault)
症状是:两条扫描链互相影响,或者扫描链和功能逻辑串扰。你灌入A链的数据,结果B链的输出也跟着变了。
这种问题在先进工艺节点下越来越常见。线间距小,串扰大,你想想看,两条长线并行走几百微米,不出问题才怪。
| 失效类型 | 典型症状 | 常见原因 |
|---|---|---|
| 全链失效 | SO固定0/1,无响应 | 时钟、复位、端口问题 |
| 固定故障 | 移位到某点后卡死 | 触发器/逻辑门短路 |
| 时序故障 | 高频测试失败 | 时钟偏斜、建立/保持违例 |
| 桥接故障 | 链间串扰 | 线间距过近、串扰 |
4.2 诊断数据收集
发现问题只是第一步,关键是怎么收集到足够的信息来定位问题。我建议你按照下面的步骤来:
4.2.1 测试日志分析
ATE测试机台会输出详细的测试日志,里面包含了每个pattern的pass/fail信息。重点关注:
- 失效pattern编号:哪个pattern失败了?是shift pattern还是capture pattern?
- 失效cycle位置:在第几个时钟周期出错的?这个信息可以直接映射到扫描链上的物理位置。
- 失效bit位:输出数据中哪一位错了?是单bit错误还是多bit错误?
小技巧:我个人习惯把失效cycle数除以扫描链长度,取余数就能知道是链上的第几个触发器出了问题。这个计算在调试时非常实用。
4.2.2 波形数据抓取
如果ATE日志不够详细,那就得上波形了。用示波器或者逻辑分析仪抓取SI、SO、时钟、复位这几个关键信号。
看波形时注意几点:
- 时钟的边沿是否干净?有没有毛刺?
- 数据信号的电平是否正常?有没有中间态?
- 复位信号的释放时机对不对?
我曾经遇到一个案例,波形上看时钟和数据都没问题,但就是移位出错。后来用眼图分析才发现,时钟的抖动太大,导致某些触发器采样到了错误的数据。
4.2.3 诊断工具输出
现在主流的EDA工具(如Tessent、DFTMAX)都自带诊断功能。它们会基于失效数据反推出最可能的故障位置。
工具输出的诊断报告通常包含:
- 候选故障列表:按可能性从高到低排列
- 故障类型推断:是固定故障还是桥接故障?
- 物理位置信息:在版图上的坐标
注意:工具给出的结果只是「候选」,不是「定论」。我见过好几次工具报的故障点,实际查下来根本不是那回事。所以,一定要结合物理分析来验证。
4.3 初步分析方法
数据收集完了,接下来就是分析。我一般按照「从宏观到微观」的思路来:
4.3.1 宏观分析:确定问题范围
先别急着看细节,先搞清楚问题到底出在哪一层:
- 是单条链的问题还是多条链的问题?多条链同时出问题,大概率是公共资源(时钟、复位、电源)出了问题。
- 是shift阶段还是capture阶段?shift阶段出问题,通常是扫描链本身有物理缺陷。capture阶段出问题,可能是组合逻辑的时序问题。
- 是固定故障还是时序故障?改变测试频率看看,如果频率降低后能通过,那就是时序问题。
4.3.2 微观分析:定位具体故障点
确定了问题范围后,就可以开始精确定位了。这里我分享一个我常用的方法:
- 二分法查找:把扫描链分成两半,分别测试。如果前半段正常、后半段异常,那问题就在后半段。继续二分,直到找到故障点。
- 对比测试:用一条已知正常的扫描链做参考,对比两条链的测试结果差异。
- 物理探针:如果条件允许,用FIB(聚焦离子束)或者探针台直接测量可疑节点的波形。
实战经验:二分法在调试时特别管用。我曾经用这个方法,在一条8000多级的扫描链上,只用了不到10次测试就定位到了第3721级触发器的问题。效率非常高。
4.3.3 常见陷阱与避坑指南
调试过程中有几个坑,我踩过,你也得小心:
- 陷阱1:只盯着扫描链本身看,忽略了周边逻辑。有时候是扫描链旁边的组合逻辑出了问题,影响了数据。
- 陷阱2:过度依赖工具诊断结果。工具不是万能的,尤其是遇到桥接故障或软错误时,工具经常误报。
- 陷阱3:忽略了电源噪声。扫描测试时电流很大,IR drop会导致时序恶化。我有个项目就是这个问题,折腾了两周才发现是电源网络设计不合理。
避坑指南:我曾经因为太相信工具报告,在一个桥接故障上浪费了三天。后来用物理探针一量,发现根本不是工具说的那个位置。从那以后,我养成了「先怀疑,再验证」的习惯。
4.4 知识体系总览
为了让你更直观地理解扫描链调试的整体流程,我画了一张图:
这张图把扫描链调试的四个核心环节串起来了。你从症状入手,收集数据,然后逐步分析,最后别忘了避开那些常见的坑。每一步都有对应的工具和方法,关键是形成自己的调试思路。
好了,扫描链调试入门就聊到这儿。记住,调试是个经验活,多动手、多总结,慢慢你就能一眼看出问题所在了。