前端学习 5:DFT
DFT技术
DFT (design for testability):指在设计系统和电路的同时,考虑测试的需求,通过增加一定的硬件开销,获得最大可测性的设计过程。(因为增加了硬件,所以也带来了不足)
可测性设计中的两个重要概念:可控制性(设置信号的难度)、可观测性(观察信号故障的难度)。
下文主要讲解数字电路的可测性设计方法:扫描测试结构、用于存储器测试的内建自测结构、以及用于测试板级连接的边界扫描测试结构。
目录
DFT技术
(1)Scan Chain(扫描链)
基本概念
触发器和锁存器设置
原理
扫描规则
设计流程及相关EDA 工具
(2)M-BIST(存储器内建自测试),
当前测试嵌入式存储器的方法:
BIST 基本概念
算法:
工具集成:
(3)Boundary Scan(边界扫描)
IEEE 1149.1 标准
2. 端口定义如下
3. TAP 控制器
4. 寄存器组
5. 相关指令
6. 板级测试策略
DFT 技术在 SOC 中的应用
模块级的 DFT技术
SOC中的DFT应用
总结:
(1)Scan Chain(扫描链)
扫描测试是理想的结构故障测试 结构。针对时序电路,测试寄存器(Flip-Flop)和组合逻辑;
基本概念
扫描测试是目前数字集成电路设计中最常用的可测性设计技术,这里说的是内部扫描。不同于边界扫描。扫描时序分成时序和组合两部分,从而使内部节点可以控制并且可以观察。
测试矢量的施加及传输是通过 “ 将寄存器用特殊设计的带有扫描功能的寄存器代替,使其连接成一个或几个长的移位寄存器链来实现的 ”。
扫描测试结构的基本单元就是扫描触发器,目前使用的最广泛的就是带多路选择器的D 型触发器和带扫描端的锁存器。
触发器和锁存器设置
D 型触发器:
带扫描端的锁存器:
除了扫描触发器外,还有一种扫描方式为电平敏感扫描设计,其中利用的扫描单元就是带扫描端的锁存器,如图10-16所示。
当c为高电平的时候,为正常工作模式,数据从d端到mq端;
当a为高电平,为扫描工作模式,数据从 scan_in端到mq 端;
当b为高电平时,存在第一级锁存器中的数据传输到 sq 输出端。
这类扫描单元主要应用于基于锁存器的设计中,其最大的劣势是时钟的生成和分配异常复杂。
将这些扫描单元按扫描移位模式连接起来,就构成了扫描测试的基本结构。扫描方式分为全扫描和部分扫描,如图10-17所示。全扫描 意味着在设计中的每一个寄存器都用具有扫描功能的寄存器代替,使其在扫描测试模试下连成一个或几个移位寄存器链。这样,电路的所有状态可以直接从原始输人和输出端得到控制和观察。所谓部分扫描是指电路中一部分采用了扫描测试结构,而另一部分没有。这些没有采用扫描测试结构的部分将采用功能测试向量进行测试。通常在设计中为了提高电路的性能,排除那些违背可测性设计规则的寄存器,完成的扫描测试介于全扫描和部分扫描之间。
原理
在一般的设计中,为了达到 IC 设计的周期化和同步的目的,电路的主要组成结构为组合逻辑和触发器,信号在经历了组合逻辑传输后,用触发器进行同步。
因此对于一般的设计,采用基于多路选择触发器的扫描设计方法,相应的扫描单元就是带多路选择的扫描触发器。
而在处理器核中,锁存器如果是主要寄存逻辑单元,那么就采用电平敏感扫描设计,相应的扫描单元就是带扫描端的锁存器。
扫描规则
扫描测试要求电路中每个节点处于可控制和可观测的状态,只有这样才能保证其可替换为相应的扫描单元,并且保证故障覆盖率。为了保证电路中的每个节点都符合设计需求,在扫描链插入之前会进行扫描设计规则的检查。基本扫描设计规则包括:
- 使用同种类扫描单元进行替换,通常选择带多路选择器的扫描触发器;
- 在原始输入端必须能够对所有触发器的时钟端和异步复位端进行控制;
- 时钟信号不能作为触发器的输人信号;
- 三态总线在扫描测试模式必须处于非活跃状态;
- ATPG 无法识别的逻辑应加以屏蔽和旁路。
通常的解决办法是利用工具加人额外电路来解决上述的错误,比如锁存器,可以在DFT Compiler 工具里加入 set_scan _ transparen来屏蔽。
设计流程及相关EDA 工具
扫描测试的设计主要包括两部分内容--测试电路插入、测试矢量的生成。其中,测试电路插入主要完成下列工作:
•在电路中(RTL)中加入测试控制点,包括测试使能信号和必要的时钟控制信号;
• 在扫描模式下将触发器替换为扫描触发器,并且将其串入扫描链中;
•通过检查 DRC,保证每个触发器的可控制性和可观察性。
测试矢量生成,主要是利用ATPG 工具进行自动测试矢量的生成和故障列表分析。扫描测试的可测性设计流程如图 所示。
目前常用的测试综合和ATPG工具如下:
• 扫描插入工具:Synopsys 的 DFT Compiler、Mentor 的DFTAdvisor。
• ATPG 工具:Synopsys 的 TetraMAX、Mentor 的 Fastscan。
• 测试矢量验证:Synopsys 的TetraMAX。
以 Synopsys 的 DFT Compiler 为例,可以将 DFT实现放在综合流程中,而不会妨碍原功能、时序、信号完整或功耗的要求。实现过程主要包括如下4项。
- 信号定义
- 设计综合
- 扫描插入
- 设计规范检查。
(2)M-BIST(存储器内建自测试),
测试芯片中存储资源, rom 和 ram,在设计中插入内建自测试逻辑;
就功能而言存储器主要包括地址解码单元、存储单元和读写控制单元3部分。
存储器的主要故障类型:单元固定故障(SAF)、状态跳变故障(TF)、单元耦合故障(CF)、临近图形敏感故障(NPSF)、地址译码故障(ADF)和数据保持故障(DF)等。
当前测试嵌入式存储器的方法:
(1)直接访问测试方法
直接访问测试方法是在芯片外增加直接访问存储器的端口,通过直接读/写存储单元来测试存储器。
(2)通过片上微处理器进行测试
在这种方法中,微处理器的功能就像一个测试仪,可以利用微处理器存储器中的汇编语言程序来实现所需要的存储器测试算法。
(3)利用存储器内建自测 (BIST,Built-In-Self-Test)
通过在存储器周围加入额外的电路来产生片上测试向量并进行测试比较,完成对存储器的测试。BIST 的方法可以用于RAM、ROM 和 Flash 等存储设备中,主要用于 RAM中。
(4)扫描寄存器测试
对于小型的嵌入式存储器通常使用局部边界扫描寄存器,这种方法需要给嵌入式存储器增加测试外壳,由于外壳的延迟,存储器的读/写速率将降低,在测试的时候数据都是串行读入和读出的,测试时间显著增加,不太可能全速测试。
(5)用ASIC 功能测试的方法进行测试
对于小型存储器,ASIC供应商提供了简单的读/写操作用于 ASIC的功能操作,可以利用这些矢量对存储器进行测试。
目前最流行的就是BIST,比起其他方法,BIST的最大优势是可以自己完成所有的测试,并且有自动工具支持,可以进行全速测试。当然有利必有弊,BIST付出的代价是硬件开销和对存储器性能的永久损失,而对于故障的分析和诊断,BIST也有不足之处。
不过随着存储器在SoC中的地位的提升,BIST 的优势也越来越明显,他能够充分实现 March 算法。
BIST 基本概念
内建自测是当前广泛应用的可测性设计方法。它的基本思想是电路自己生成测试问量,而不是要求外部施加测试向量。它有独立的比较结构来决定所得到的测试结果是否正确,因此,内建自测必须附加额外的电路,包括向量生成器、BIST控制器和响应分析器。
其中,核心部分是 BIST 控制单元,作为外部电路与存储器之间的接口。为存储器的自测试提供控制信号,控制测试的结束与否,并且实现测试算法。通常用有限状态机来实现BIST 的控制单元。根据电路要求,可知控制电路需具备以下功能。
• 接收外部启动信号,启动存储器自测试。
• 在该信号的作用下,对自测试电路进行初始化,并根据测试算法,产生自测试电路。
• 确定何时结束测试,并控制送出测试情况。
对预测结果,设计人员关心的不仅仅是故障的存在与否,更重要的是故障的诊断和修复,因此 BIST电路循要具备故障定位和辅助修复的功能。一旦发现觖陷,就暂停测试,然后将此时的读地址、端口号、数据背景图形编号和测试算法控制单元的状态以串行方式送出片外,并且将状态机固定在确定状态,以便快速故障诊断,诊断完毕后再继续进行测试。
由 BIST 额外电路带来的测试引脚如下。
• BIST_MODE:测试模式选择信号,控制电路进入 BIST状态。
• BIST_ RESET:初始化 BIST控制单元。
• BIST_CLK: BIST测试时钟。
• BISTDONE:输出信号,标志自测结束。
• BIST_FAIL:输出信号,标志自测失败,说明存储器有制造故障。
算法:
棋盘式图形算法:在这种测试方案中,将存储单元分为两组,相邻的单元属于不同的两组,然后向不同的组写入0和1交替组成的测试矢量。停止后对整个存储阵列进行读取。
此算法可以覆盖单元固定故障、相邻单元间的图形敏感故障。
march (行进/遍历) :March 算法是自前最流行的测试算法,在March测试方案中,首先对单个单元进行一系列的操作,然后才进行下个单元的操作。操作序列称为 March 单元(March Element)。一个March 单元可能包括一组简单的序列,也可能包括一组复杂的、带有多个读/写操作的操作序列。举例:算法的复杂度为O(4n),表示对每个存储单元进行了4次读写操作。算法复杂度的直接反映是测试时间的长短。
不同的march 算法,覆盖不同的故障类型。故障覆盖率的提高,牺牲了算法复杂度和测试时间。所以在实际应用时,要根据实际存储器选择测试算法。
工具集成:
BIST电路作为逻辑电路的一部分通常在 RTL级插入,并且需要与其他逻辑一起进行综合。数据、地址和一些控制信号在进入存储器之前需要经过多路选择器。保证了在正常工作模式下,存储器输入信号来自于其他电路。在自测模式下,输人信号由 BIST控制单元产生。
目前的EDA 工具都可在RTL级自动生成 BIST 电路并集成到设计中。
(3)Boundary Scan(边界扫描)
主要功能:PCB 上芯片间互连测试。
原理:
边界扫描的原理是在核心逻辑电路的输人和输出端口都增加一个寄存器,通过将这些 I/O上的寄存器连接起来,可以将数据串行输入被测单元,并且从相应端口串行读出。在这个过程中,它可以实现3方面的测试。
首先是芯片级测试,即可以对芯片本身进行测试和调试,使芯片工作在正常功能模式,通过输入端输入测试矢量,并通过观察串行移位的输出响应进行调试。
其次是板级测试,检测集成电路和 PCB之间的互连。实现原理是将一块PCB上所有具有边界扫描的IC中的扫描寄存器连接在一起,通过一定的测试矢量,可以发现元件是否丢失或者摆放错误,同时可以检测引脚的开路和短路故障。
最后是系统级测试,在板级集成后,可以通过对板上CPLD 或者 Flash 的在线编程,实现系统级测试。
其中,最要的功能是进行板级芯片的互连测试,如图10-31所示。
IEEE 1149.1 标准
由于边界扫描方案的合理性,在1990年被 IEEE 采纳成为一个标准,即 IEEE 1149.1。 该标准规定了边界扫描的测试端口、测试结构和操作指令。
IEEE 1149.1结构如图10-32所示,其主要包括 TAP控制器 和 寄存器组。其中,TAP 控制器如图 10-33 所示;寄存器组包括边界扫描寄存器、旁路寄存器、标志寄存器和指令寄存器。主要端口为 TCK、TMS、TDI、TDO,另外还有一个用户可选择的端口 TRST。
2. 端口定义如下
(1) TCK: Test Clock
边界扫描设计中的测试时钟是独立的,因此与原来IC或PCB上的时钟是无关的,也可以复用原来的时钟。
(2) TMS: Test Mode Select
由于在测试过程中,需要有数据捕获、移位、暂停等不同的工作模式,因此需要有一个信号来控制。在 IEEE 1149.1中,仅有这样一根控制信号,通过特定的输入序列来确定工作模式,采用有限状态机来实现。该信号在测试时钟 TCK 的上升沿采样。
(3) TDI: Test Data In
以串行方式输入的数据 TDI 有两种。一种是指令信号,送入指令寄存器;另一种是测试数据(激励、输出响应和其他信号),它输人到相应的边界扫描寄存器中去。
(4) TDO: Test Data Out
以串行输出的数据也有两种,一种是从指令寄存器移位出来的指令,另一种是从边界扫描寄存器移位出来的数据。
除此之外,还有一个可选端口 TRST,为测试系统复位信号,作用是强制复位。
3. TAP 控制器
TAP控制器的作用是将串行输入的 TMS信号进行译码,使边界扫描系统进入相应的测试模式,并且产生该模式下所需的各个控制信号。IEEE 1149.1的 TAP 控制器由有限状态机来实现,图10-34所示为状态转移图。DR表示数据寄存器,IR 表示指令寄存器。
4. 寄存器组
指令寄存器: 由移位寄存器和锁存器组成。TDI 串行输入指令,送入锁存器。
旁路寄存器:有多个串接起来的IC,如果只需测试其中几个,则可以用bypass 指令,旁路无须测试的IC。
标志寄存器:固化有该器件标志的32位寄存器,内容有该器件的版本号、器件型号、制造厂商等。目的是在pcb 产线上,可以检查IC的型号、版本。方便替换和维修。
边界扫描寄存器:最重要的结构单元,完成测试数据的输入、输出锁存、移位过程中必要的数据操作。它工作在多种模式,首先满足扫描链上的串行移位模式,其次是正常模式下电路的数据捕获和更新。
利用边界扫描寄存器可提供如下的主要测试功能:
•对被测 IC 的外部电路进行测试,如可测IC之间的互连,此时可以使用外部测试指令 EXTEST
• 使用 INTEST 进行被测电路的内部自测;
• 对输入、输出信号进行采样和更新,此时可以完全不影响核心逻辑电路的工作状态。
5. 相关指令
JTAG规定了3个强制指令:EXTEST、BYPASS、SAMPLE/PRELOAD。
(1) EXTEST:外测试指令
外测试指令主要用于测试iC和 PCB之间的连线或边界扫描设计以外的逻辑电路。执行该指令的主要操作为,将测试矢量串行移位至边界扫描寄存器,以激励被测的连线或外部逻辑电路,同时该寄存器又捕获响应数据,并申行移出测试结果,以便检查。
(2) BYPASS:旁路指令
这是一条由1组成的全1指令串,它的功能是选择该IC中的旁路寄存器 BR,决定该IC是否被测试。
(3) SAMPLE/PRELOAD: 采样/预装指令
采样指令用于不影响核心逻辑正常工作的条件下,将边界扫描设计中的并行输入端的信号捕获至边界扫描寄存器中,在测试时,通过采样指令捕获所测试逻辑电路的响应。
预装指令功能与采样基本相同,只是此时装入边界寄存器的数据是编程者已知的。
6. 板级测试策略
策略分以下3步。
① 根据 IEEE 1149.1标准建立边界扫描的测试结构。
② 利用边界扫描测试结构,对被测部分之间的连接进行矢量输入和响应分析。这是板级测试的主要环节,也是边界扫描结构的主要应用。可以用来检测由于电气、机械和温度导致的板级集成故障。
③ 对单个核心逻辑进行测试,可以初始化该逻辑并且利用其本身的测试结构。
DEA 工具:Synopsys 的BSD Complier,
DFT 技术在 SOC 中的应用
模块级的 DFT技术
以上主要介绍了目前常用的DFT方法。对于不同的电路,应该采取合适的方法进行可测性设计。
1. 微处理器
微处理器经常采用某种形式的定制测试结构,它是全扫描或部分扫描测试及并行向量测试的组合。这就意味着芯片级测试控制器必须同时为微处理器提供扫描链控制器 和 某种边界扫描测试控制,以施加并行测试向量。
2. 存储器
对于存储单元,推荐使用某种形式的BIST,它提供了一种快速、易于控制的测试方法。
然而,某些 BIST测试方案对于解决测试中的数据保持 ?是不充分的,合理的直接存储器存取策略可以用来检测和解决数据保持问题。
3. 其他数字模块
对于其他大多数模块,最好的选择是全扫描技术。全扫描设计以较小的设计努力,提供较高的故障覆盖率。芯片级测试控制器需要考虑允许多少条扫描链同时工作,以及如何将他们连接到芯片级I/O端口等问题。
4.模拟模块
模拟电路的可测性设计可以分为两类:可访问设计法和可重构设计法。其中,前者是在被测电路中插入测试总线或者测试点,以提高内部节点的可控制性和可观察性,这就构成了最早期用于混合信号的测试方法;后者依靠被测电路的重构来提高可测试性。这些方法对电路性能的影响通常是较高的,而且处于研究阶段,很少用于大量产品。
目前采用的比较多的是模拟 BIST 的方法,大多数的BIST方法都是在混合信号环境下测试模拟电路的。例如,通过数字—模拟一数字通路,而不像传统的外部测试通过模拟一数字一模拟路径。
SOC中的DFT应用
目前,基于IP复用的SoC是IC设计的发展趋势。对于SoC的测试目标是利用最少的测试矢量来检测SoC中所有IP 可能出现的故障。SoC一般包含处理器 IP、存储器 IP、各类接口 IP及ADC / DAC 等模拟 IP,因此需要不同的测试矢量对这些 P进行检测,同时不同的 IP 的测试要求也不同。对于数字电路来说,需要考虑固定型?、桥接故障?和静态电流造成的短路故障等。对于模拟电路来说,则需要考虑噪声及测试精度等影响。而对于存储器来说,则需要考虑其本身特有的一些故障类型。
系统级DFT:各个模块的组合构成了 SoC,模块级DFT 的组合自然也就是系统级 DFT 的雏形,再加上必要的控制结构就可以形成完整的系统级 DFT结构了。
SOC开发者对于不同的IP模块采用最适合其类型的DFT方法;但是使用多种DFT方法就使测试的复杂性从生产测试转移到了测试开发。
与模块级的 DFT不同,系统级的 DFT困难主要来自于:
• DFT 的不同测试策略在不同模块间的合理应用;
• SoC 规模庞大,测试结构和测试控制较为复杂;
•系统的可测试资源,如外围引脚等限制了可测性设计;
•不同的测试策略和测试结构的划分将会影响整个电路的可测性。
根据SoC的设计流程和系统级 DFT 的特点,可以采用以下的可测性设计流程:
•根据系统规范,确定系统的 DFT 特征;
•根据电路特征和芯片测试资源,确定不同模块或核的测试策略;
•从顶层模块实现不同测试模式的控制;
•综合考虑各种测试模式的需要,对电路进行必要的划分,完成测试结构的设计(包括测试时钟、使能和复位信号);
•考虑每个模块,甚至每个信号的可测性,加入额外电路,提高故障覆盖率;
• 对不同模块进行可测性设计,对某些核进行单独测试;
•根据故障覆盖率的情况,进行必要的调试修改。
总结:
本章主要从芯片设计的角度介绍了几种数字电路中常用的可测性设计方法,主要有用于存储器测试的 BIST、用于组合逻辑测试的扫描和用于板级连接测试的边界扫描。近年来,DFT技术发展很快,主要表现在以下方面:
① 在存储器内建自测方面,整体结构和算法已经基本成熟,目前主要是考虑低功耗的BIST技术和如何将内建自测技术融入其他模块的测试中,如整个 SoC的 BIST;
② 在扫描测试方面,工具已经能够自动完成扫描链的插人,现在技术人员要做的是根据已有的电路设计适当的测试结构,在满足测试要求的同时,尽量减少测试时间和功耗,同时还需要对时序电路的可测性、测试向量的压缩、at-speed测试、故障模拟等方面进一步研究;
③ 在边界扫描方面,由于其可以显著减少测试产生所需的时间,而被设计者广泛接受,当前已经能够使边界扫描的覆盖率达到100%,但是目前还没有对采用 IEEE1149.1 (边界扫描测试)标准获得的益处进行综合分析的成本模型?,还需要综合考虑 BIST 和 SCAN 带来的影响。
除了技术方法的不断改进,一些支持 DFT的EDA工具也在不断的更新换代。例如,Synopsys公司的DFT Compiler 和 TetraMAX ATPG工具配合使用,可以一次性完成扫描综合和测试向量的生成。多年来,Mentor Graphics公司在DFT 领域一直扮演重要的角色,该公司提供用于可测试性分析的工具套件,支持多种故障模型,以帮助设计师。
DFT 的优势:
- 可以利用EDA工具进行测试矢量的生成
- 便于故障的诊断和调试
- 可以提高芯片的成品率并衡量其品质
- 减少测试成本
不足:
- 增大了芯片的面积、提高了出错概率
- 增加设计的复杂程度
- 需要额外的引脚,增加了硅片面积
- 影响了芯片的功耗、速度和其他性能