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 微观分析:定位具体故障点

确定了问题范围后,就可以开始精确定位了。这里我分享一个我常用的方法:

  1. 二分法查找:把扫描链分成两半,分别测试。如果前半段正常、后半段异常,那问题就在后半段。继续二分,直到找到故障点。
  2. 对比测试:用一条已知正常的扫描链做参考,对比两条链的测试结果差异。
  3. 物理探针:如果条件允许,用FIB(聚焦离子束)或者探针台直接测量可疑节点的波形。

实战经验:二分法在调试时特别管用。我曾经用这个方法,在一条8000多级的扫描链上,只用了不到10次测试就定位到了第3721级触发器的问题。效率非常高。

4.3.3 常见陷阱与避坑指南

调试过程中有几个坑,我踩过,你也得小心:

  • 陷阱1:只盯着扫描链本身看,忽略了周边逻辑。有时候是扫描链旁边的组合逻辑出了问题,影响了数据。
  • 陷阱2:过度依赖工具诊断结果。工具不是万能的,尤其是遇到桥接故障或软错误时,工具经常误报。
  • 陷阱3:忽略了电源噪声。扫描测试时电流很大,IR drop会导致时序恶化。我有个项目就是这个问题,折腾了两周才发现是电源网络设计不合理。

避坑指南:我曾经因为太相信工具报告,在一个桥接故障上浪费了三天。后来用物理探针一量,发现根本不是工具说的那个位置。从那以后,我养成了「先怀疑,再验证」的习惯。

4.4 知识体系总览

为了让你更直观地理解扫描链调试的整体流程,我画了一张图:

扫描链调试知识体系 常见症状 诊断数据 分析方法 避坑指南 全链失效 固定故障 时序故障 桥接故障 测试日志 → 失效pattern/cycle 波形抓取 → 关键信号检查 诊断工具 → 候选故障列表 宏观分析:确定问题范围 微观分析:二分法定位故障点 核心思路:从宏观到微观,先怀疑再验证

这张图把扫描链调试的四个核心环节串起来了。你从症状入手,收集数据,然后逐步分析,最后别忘了避开那些常见的坑。每一步都有对应的工具和方法,关键是形成自己的调试思路。

好了,扫描链调试入门就聊到这儿。记住,调试是个经验活,多动手、多总结,慢慢你就能一眼看出问题所在了。

可可精品资料库