Board logo

标题: 利用DFT规则提高ASIC错误检测范围 [打印本页]

作者: yuyang911220    时间: 2016-12-24 15:26     标题: 利用DFT规则提高ASIC错误检测范围

本文是作者关于错误检测范围分析和ASIC设计全扫描测试模拟的第二篇文章(第一篇《在设计中遵循DFT规则提高错误检测覆盖率》见本刊今年8月第二期)。在前一篇里作者讨论了一些实用的方法,系统地分析了未包含在全扫描检测范围内的恒定错误,并提供设计实例,文中主要讲了一些重要的DFT规则,只要遵循这些规则就能大大提高错误检测范围。本文则详细介绍如何针对错误检测范围(而不是逻辑验证)用错误模拟的方法来模拟ASIC非扫描向量,其中的原理同样可以应用在FPGA等其它IC设计中。        ASIC 供应商们广泛应用扫描测试来检测一般称为恒定错误的制造缺陷,错误检测范围分析的目的是精确计算所有可检测错误百分比,并寻找方法将不在检测范围内的错误加入到检测范围内,以使最终错误检测范围百分比达到95%以上,这也是ASIC供应商所使用的标准,用以证明电路本身制造是正确的。
        从DFT 规则1(参见《电子工程专辑》2002年8月第二期第46页《在设计中遵循DFT规则,提高错误检测覆盖率》一文)可知,我们应该进行边界扫描,或者在嵌入式RAM周围增加测试点进行全扫描测试,即需要对设计作一些更改。但假如由于进度、性能或面积等原因不能这样做该怎么办呢?如何将非扫描逻辑模块加入到测试范围之内呢?因为大多数不可测错误很可能就存在于这些模块中。在这种情况下,一般是进行错误模拟,使用一个支持恒定错误模型的特殊模拟器(称为错误模拟器),针对错误检测范围模拟非ATPG(自动测试模式)测试向量。非ATPG向量可以是那些最初开发用于功能验证的向量,也可以是手工开发用来针对己知错误的向量(图1)。
        错误模拟不能从零开始,它从ATPG工具提供的错误检测范围结果中读出数据,并加上非ATPG测试向量提供的其它错误检测结果。所以让错误模拟器能读入 ATPG工具的输出文件非常重要,确保做到这点的方法之一是使用同一供应商提供的两种工具,如果这两种工具来自不同的供应商,在购买以前就要确认两种工具之间可以交流。另外一个关键之处是有些错误模拟器不能直接使用测试基准程序(如在Verilog中使用的程序),且需要特殊格式的输入激励和输出响应文件,如由1和0组成的二进制格式。
        因此需要有一个工具来进行这种转换,工具可以由ASIC供应商提供,大多数情况下必须使用C、C++或者Perl5之类的语言进行开发,记住要分配足够的资源用于该项重要任务。
        图1中的功能测试向量由几个不同类型的测试向量组成,错误模拟的第一步是决定哪一类向量能提供最大错误检测范围,从而只模拟这些向量,其中包括:

·逻辑测试向量 由ASIC设计人员或DVT工程师或共同开发生成,用于对设计进行功能验证。
·BSR测试向量 由ASIC供应商使用BSDL文件创建生成,如果每一个初级I/O引脚都处于边界扫描链中,那么这些向量还包括参数测试向量。
·参数测试向量 由ASIC设计人员或DVT工程师或共同开发生成,用于不是每个初级I/O引脚都处于边界扫描链的设计,这种向量使每个初级I/O引脚在状态1、0和Z态间转换。
·TAP控制器测试向量 由ASIC设计人员或DVT工程师或两者共同开发生成,用于通过TAP逻辑中每个要求的状态和扫描指令,并测试边界扫描逻辑。TAP逻辑有些错误可以被扫描测试本身所覆盖,如那些在时钟网表中的错误,但其它的必须用这些向量进行测试。
        经验显示,逻辑测试向量对于错误检测范围不是很有效,因为它们不是专门针对错误的,但偶尔它们也会将一些ATPG测试范围内部或外部的错误传送至初级输出处。假如把它们放在芯片测试仪上运行,就可以使用错误模拟找出这些向量是否恰巧检测出一些检测范围以外的错误,如果能够的话就不必再手工编写测试向量将那些错误归到检测范围之内,但这需要对设计有透彻的理解且要做很多工作。
        BSR向量很难用于错误模拟,原因是ASIC供应商的边界扫描工具只能读取BSDL文件,并只根据初级I/O引脚状态生成BSR向量,它不知道ASIC内部任何逻辑。图2是两个BSR组成的一个边界扫描链,用于三态初级输出引脚PO。
        为了在非ATPG测试向量上进行错误模拟,应确保模拟器会产生带有这些向量的预期输出响应,并且不能有任何不匹配。使用BSR时我们可以从BSR向量中的 TMS信号值算出边界扫描链转移结束时间,对该时间而不是转移中的输出响应进行比较。错误模拟器也可以这样做,但不是自动的(监视TMS引脚数值)。此外,生成BSR向量不需要有关ASIC内部逻辑的知识(我们只对其中的错误分类感兴趣),所以要大幅增加错误检测范围不太可能。鉴于这些理由,通常不使用 BSR向量。
        错误模拟的第二步是了解ATPG和错误模拟两者所得到的错误之间的区别,因为后者必须从前者的错误检测范围结果开始,之所以有区别主要源于下面一些原因:
·RAM BIST模块在ATPG中作为黑盒模型而在错误模拟中却作为真实逻辑模型,所以错误模拟能看到ATPG看不到的所有BIST模块错误,这没什么关系,只需告诉错误模拟器不要针对这些模块中的错误即可。
· 错误模拟中使用的网表可能与ATPG中使用的网表不同。例如当ATPG运行时,因为它在后端流程中处于早期阶段,所以还没对设计进行适当优化。设计布局布线完成后,将产生门和网络延迟,根据这些值,有些门可能要进行充实,甚至需要作少许设计更改,这时既可以在修改过的网表上再运行ATPG,也可以用错误模拟覆盖这些增加的错误。注意要将类似这样的不匹配报告给ASIC设计人员,确保引起足够重视。
·ATPG测试中扫描触发器是多路复用扫描型,其clk、d和si引脚是自动测试的(qn引脚不是);而在错误模拟中,这些引脚变成逻辑引脚,是错误模拟器的检测对象,必须告诉模拟器不要对这些引脚进行检测。
·如前所述,如果门级网表使用Verilog赋值语句,ATPG将把它转换为数据库中的伪缓冲器单元,而这些单元不在错误模拟器数据库中。
· 有时候仅仅为了错误模拟器必须修改设计网表,如在使用延迟单元时。图3(a)中的del_1和del_2就是这种单元,结果使clk和 we_ram_unbuf信号间的电路及其产生的波形不能在错误模拟器中直接进行模拟,这是因为we_ram_unbuf的正确波形依赖于通过两个延迟单元的延迟信号,但延迟信息是不能模拟的。在这方面不是只有错误模拟才这样,ASIC仿真和测试系统也有同样的局限。
        在错误模拟中我们所能做的就是旁路掉图3(a)中clk和we_ram_unbuf信号间的电路,方法是从一个称为we_ram_unbuf_fs(_fs表示错误模拟)的附加初级输入引脚处将we_ram_unbuf波形直接送至we_logic的a3引脚,如图4。如果设计里有多个RAM,可将引脚 we_ram_unbuf_fs送至所有这些RAM。注意这个引脚和多路器只是为了错误模拟而加上的,并不用在芯片制造中。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0