DFT笔记34

张开发
2026/4/19 3:02:50 15 分钟阅读

分享文章

DFT笔记34
4.7.2.4 CASE Studies案例研究这一节按照GA-based的发展情况介绍了一系列文献拓展阅读。4.8 ADVANCED SIMULATION-BASED ATPG4.8.1 Seeding the GA with Helpful Sequences想要看懂这一节先得理解一个词seeding上面讲的遗传算法对于测试生成是一种很有效的方法但是对于一些复杂故障GA-based methods又不如deterministic ATPGs对于这样的故障可以在初始的population中加入一些特定的individuals来引导GA这就叫做seeding。举个例子一个故障在一个时序逻辑电路里面已经被激发并且传播到了一个或者多个flip-flops上现在GA想要把fault-effect从这些flip-flops传到primary output上如果这时候已经提前知道了一些序列可以将fault-effects从a similar set of flip-flops传播出去那么这些序列就可以被加到initial population这样可以极大地帮助到GA。有两种test generators就采用了这种seeding的方法DIGATE和STRATEGATE。最开始是没有上面所说的序列的这两种generators会在ATPG进行之前做一步预处理就是生成一些序列在其中选符合要求的。本质上找这种序列就等同于区分电路的两种状态说人话就是找一个序列可以使电路输出不同说明这种序列就可以将fault-effect传到primary output上。下图就是用四个向量组成的序列1001, 0101, 1011, 0111区分一对电路状态11010, 11000。ATPG的主要任务是测试生成而不是找distinguishing sequences所以在找这些序列的过程上不宜花费太多。在DIGATE和STRATEGATE这两种测试生成方法中在GA的协助下有两种generate distinguishing sequences的方法statically静态的dynamically动态的DIGATE这种方法相比于之前讲的GA-based ATPGs能得到很高的fault coverages。尽管DIGATE的故障覆盖率很高但是对于一些difficult-to-activate faults还是很难测到这些故障的特点是他们没有被激活到任何flip-flopseeding of distinguishing sequences也是没用的。这些故障需要specific states和justification sequences去让故障自己能够被激活并且传递到一个或者多个flip-flops。但是DIGATE的过程中是做不了这个的所以会让故障覆盖率损失到最多30%的程度。STRATEGATE test generator在DIGATE的基础上解决了这个问题但是存储一个大型时序逻辑电路的所有电路状态是不可能的因为有n个flip-flops的时序逻辑电路就有2^n个状态STRATEGATE用线性列表ATPG产生的测试向量来引导state justification因此电路状态的存储就仅仅基于测试向量的数量而不是电路中flip-flops的数量少了很多简化很多。在实现state justification的过程中待挑选的states被存储在一个表中对应的能让电路达到这个state的向量也一起被列出来如下图这个过程得到的一些向量可能不是直接指向target state但是这些向量中有些片段藏着重要的信息比如说下图的例子state 1X0X10需要被justify现在只有两个序列T1和T2但是T1仅没能justify第三个flip-flop值T2仅没能justify最后一个flip-flop值就像上面所说的他们俩虽然不是完整的解决方案但是缺各自包含着重要的信息他俩可以作为GA的seeds推出目标序列T3尽管STRATEGATE不能justify每一个目标state但是它大大弥补了那30%的故障覆盖率gap相比于其他方法普遍具有更高的故障覆盖率性能优秀。4.8.2 Logic-Simulation-Based ATPG目前讨论的全是针对于目标故障做fault simulation收集信息得到test sequences但是fault simulation的计算量比logic simulation大很多所以有人提出用logic simulation实现ATPG。Logic-simulation-based test generators的测试原理其实就是根据fault-free电路的某些特性得到测试向量。基于逻辑仿真的方法有CRIS将电路活动最大化以便更好地检测故障LOCSTEP对于时序逻辑电路就需要最大化电路状态数量这样才能尽可能检测更多故障包括难以检测的故障但是在大型的时序逻辑电路中要得到这么多状态可能需要非常多的测试向量这样反而会让故障覆盖率下降还有一些其他的方法就是用到测试压缩这是一块非常重要的内容后面会单独讲电路状态划分在logic-simulation-based test generators是比较重要的划分的示例如下图上图假设一个电路有8个flip-flops全局的状态S被划分成两部分S1和S2每一部分用十六进制表示例如“0101 1010”被表示为 (5, A)。全局状态中的(0, 0), (1, 1), (1, 2), (2, 3)可以被划分为S1和S2分别表示为{012}和{0123}。基于划分后的状态信息会发生两种情景有两个向量序列可以使现在的电路状态变化为两个新的状态 (2, 1) 和 (3, 1)现在要判断哪个状态更好用哪个向量序列用电路划分后的角度来看 (3, 1) 是更好的因为3这个状态在S1中没有它是一个新的状态意味着可以检测出更多故障还是一样的情景两个序列可以使电路状态变化为两种不同的比如(3,0) 和 (2,4)他们都是新的电路状态但是用哪个要看哪个权重更高也就是哪个状态对电路的影响更大除了上面这种还有一些别的划分电路的方式control path flip-flops 和 datapath flip-flops分开按照controllability values分开按照不同的output cone分开reset signal masking避免重复访问reset状态因为在DFT中很多时候用到复位或者部分复位的向量这对搜索新的电路状态是不利的所以要避免。下图做个例子圈里的是容易达到的电路状态圈外是不容易达到的电路状态从圈里到圈外的边界状态有3个A/B/C例如要从B那拓展就要避免B又走到A这种已经达到的电路状态而向外走所以通过控制primary inputs使B状态不往A走。用到reset signal masking和state partitioning的算法如下这种算法在大型的时序逻辑电路里面能得到很高的故障覆盖率和非常少的计算量代价。对于某些电路而言用上面这样的基于逻辑仿真的ATPG能得到比其他deterministic和simulation-based方法更高的故障覆盖率。

更多文章