集成电路可测性设计DFT的详细分类

目录
前言
可测试性设计方法之一:扫描设计方法
可测试性设计方法之二:标准IEEE测试访问方法
【集成电路可测性设计DFT的详细分类】可测试性设计方法之三:逻辑内建自测试
可测试性设计方法之四:通过MBIST测试存储器
总结
前言 大多数测试生成方案都会将一个被测电路视为一个黑盒子,面对测试机来说,唯一可用的控制节点就是其主要输入端,而唯一可用的观测点则是其主要输出端。因此这些就限制了被测电路的可控性以及可观测性,这意味着我们必须使用复杂测试生成算法来测试组合电路和时序电路。因此我们可以通过牺牲端口和芯片面积,付出可以承受的代价,通过纳入可测试性设计技术来增强芯片的可测试性。

可测试性设计方法之一:扫描设计方法 扫描技术的基石就是可扫描触发器。
集成电路可测性设计DFT的详细分类
文章图片

如上图所示,图中是一个可扫描触发器。可以看到,在普通的D触发器的外围添加了一个选择器,在测试模式时,SE信号为1,SI的值被送入D端,随着CLK信号的到来由Q端输出,此时对应输入称之为SO。通过这样的方式,我们可以测试每一个D触发器是否可以正常工作,而可扫描触发器的作用不仅如此。
1.全扫描(full scan)
集成电路可测性设计DFT的详细分类
文章图片

全扫描技术就是将电路中的所有触发器都替换成可扫描触发器,然后按照上图的方式将他们全部串联起来,变成一个移位寄存器链,称之为扫描链。我们知道,一个芯片中的主要工作部分就是组合逻辑和时序电路,使用组合逻辑来实现功能,使用时序电路进行存储,扫描链就是针对于测试这两种电路进行设计的,使用扫描技术可以直接从输入端和输出端对电路中的所有状态进行观察和控制,也因此扫描链插入成为了应用最为广泛的DFT设计方法。
但是扫描链有一个很难解决的问题,那就是在一个非常庞大的系统中,如果我们将所有的触发器(n个触发器)都链接在一起,那根据原理,我们需要n个周期才能将测试序列送入所有的触发器中,这无疑增加了测试时间,这一点需要花费更多的精力去均衡。
前面有提到如何测试所有的触发器是否能够正常工作,现在我们来看组合逻辑。将一个芯片的功能模块全部打散后,在寄存器传输级视图中我们可以看到在相邻的两个触发器会有很多的组合逻辑电路,可以说所有的组合逻辑都位于两个触发器之间,如果这些组合逻辑电路中有缺陷和故障,我们该如何检测出来呢?这时候就要看SE信号了。我们先将SE信号置为高位,通过SI和Q/SO端口将我们的检测序列移入所有的触发器中,此时将SE信号置为低位,此时我们的检测序列就会通过Q端进入所有的组合逻辑,在下一个周期到来时,组合逻辑产生的值就会进入下一级触发器的D端存储在触发器中,此时我们第三次改变SE信号的状态,将其置为高位,再通过n-1个周期我们就可以将结果序列全部读出来,通过和正确的值进行比较就可以得出这个电路中是否存在缺陷和故障。
值得一提的是,上文中提到的正确的值是通过我们使用网表文件进行故障仿真所得到的准确无误的结果。而上文中提到的检测序列则是ATPG生成的测试序列,随着电路的规模大小,检测序列的数量也会从数百条到上千条不等,这是由故障覆盖率决定的,ATPG会在后续文章中详细阐述。
2.部分扫描(partial scan)
正如上文所说,我们通过牺牲芯片的面积和速度来进行DFT设计。将电路中的全部触发器都替换成可扫描触发器大概会增加芯片15%-30%的面积,因此我们有时也会采用部分扫描的方法来进行DFT设计。部分扫描方法是只选择一部分触发器构成扫描链,降低了扫描设计的芯片面积开销,减小了扫描链长度,减少了测试时间。其关键技术在于如何选择触发器,选择触发器的方法有很多,这里就不再赘述了。值得注意的一点是,虽然部分扫描可以减小扫描链长度,减小面积。但是却需要更复杂的测试序列生成算法,我们也会需要更多的测试序列来对电路进行测试,这样才能到达要求的故障覆盖率。

