硅芯思见:ATPG和可测性设计

在集成电路的整个研制流程中,测试是其中一个重要的环节,而对于芯片的可测试性设计也是当前集成电路研制环节中的一个重要环节,而这个可测试性也是一个经常被理解错误的词。测试所要检查的不是设计的功能错误,其检查的是芯片在生产过程中引入的电路结构上的制造缺陷(physical defects),而可测性是能够测试检验出存在于设计产品中的各种制造缺陷的程度。针对可测性的设计称之为“可测性设计(DFT,Design For Test)”,其主要是为了达到故障检测的目的对设计电路增加一些额外的逻辑,用以增强设计的可测性,这种设计主要为基于故障模型的设计结构测试服务,用来检测芯片在生产过程中的故障。


有些朋友可能会问,为什么要基于故障模型进行建模,这主要是因为如果基于实际物理器件缺陷进行测试,由于存在于电路中的物理缺陷是多种多样的,并且这些缺陷对于电路功能的影响也是非常复杂和难于分析的,为此为了进一步提高电路的可测试性,需要构建特定的故障模型。故障建模通过特定的算法,通过对制造缺陷建立逻辑上的数学模型,研究故障对电路的影响,判断芯片内部是否存在制造缺陷。

再介绍叙述下面内容之前,这里需要注意两个基本概念:

缺陷:在集成电路制造过程中,在芯片上产生的物理异常,常见的CMOS工艺中的缺陷包括:

1>对地和对电源的短路;

2>由于颗粒等因素引起的连线断路;

3>金属穿通引起的晶体管源或漏极异常;

常见可能出现的缺陷如下图示意:

故障是由于缺陷所表示出的功能异常现象。

故障模型

在实际的项目中,常用的故障模型如下。

A.固定型故障(Single stuck-at fault

固定型故障是假设电路中某个信号永久地固定为逻辑1或者逻辑0,常被记为SA1stuck-at-1)和SA0stuck-at-0,在电路中的表现如下:

【示例】
为了检测D是否SA0,需要使得D1,并在F端输出观测(如果D处没有SA0故障,那么F的输出应该为1,反之则为0),因此测试向量可以为:A=1, B=1, C=0

B.开路故障(Break fault

泛指路径或者元件开路断路;

C.桥接故障(Bridging fault

常指节点间电路的短路故障,通常分为3类:逻辑电路与逻辑电路之间的桥接故障;节点间的无反馈桥接故障;节点间的反馈桥接故障,任何导通的桥接都会导致静态电流上升一个数量级以上。

D.晶体管开路故障(Transistor stuck-open fault

E.晶体管短路故障(Transistor stuck-on fault

上面两种故障都属于晶体管故障。在数字电路仿真建模中,晶体管被认为是理想的开关元件,但是实际的器件是存在缺陷的可能,因此有必要对晶体管故障进行建模。

【示例】


F.跳边延迟故障(Transition Delay fault

指电路无法在规定的时间内从0变成1或者从1变成0的故障。在这种故障测试中,在输入点加上一个跳变的激励,经过给定时间后检测测试点是否跳变至正确值,该模型可以检测出门级电路上的上升跳变过慢(STRslow -to-rise)或者下降跳变过慢(STFslow -to-fall)故障。

G.传输延迟故障(Path Delay fault

传输延迟故障不同于跳边延迟故障,指信号在特定路径上的传输延迟,通常与测试该路径的交流参数联系在一起,特别是关键路径。由此可以看出传输延迟故障应该属于一种特殊的跳边延迟故障;

【示例】

一般路径上的延迟都是因为传输线本身和传输线之间的阻容耦合等多种因素导致的。

除了这些数字故障模型外,还有针对存储器的故障模型,根据存储器的特点,除了原有数字故障外,还增加了集中针对存储体的故障类型,针对存储器的故障模型主要有以下几类:

A.固定型故障(Single stuck-at fault

指存储器单元固定在0或者1,通常为了检测这种故障需要对每个存储单元和传输线进行toggle操作;

B.状态跳变延迟(Transition Delay fault

状态跳变故障发生在对存储单元进行写操作的时候发生异常的跳变,为了检测这类故障需要对每个存储单元进行全toggle操作,并且要求在写入相反值后立刻读出当前值;

C.耦合故障(Coupling fault

这类故障主要针对RAM,发生在对一个单元进行写操作时,对这个单元的写操作会影响到另一个单元的内容;

D.地址译码故障(Address Decode fault

Ø 对于给定的地址,不存在对应的存储单元;

Ø 对于一个给定的存储单元,没有对应的物理地址;

Ø 对于给定的地址,可以访问到多个固定的存储单元;

Ø 对于一个存储单元,有多个地址可以访问;

F.数据保留故障(Data Retention fault

指存储单元不能在规定的时间内有效的保持其数据值而出现的一种故障,这类故障是一种动态故障;

在实际的测试中,电路远比示例中的复杂,如果要覆盖所有的故障点,不采用自动化的测试向量生成技术,故障是很难覆盖完全的,为此在实际的工作中引入了ATPG技术,通过该技术实现了测试向量自动生成。


2 ATPG

在完成了故障模型的建立后,就需要构建大量的测试向量覆盖这些故障点,如果采用手动编写特定定向的激励,那么工作将是非常繁重的,周期也非常长。为此,为了实现测试向量能够使特定故障在特定端口被观测到,设计人员多采用软件程序实现测试向量的自动产生(ATPGAutomaticTest Pattern Generation,常用的ATPG算法有伪随机算法和ad-hoc算法。ATPG通过分析芯片的结构生成测试向量,对电路进行结构测试,从而可以筛选出不合格的芯片。一般的ATPG设计流程如下:

通过ATPG,可以减少向量生成的时间,并且可以得到故障覆盖率从而可以来衡量测试向量是否有效,其次,ATPG根据各种故障类型生成测试向量,可以直接根据故障类型来追踪错误,很好的定位问题。


3可测性设计

可控制性(Controllability可观测性是(Observability可测性设计中的两个重要概念。

可控制性:能够设定某些电路节点到某种状态或逻辑值,即将信号设置为0或者1的难度;

可观测性:能够产生故障的难度;

在进行可测性设计时,需要给电路增加一定的硬件开销,这就有需要设计人员对增加的这些硬件资源对电路的性能等影响有统一的规划和认识,权衡整个电路在设计中的可测性设计。一般电路的可测试性设计具有下表所示的优缺点:

优点

不足

可以利用EDA工具进行测试的VCD

增加电路面积,提高出错概率

便于故障诊断和调试

增加设计复杂度

提高芯片的成品率

需要增加额外的引脚

便于测试,提高芯片质量

增加电路面积

减少测试成本

影响电路功耗、性能

常见的可测性流程如下:


 很多实际成功的集成电路设计已经证明,在电路中加入可测试性的设计结构,有助于提高芯片的成品率,缩短研制周期,极大的降低研制成本。当然文中提到的DFT一些不足,DFT本身一定也会不停的发展和完善。

【参考文献】SoC设计方法与实现

【推荐在线画电路图网站】https://www.digikey.com/schemeit/project/



全部评论

相关推荐

牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗? 刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
评论
1
5
分享
牛客网
牛客企业服务