基于扫描链结构的测试向量自动生成方法

文档序号:35154 发布日期:2021-09-24 浏览:52次 >En<

阅读说明:本技术 基于扫描链结构的测试向量自动生成方法 (Test vector automatic generation method based on scanning chain structure ) 是由 钱静洁 于 2021-07-06 设计创作,主要内容包括:本发明公开了基于扫描链结构的测试向量自动生成方法,在读入数字芯片的网表并将其转换成包括gate table和net table的数据库,然后加入相应的配置使数字芯片处于测试模式。分析该数据库格式的网表,得到完整的故障表,选取故障表中的一个故障,并推算其测试向量,对该测试向量进行压缩处理,以判断是否所有的gate电路都已经处理完毕。本发明通过预先在设计中插入的扫描链Scan Chain实现了可以为每一款芯片量身定制特定的测试向量的目的,而且可以快速且全自动地产生测试向量,从而有效提升了芯片可测试性设计过程中数字逻辑的覆盖率。(The invention discloses a method for automatically generating a test vector based on a scan chain structure, which comprises the steps of reading a netlist of a digital chip, converting the netlist into a database comprising a gate table and a net table, and adding corresponding configuration to enable the digital chip to be in a test mode. Analyzing the netlist of the database format to obtain a complete fault table, selecting a fault in the fault table, calculating a test vector of the fault table, and compressing the test vector to judge whether all gate circuits are processed. The invention realizes the purpose of customizing specific test vectors for each chip by the Scan Chain Scan Chain inserted in the design in advance, and can quickly and fully automatically generate the test vectors, thereby effectively improving the coverage rate of digital logic in the chip testability design process.)

基于扫描链结构的测试向量自动生成方法

技术领域

本发明属于专门适用于制造或处理半导体过程中的测试或测量

技术领域

,具体涉及一种基于扫描链结构的测试向量的自动生成方法。

背景技术

半导体芯片的制造工序非常繁复,要经过掺杂、氧化、光刻、金属互联等百余道工序。目前,芯片制造的先进工艺已经进入3nm的量产阶段,需要在十万分之一头发丝直径的尺寸上制造芯片,因此工艺十分精密。如果在制造过程中由于粉尘颗粒、工艺偏差等因素引起产品制造缺陷,不能正常工作,不但会浪费人力、物力,甚至贻误重要商机、乃至引发严重后果。

可测试性设计(DFT,Design for Test)是一种集成电路领域的设计技术,它将一些特殊结构在设计阶段植入电路,以便在设计完成后进行电路测试。通过添加可测试性设计结构,例如扫描链(Scan Chain)等,测试工程师可以监控内部信号的传递过程并且及时发现各种故障,防止损坏的芯片流入下一个阶段而造成更大的损失。可测试性设计中的扫描链技术可以在短时间内检查芯片内部时序电路是否正常,是目前芯片测试领域的主流技术。

实践中,芯片设计者会为芯片制定特殊的用于测试功能完备性的测试向量。这种测试向量仅仅能测试此种芯片的功能是否完好,其实质是对芯片中用于功能相关的电路进行了测试,但对于芯片中其他部分的电路没有办法实现百分百的覆盖。如果要求芯片设计者编写出所有的测试向量,既费时,又不能保证可以测试芯片中所有的数字逻辑。

发明内容

本发明针对现有技术中存在的上述问题,提出一种通过预先在设计中插入的扫描链,为每一款芯片定制特定的测试向量,以测试芯片中的每一个门级电路,发现它们的缺陷,达到更高的覆盖率,并且其生成向量的过程完全是自动化的,不需要人工的参与,具有操作过程简单的明显优势。

为实现上述目的,本发明提出的解决方案为一种基于扫描链结构的测试向量自动生成方法,具体包含以下步骤:

S1:读入数字芯片的网表并将其转换成数据库,数据库包括gate table和nettable,其中gate table每一个节点保存了gate的名字和相应的输入输出管脚,net table每一个节点保存了其连接的gate,以及需要设定的value;

S2:加入相应的配置使数字芯片处于测试模式;

S3:分析步骤1生成的数据库格式的网表,得到完整的故障表;

S4:选取故障表中的一个故障,故障类型可以是stuckat-0或stuckat-1或transition-0或transition-1,客户可以根据需要检测的故障类型通过接口自行定义故障类型;

S5:针对步骤4中的所述故障推算其测试向量;

S6:对该测试向量进行压缩处理;

S7:判断是否所有的gate电路都已经处理完毕,若未完毕则返回步骤S4,若已完毕则退出程序;

S8:结束。

步骤2中,所述配置为当管脚SE为1时芯片处于shift状态,当管脚SE为0时芯片处于capture状态,管脚CLK用于输入shift或者capture状态时的时钟脉冲。

