1. Scan Chain概述:什么是扫描链、为什么需要扫描链、扫描链的基本原理

大家好,我是你们的DFT讲师。今天咱们聊聊Scan Chain——这个DFT领域最基础、也最核心的概念。

说实话,我入行那会儿,第一次听到「扫描链」三个字,脑子里浮现的是超市收银台的扫码枪。后来才知道,这玩意儿跟扫码完全不是一回事。嗯,咱们今天就把这个事儿彻底讲明白。

1.1 什么是扫描链?

扫描链,英文叫Scan Chain。说白了,就是一种测试用的电路结构。

你想想看,芯片内部有成千上万个触发器(Flip-Flop)。正常工作的时候,它们各司其职,处理数据。但测试的时候呢?我们需要知道每个触发器的状态对不对。怎么办?

我的做法是:把这些触发器串起来,像糖葫芦一样,一个接一个。测试时,从芯片外部灌入一串测试数据,让数据沿着这条链跑一遍,最后从输出端读出来。这就是扫描链。

核心定义:扫描链是将芯片内部的所有(或部分)触发器连接成一条或多条移位寄存器链,用于测试芯片制造缺陷的DFT技术。

我在一个28nm的项目中遇到过这样的情况:芯片面积紧张,但测试覆盖率要求又很高。最后我们用了多扫描链的方案,把一条长链拆成四条短链,既保证了覆盖率,又没超面积预算。这种灵活配置,就是扫描链的魅力所在。

1.2 为什么需要扫描链?

这个问题,我经常被刚入行的同事问起。答案其实很简单:没有扫描链,你根本测不了芯片。

为什么会这样?我给你列几个关键原因:

  • 内部节点不可观测:芯片正常工作的时候,你只能看到输入输出引脚。内部几百个触发器的状态,你根本看不到。就像黑盒子,出了问题只能猜。
  • 测试覆盖率低:没有扫描链,你只能靠功能测试。功能测试能覆盖的故障类型非常有限。我见过一个项目,功能测试覆盖率只有30%,加上扫描链后直接飙到98%。
  • 故障定位困难:芯片坏了,你得知道是哪个逻辑门出了问题。没有扫描链,你只能靠猜。有了扫描链,你可以把故障精确到某个触发器。
  • 良率提升需要:量产芯片,良率就是生命线。扫描链能帮你快速筛选出坏片,还能反馈给工艺部门改进。

我的经验:曾经有个项目,流片回来发现一批芯片功耗异常。靠扫描链一查,发现是某个区域的触发器存在桥接故障。如果没有扫描链,这批芯片可能就被当成「不明原因失效」扔掉了。

1.3 扫描链的基本原理

好,咱们来点硬核的。扫描链到底是怎么工作的?

每个普通的触发器,都有一个数据输入D和时钟CK。扫描链给每个触发器加了一个额外的输入——扫描输入SI,以及一个控制信号——扫描使能SE。

工作模式有两种:

模式 SE信号 行为
正常模式 0 触发器正常工作,D端数据打入Q端
扫描模式 1 触发器进入移位模式,SI端数据打入Q端

测试流程分三步:

  1. 移位加载(Shift In):SE置1,把测试向量从扫描输入引脚灌入,沿着链一路移进去。每个时钟周期移一位。
  2. 捕获(Capture):SE置0,给一个或几个时钟脉冲。此时组合逻辑根据当前触发器的状态计算出新的结果,打入触发器。
  3. 移位卸载(Shift Out):SE再置1,把捕获到的结果从扫描输出引脚移出来。同时可以加载下一组测试向量。

用代码表示一个简单的扫描触发器行为:

// 扫描触发器行为描述
always @(posedge clk) begin
  if (scan_enable)
    Q <= scan_in;   // 扫描模式:从SI输入
  else
    Q <= D;         // 正常模式:从D输入
end

assign scan_out = Q; // 扫描输出连接到下一级SI

你看,就这么简单。但实际项目中,扫描链的设计远不止这些。比如时钟域怎么处理?异步复位怎么处理?多扫描链怎么平衡?这些咱们后面章节会详细讲。

注意:扫描链设计中最容易踩的坑是时钟域交叉。我曾经在一个项目中,两个时钟域的触发器串在一条扫描链上,结果测试时数据老是出错。后来发现是时钟不同步导致的。所以,不同时钟域的触发器一定要分到不同的扫描链,或者加同步器。

1.4 扫描链的两种基本类型

根据触发器的替换方式,扫描链分为两种:

  • Muxed-D扫描:最常用。在D端前加一个2选1MUX,选择D还是SI。面积开销小,时序影响也小。
  • LSSD扫描:Level-Sensitive Scan Design。用两个锁存器代替一个触发器。抗噪声能力强,但面积大。主要用于高性能或特殊工艺。

我个人习惯用Muxed-D,因为它在面积和性能之间取得了很好的平衡。除非客户特别要求,否则我不会轻易上LSSD。

1.5 小结

好了,咱们把扫描链的底牌都翻了一遍。总结一下:

  • 扫描链就是把触发器串起来,让测试数据能灌进去、读出来
  • 没有扫描链,芯片测试覆盖率会惨不忍睹
  • 工作原理就是「移位→捕获→移位」三步走
  • Muxed-D是主流,LSSD是特殊场景的选择

下一章,咱们会深入聊聊扫描链的架构设计。到时候我会分享一些实际项目中的配置技巧,保证让你少走弯路。

记住一句话:扫描链不是万能的,但没有扫描链是万万不能的。