基于扫描的集成电路故障诊断技术
扫描二维码
随时随地手机看文章
O 引 言
通常意义的的集成电路测试,只是施加测试以判断被测电路是否存在故障,并不对故障进行定位、确定故障类型、明确故障发生的根本原因。随着集成电路技术的飞速发展,对集成电路测试提出了更高的要求,必须进一步分析测试的结果,确定故障的性质,即所谓的故障诊断(Fault Diagnosis),以便对集成电路设计或工艺环节进行改进。
集成电路故障诊断分为故障检测(测试)和故障定位,目的是找出引起集成电路失效(Failure)或者性能问题的物理缺陷(Defect),从而为提高集成电路芯片的成品率或改善性能提供参考。既然诊断是一个对存在于给定电路的制造复制板中的故障进行定位的过程,可以在测试结果的基础上,分析故障产生的原因和位置,更加有利于提高测试的效率。
1 常见的故障诊断方法
目前的集成电路故障诊断技术都是基于电压的集成电路测试(故障检测)方法,即在电路的测试端输入测试向量,然后用电路的输出结果与设计的期望值做比较以判断电路是否有故障。例如,直接测量的方法,基于数学模型的方法,故障字典法,故障树分析法等。
直接测量的方法是人工或者工具直接观察测量被诊断对象有关的输出量,如果超出正常变化范围,则认为对象已经或将要发生故障。这种方法虽然简单,但容易出现故障的误判和漏判。
基于数学模型的方法是在故障模型的基础上,通过电路状态并参考适当模型进行诊断,或者根据过程参数的变化特性参考适当模型进行诊断。这种方法需要模型的支持,对缺乏诊断经验(规则)的故障能起到预见作用。该方法的缺点是模型的建立比较困难,如果模型精确复杂,则诊断系统计算量庞大。
故障字典法首先提取电路在各种故障状态下的电路特征,以构建一个字典。该字典中包含有故障状态和电路特征的一一对应关系。在诊断时,根据电路表现出的特征,就可查出此时对应的故障,如同查阅字典一样。由于故障字典的建立需要精确数据以及字典的容量有限,该方法有一定的局限性。
故障树分析法则像查找树一样,把许多电路的故障诊断归纳为几个大的顶级故障事件,然后针对每个顶级故障事件搜索故障位置。这种诊断方法类似于人类的思维方式,易于被接受和理解。
以上的基于电压的测试方法比较成熟,但是随着集成电路技术的发展,其不足之处也越来越明显。针对基于电压的故障诊断方法的不足,出现了基于电流的诊断方法。基于电流信息的集成电路诊断可分为静态电流(IDDQ)诊断和动态电流(IDDT)诊断。IDDQ诊断方法检测CMOS电路静态时的漏电流以进行诊断。ID—DQ诊断方法测试成本低,可以以较小的IDDQ测试集获得较大的故障覆盖率,能够检测逻辑冗余故障,简化桥接故障测试,不需要考虑逻辑扇出点。 IDDT诊断方法是通过检查电路在其内部状态发生翻转时的动态电流来发现其故障的方法。IDDT作为基于电压的诊断和基于电流的IDDQ诊断的补充,成为集成电路诊断的另一方法。IDDT测试的速度非常快,而且可以对电路中的开路故障、弱晶体管故障进行检测,而这正是IDDQ诊断方法的不足。
2 基于扫描的集成电路故障诊断方法
扫描测试或者称“扫描链插入”是集成电路最常见的可测试性设计技术,可使测试数据从系统一端经由移位寄存器等组成的数据通路(扫描链)串行移入或移出,并在数据输出端对数据进行分析,以此提高电路内部节点的可控性和可观察性,达到测试芯片内部的目的。
基于扫描的故障检测(测试)只需完成确定是否存在故障的任务,但基于扫描的故障诊断需要定位故障,因此存在一个问题:一旦确定一个扫描错误,那么一系列节点都要成为测试的对象,这样就要花大量的时间通过电路图和物理版图,比较一系列节点,以隔离那些有可能有故障和缺陷的位置。所以,这种分析方法必须能对可能出现的故障类型以及其物理缺陷做出有经验的判断和猜测。另外,扫描测试是基于stuck at类型故障的,所以很难确定故障是开路型还是桥接型故障。
3 一种改进的扫描诊断技术
针对传统的基于扫描的故障诊断存在的问题,Mentor开发出了YieldAssist诊断工具。该工具把故障嫌疑(suspect)分为stuck—at,open/dom桥,B一0R—A,B—AND—A,3一WAY桥,根据现有信息不能确定的,EQ#等类型。除了采用基于定位的方法去验证故障嫌疑,确定故障嫌疑的类型,该工具还通过计算仿真值和测试机上观察值的比分值,来表明故障嫌疑与在测试机上观察的结果的相似度(相似度的分值是在1~100分之间,分值越高二者越接近)。因为即使是在同一个逻辑位置,不同的故障模型也有不同的仿真值。
YieldAssist的故障诊断流程如下:
(1)仿真单个门有故障的管脚,看看故障向量是否把在测试机观测到的错误行为传播到所有观测点,如果YieldAssist找到了关联,故障向量就可以在这个点被解释;
(2)找到能包含所有错误向量的最小故障集;
(3)把所有的数据归类到几个独立的“症状”区,每个症状中列出可以解释该故障向量的嫌疑类型。Yiel—dAssist将嫌疑类型进行分级,给出每个症状中每个嫌疑的分值,这样对故障嫌疑进行分级。分值表明了故障嫌疑与在测试机上观察的结果的相似度。
4 一种基于扫描的全速诊断技术
全速测试是当今电子设计的要求,芯片时钟速度的不断提升和几何面积的不断减小,不可避免地导致芯片与时钟速度相关缺陷的增加。目前主要的ATPG工具都支持基于扫描的全速测试。最常见的针对制造缺陷和处理过程不稳定的检查的全速测试,包括了针对跳变延时故障和路径延时故障模型的测试向量生成。但是,在出现故障现象的全速测试向量中挑拣出故障路径是很消耗时间的,所以业界越来越期待运用自动诊断技术来确定故障路径并找出问题的根本原因。
通常情况下,运行一段给定电压给定温度下的测试向量,就能找出最大的通过速度Tmax。在早期阶段,Tmax小于指定电路速度Fmax的现象是很普遍的。当Tmax远远小于Fmax时,需要找出是哪条路径发生故障以及故障的原因。假设测试向量在芯片上以tmax运行,此处 Tmax<tmaxFmax,根据Tmax的定义可知,在tmax的时钟下,将会有一个或者多个故障路径。
根据上述理论,为了确定在tmax下的故障路径,只需载入所有的测试向量,扫描锁存器观察故障值,就可以得到一个完整的路径集合。因为这些路径的有效运行时钟比设定的速度低,所以设计者可以观察这些路径是否是功能性(即是否完成某逻辑功能):如果不是功能性的路径,可以修改测试向量使得该路径就不被测试;也可以更新时序例外通路(Timing Exception Paths),引导ATPG来避免敏化这条通路。如果是功能性的路径,那么在设计或者制造环节进行修正,直至测试向量通过全速测试。Tmax越接近 Fmax,测试的覆盖率越高。基于扫描的全速诊断大致可以分为两部分:由ATE上观察到故障的锁存器找出故障路径;自动化全速诊断。
由ATE上观察到故障的锁存器中找出故障路径,需要注意以下两点:当时钟速度从Tmax提升到tmax,多时钟故障通路有可能被激活,此时的搜索就不能只假定在一个单故障路径;全速测试的故障有可能是由毛刺引起的,并不是故障路径的每个节点都有跳变,所以搜索不能局限在有跳变的范围内。
自动化全速诊断可以分为3步:
(1)对每一个出现故障现象的测试向量(故障向量),在观测到故障的锁存器中找到所有故障值的所有单跳变错误。
(2)从所有故障向量中得到候选项之后,找到一个覆盖所有错误向量的最小跳变错误的最小集合。
(3)为了观察故障路径,对于已经确定的每个跳变错误,图形化展示所有能被故障向量解释的故障路径。这些通路用循迹跟踪法来找到,从错误点反向至在错误点产生跳变的锁存器,然后再前向至结束点。
5 结 语
介绍了故障诊断的常见方法,重点介绍了基于扫描的故障诊断方法。随着技术的不断发展,对芯片故障诊断的要求也越来越高,基于扫描的集成电路故障诊断算法将是研究和应用的热点。