步骤3具体包括对于数据库化后的网表中的每一个net都会对应stuck at和transition两个故障类型,将这些故障整理到一张表格里,生成完整的故障表。

步骤4具体包括在步骤3中的故障表中选出一个故障,并且在这个故障表上放入1/0或0/1的D值。

为了使所述D值能被观测到需生成测试向量,具体过程为:首先对D所经过的gate需要设为相应的值,以保证D能被传导到输出端口或者扫描单元的D端,为了产生这个有效的D值,这个故障所在的gate也需被设为相应的值,持续这个过程直到驱动这个D值的输入端口或者扫描单元的Q端成为相应的值。

如果两个测试向量用到的输入端口和扫描单元不相同,则将其合并成一个新的测试向量。

作为优选,上述步骤S5中所述推导算法可以选用D算法、fan算法或者podem算法。

上述推导算法是基于以下两个原则:即该故障是否能被观测到,以及该故障是否能被激励出来。

步骤S6中为了满足某一个故障能被观测到以及能被激励出来,仅有部分输入管脚和扫描链单元需要配置固定的0或者1值,其余管脚和扫描链单元的值可以是任意值。

作为优选,上述部分输入管脚和扫描链单元的比例为0.5%-2%。

与现有技术相比,本发明具有以下的有益技术效果:

1,本发明通过预先在设计中插入的扫描链为每一款芯片量身定制特定的测试向量;

2,可以快速且全自动产生测试向量;

3,可以尽可能多地覆盖芯片中的数字逻辑,可达到90%-98%的覆盖率,从而保证量产的成品率。

附图说明

图1为本发明一个实施例的电路示意图;

图2为图1所示电路图对应的电路数据库;

图3为测试向量的配置图;

图4为网表上的fault设置示意图;

图5为一个向量的D算法推算过程示意图;

图6为两个向量合并的示意图;

图7为本发明测试向量自动生成方法的流程图。

具体实施方式

现结合附图对本发明作进一步详细的说明。

本发明用多叉树结构对数字网表实现数据化,数字网表是由多个门级电路的互联组合而成的。其中门级电路包括:AND,OR,NAND,NOR,BUF,INV,OR,XOR,MUX,DFF,Latch。门级电路构成gate,gate和gate之间的连接通过net实现。为了让计算机可以处理这些gate和net,本发明用多叉树结构保存这些gate和net的信息,以达到让计算机理解这些物理上连接的目的。例如,通过gate U1,可以知道其有两个驱动net,分别为输入pin脚A和net N4,而net N4由gate U7驱动,而U7则由net N3驱动。通过如此反复地寻找gate和net,此方法可以找出整个电路的连接关系,为后续的向量推算提供电路连接信息。

推导算法可以用D算法,fan算法或者podem算法,算法推导的基本原则有两个,原则一:这个故障是否能被观测到;原则二这个故障是否能被激励出来;余下的电路值都是为了满足这两点做的相应推导。

本发明测试向量自动生成方法的流程图如图7所示,包含以下步骤:

Step 1:将数字芯片网表读入成软件可以处理的数据库。此数据库记录了网表中的gate,net以及它们之间的连接关系;

Step 2:用于测试的芯片中有几个用于配置状态的pin脚。当pin SE是1时,此芯片属于shift状态。当pin SE为0时,此芯片属于capture状态。Pin CLK用于输入shift或者capture状态时的时钟脉冲。用此方法产生测试向量时,对数据化后的网表需要加上上述配置,以使其处于测试模式;

Step 3:对于数据库化后的网表,对于每一个net,都会对应两个fault。其中fault类型有stuck at和transition两种。将这些fault整理到一张table里,以便于后续的程序对其操作;

Step 4:本方法会在step 3中的fault table中选出一个fault,并且在这个fault上放入1/0(stuck-at 0fault)或这0/1(stuck-at1 fault)这个D value即插入故障(fault);需说明的是此处的故障类型也可以是transition-0或者transition-1,客户可以根据需要检测的故障类型自行定义,此方法会给客户提供一个接口用于定义故障类型。例如需要检测的是stuck-at 0故障,需要在这个故障点放入1/0这个D值并且将其插入在步骤1生成的数据库中对应的net上;

Step 5:为了使D value能被观测到,D所经过的gate需要设上相应的值,以保证D能被传导到输出pin脚或者扫描单元(SCAN CELL)的D端。同时为了产生这个有效的Dvalue,这个fault所在的gate也需被设上相应的值,持续这个过程直到驱动这个D value的输入pin脚或者扫描单元的Q端设上相应的值。这个过程,就是一个测试向量产生的过程;