可测试性设计方法之二:标准IEEE测试访问方法 在扫描测试方法中还有另一种DFT方法 - 边界扫描(Boundary Scan),边界扫描的主要目的是被测电路的边界,而不是芯片内部或内核内部。边界扫描现在已成为一个IEEE标准(IEEE标准1149.1),他不改变内核的设计,主要是将被测内核从电路板或芯片上的其他设备中歌里出来。
由于数字组件和多层印制电路板的复杂性,使用隔离芯片组件的针床式探测技术进行内部电路测试已不再是一个简单的解决方案。此外测试复杂组件和多核芯片不可能通过芯片外测试方法来实现。因此我们需要能够访问各种组件或内核,同时在测试时能够把他们彼此隔离开且不得明显增加测试成本的方法。
集成电路可测性设计DFT的详细分类
文章图片

因为IEEE标准1149.1主要用于测试核心逻辑组件之间的连线和核心逻辑组件的端口扫描寄存器,所以它也被称为边界扫描。边界扫描标准能够省去用物理探针探测被测组件引脚的过程,该方法提高了印制电路板内部或者芯片内部的可控制性和可观测性。上图显示了边界扫描在被测系统电路周围的构成形式。由TDI端口开始直到TDO端结束,形成了一条寄存器链环绕在了被测电路外围边界,与被测电路的输入输出端口相连。下方的TCK、TMS、TRST则形成了控制电路。
边界扫描有一套完整的指令标准,IEEE1149.1使用指令来测试芯片的内部和外部连接。这套标准适用于所有的数字设计,且通过这套统一的标准可以使ATE硬件和软件开发变的更加容易。

可测试性设计方法之三:逻辑内建自测试 逻辑内建自测试(Built-inSelfTest,BIST)与上述两种DFT方法有着很大的不同。扫描技术专注于测试内核,边界扫描则注重于内核间的接口,这两种测试方法的共同点是严重依赖自动测试设备。而内建自测试的设计方法会试着不使用或减少所需的自动测试设备。
集成电路可测性设计DFT的详细分类
文章图片

如图所示,一个基本的内建自测试设计在被测电路之外会包含3个部分。
1.测试数据生成(Pattern Generator)
与前两种方法不同的地方主要就在于此,何谓内建自测试,即就是在电路内部使用了一种可以产生测试数据的特殊硬件。而在前面的设计方法中,我们会将测试数据存储于自动测试设备中。在内建自测试结构中我们会使用各种各样的测试向量产生器(Test Pattern Generator,TPG),测试向量产生器是一种能够生成详尽或伪随机测试数据的硬件结构。常用的有:穷举计数器、环形计数器、扭环计数器、以及线性反馈移位寄存器(Line Feedback Shift Register , LFSR),线性反馈移位寄存器则是其中应用最为广泛的一种测试生成方法。
2.输出响应分析(Response Analyzer)
同样的,我们检测被测电路响应也不会是将响应数据存储在电路里,而是使用一种特殊硬件。内建自测试通过存储所有测试响应的一个特征信号或它的一个压缩版本来解决这个问题。常用的电路结构有1字符计数器、跳变计数器、奇偶校验、串行LFSR、多输入特征信号寄存器。
3.测试控制(Test Controller) 在这一部分控制整个内建自测试流程。

可测试性设计方法之四:通过MBIST测试存储器 在存储器测试中,通常使用MBIST结构。在今天的技术条件下,几乎每一种芯片都会包含存储器,存储器的类型也多种多样,因此针对存储器提出了一种测试方法MemoryBuilt-inSelfTest。同样,MBIST测试原理是在设计中插入内建自测试逻辑,靠内建自测试逻辑Pattern Generator产生激励,对存储器进行读写,然后在内建自测试逻辑Comparator中去比较测试结果。所以不依赖测试机台也能完成自测试。Mbist结构如下,左上角Controller使用一个状态机来控制整个测试流程。通过对存储器每一个存储单元进行读写测试来判断存储器有没有制造缺陷。
集成电路可测性设计DFT的详细分类
文章图片

总结
在以上4种技术中,扫描和逻辑逻辑内建自测试插入要更加复杂和困难一点。存储器和逻辑内建自测试插入一般由专门的工具来实现,不需要在综合过程中进行。边界扫描插入可以在综合过程中进行,实现方法较为简单。本文及后续文章都将会以扫描插入为研究重点。
扫描插入使用DC自带的DFTC即可插入到电路中,扫描插入是应用最为广泛的可测性设计技术,使用它通常可以使设计的故障覆盖率达到95%以上。

参考资料:
数字系统测试和可测试性设计 贺海文 唐威昀 译
VLSI设计方法与项目实施 邹雪城等 编著
集成电路可测性设计
ASIC--DFT可测性设计工程师



    推荐阅读