Step 6:通常一条测试向量中仅有0.5%-2%的输入pin脚或者扫描单元的Q端需要被设为有效的值,其他的输入pin脚或者扫描单元的值可以是任意值。利用这个特性,如果两个测试向量用到的输入pin脚和扫描单元不相同,那么这两个向量可以被合并成为一条新的向量,这个新的向量可以同时检测到原来两个向量目标检测(target)的fault,这可以减少测试向量的数量,但是又可以保证测试的覆盖率不被影响;

Step 7:重复过程step4-6,直到所有的故障(fault)都已经处理完;

Step 8:退出程序。

为便于本领域的技术人员更好地理解本发明的构思,现提供以下的实施例。本实施例以图1所示的电路为分析对象,此电路包含9个门电路,即一个AND,一个OR,一个Inverter,五个Buffer和一个扫描单元scan cell。其中U1,U2,U3,U4,U5,U6,U7,U8,sdff0分别是这些gate的名字。N1,N2,N3,N4,N5,N6,N7,N8是用于连接这些gate管脚的net的名字。A,B,SI,SE,CLK是输入端口(input port)的名字。SO是输出端口(output port)的名字。

按照图7所示的测试向量自动生成方法的流程图,分别执行以下步骤:

Step 1:将上述电路的网表读入,将这些gate和连接关系存入图2所示的数据库中,此数据库有一个gate table,其中每一个节点保存的都是一个gate的名字和相应的输入输出管脚net;

Step 2:对于每一个测试向量,分为3个window,分别是shift in,capture和shiftout。当向量处于shift in和shift out window时,SE需要配置为1,当向量处于capturewindow时,SE配置为0。同时clock port CLK需要有pulse,如果测试的fault为stuck at时,CLK在capture window需要pulse 1次,如果测试的fault为transition时,需要至少在capture window pulse 2次。Shift in和shift out需要的clock的pulse的次数由scanchain的长度决定。在本实施案例中,因为scan chain长度为1,因此仅需pulse一次(如图3所示);

Step 3:仅以stuck at fault为例。此电路共有8个net,6个port,其中每个net上有2个fault,每个port上也有两个fault,以net N8为例。如图4所示,N8上有SA0和SA1两个fault;

Step 4:本实施例以N8上的SA0为例,如图5所示。需要被测试的是SA0,N8上的1/0代表需要测试到此fault,N8需要一个target的value是1,如果fault存在,它的实际显示的value是0;

Step 5:如图6所示,为了使N8的target value是1,需要将N4和A的值设为1。为了让N8上的1/0被观测到,N1需要设值为0,进而推断出B需要设为1。由于N4的value可以通过连接sdff0 Q pin的N3 shift in value控制,所以SI的值需要设为1。而最终的fault被检测到将体现在N2上。N2的值又可以通过shift out这个动作被输出到SO上被观测到。整个推测过程都是由软件自动设值的,用户只需要定义SE和clock的行为即可。

Step 6:其实真正的电路会有几十到几百个input port和output port,扫描链(Scan Chain)的长度也可以达到百万级。每一个fault仅仅需要0.5%-2%的input port和scan cell设上相应的值,为了减少向量(pattern)的数量,可以将这些pattern合并成一个有效的pattern,也就是原来可能需要10个pattern来测试10个target fault。但是由于这些pattern之间需要用的input port和scan cell是不一样的,这些pattern就可以被合并了,这个过程就是压缩。通常为了满足某一个故障能被观测到以及能被激励出来,仅有0.5%-2%的输入管脚和扫描链单元需要配置上固定的0或者1值,剩下大量的管脚和扫描链单元的值可以是任意值,这给向量的压缩提供了很好的理论条件;例如存在5个向量,彼此之间需要配置的输入管脚和扫描链单元互不相同,它们就可以被合并成一条向量,同时检测多个故障,向量数目的减少,可以使得测试成本降低。

Step 7:上述例子只是选择了N8的SA0作为目标fault,下一次可以选择N8的SA1fault,也可以选择其他net的SA0或SA1 fault。重复step 4-6的这些步骤。

Step 8:如果所有的fault都已经被处理完,即可退出程序。

本发明通过预先在设计中插入的扫描链Scan Chain实现了可以为每一款芯片量身定制特定的测试向量的目的,而且可以快速且全自动地产生测试向量,这样就可以尽可能多地覆盖芯片中的数字逻辑。具体的覆盖率是由芯片自身的结构决定的,理想情况下本发明可以达到98%的覆盖率,从而可以有效保证芯片量产的成品率。

需要说明的是,以上具体实施方式的描述并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种GPU缓存子系统互联的数字电路设计方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类