- 1 概述
- 1.1 测试及测试矢量的分类
- 2 故障建模及ATPG原理
- 2.1 故障建模的概念?
- 2.2 为什么要故障建模?
- 2.3 常见的故障模型有哪些?
- 2.4 ATPG是什么?
- 3 可测性设计基础
- 3.1 可测性的含义?
- 3.2 可测性设计(Design For Testability,DFT)的含义?
- 3.3 可测性设计的优势和不足?
- 4 扫描测试(SCAN)
- 4.1 扫描测试结构的基本单元?
- 4.2 扫描测试原理?
- 4.3 at-speed 测试 ?
- 4.4 扫描设计规则?
- 4.5 扫描测试的可测性设计流程及相关 EDA 工具?
- 5 存储器的内建测试
- 5.1 存储器测试方法?
- 6 边界扫描测试
测试的含义:目前所指的测试通常是芯片流片后的测试,定义为对被测电路施加已知的测试矢量,观察其输出结果,并于已知正确的输出结果进行比较而判断芯片功能、性能、结构好坏的过程。
1.1 测试及测试矢量的分类按测试目的分类:
- 验证测试(Verification Testing,也称为 Design Validation) 进行功能测试,以及全面的 AC、DC参数测试。
- 生产测试(Manufacturing Testing) 测试的目的是明确做出被测芯片是否通过测试的判决。
- 可靠性测试(Reliability Testing) 保证产品的可靠性。
- 接收测试(Acceptance Testing) 芯片在用户手中,用户将进行再一次测试。
按测试方式的分类:
- 穷举测试矢量(Exhaustive Vector) 覆盖率高但数目极大。
- 功能测试矢量(Functional Vector) 主要应用与验证测试,验证各个器件功能是否正确。
- 结构测试矢量(Structural Vector) 基于故障模型的测试矢量,无法检测所有的故障类型。
基本概念:
- 缺陷:集成电路制造中,在硅片上所产生的物理异常,如某些器件多余或遗漏。
- 故障:由于缺陷所表现出来的不同于正常功能的现象。
- 误差:由于故障而造成的系统功能的偏差或错误。
- 漏洞:由于一些设计问题而造成的功能错误。
以数学模型来模拟芯片制造过程中的物理缺陷,便于研究故障对电路或系统造成的影响,诊断故障的位置。
2.2 为什么要故障建模?电路中可能存在的物理缺陷是多种多样的,并且由于某些物理缺陷对于电路功能的影响过于复杂,不能被充分理解,分析的难度很大。而故障化模型中的一个逻辑故障可以描述多种物理缺陷的行为,从而回避了对物理缺陷分析的复杂度。
2.3 常见的故障模型有哪些?- 数字逻辑单元中的故障模型
- (1) 固定型故障(Stuck At Fault,SAF) 集成电路测试中使用最早最普遍的故障模型。 假设电路或系统某个信号永久固定为逻辑0或逻辑1,简记为SA0(Stuck At 0)和SA1(Stuck At 1) 故障是可以合并的,比如与非门输入端A的 ST0 与输出端 Y 的 ST1 故障等效。考虑测试矢量集的时候可以合并故障,选一个子故障集就行。
- (2) 晶体管固定开/短路故障(Stuck-open/Stuck-short) 检测开路故障测量输出逻辑 固定短路故障需要测量输出端口的静态电流。
- (3) 桥接故障(Bridging Faults) 桥接故障指的是节点间电路的短路故障。 分3类:逻辑电路与逻辑电路之间的桥接故障、节点间的无反馈桥接故障、节点间的反馈桥接故障。
- (4) 跳变延迟故障(Transition Delay Fault,TF) 指电路无法在规定时间内由 0 跳变到 1 或从 1 跳变到 0 的故障。 在电路上经过一段时间的传输后,跳变延迟故障表现为固定型故障。
- (5) 传输延迟故障(Path Delay Fault) 指信号在特定路径上的传输延迟,通常与测试该路径相关 AC 参数联系在一起,尤其是关键路径。
- 存储器的故障类型
- (1) 单元固定故障(Stuck-At Fault) 存储器单元固定在 0 或 1。为了检测需要对每个存储单元和传输线进行读写 0 和 1 操作。
- (2) 状态跳变故障(Transition Delay Fault,TF) 是固定故障的特殊类型。发生在对存储单元进行读写操作时,不发生正常的跳变。为了检测需要对每个单元写相反值后立刻读出当前值。
- (3) 单元耦合故障(Coupling Fault,CF) 主要针对 RAM,对一个单元写操作时,会影响另一个单元的电容。 类型:反响类型(CFin,inversion)、等幂类型(CFid,idempotent,仅当单元有特定数据是单元内容改变)、简单的状态耦合(CFst,state,其他位置有特定内容时单元内容改变)。 为了检测在对一个连接单元进行奇数次跳变后,对所有单元进行读操作,以避免可能造成的耦合故障。
- (4) 临近图形敏感故障(Neighborhood Pattern Sensitive Faults,NPSF) 在特定存储单元周围的其他存储单元出现一些特定数据时,该单元会受影响。
- (5) 地址译码故障(Address Decode Fault,ADF) 类型:1 对于给定的地址,不存在对于存储单元。2 对于一个存储单元,没有对应的物理地址。3 对于给定的地址,可以访问多个固定的存储单元。4 对于一个存储单元,有多个地址可以访问。
- (6) 数据保留故障(Data Retention Fault) 指存储单元不能在规定时间内有效保持其数据值而出现的故障。
自动测试产生(Automatic Test Pattern Generation)。采用故障模型,通过分析芯片的结构生成测试向量,进行结构测试,筛选出不合格的芯片。
测试向量:指为了使特定故障能够在原始输出端被观察到,而在被测电路原始输入端所施加的激励。
完成的工作:
- 基于某种故障类型,确定当前测试矢量能够覆盖多少物理缺陷
- 对于特定的抽象电路,工具能够自动选择能够匹配的故障模型。
故障检测率:表示测试矢量集对于故障的覆盖程度。故障覆盖率 = 被检测到的故障数目 / 被测电路的故障总数。
ATPG工具:Synopsys 的 TetraMAX 和 Menter 的 Fastscan
3 可测性设计基础 3.1 可测性的含义?框架式定义:在一定时间财力下,生成、评价、运行测试以满足一系列的测试对象(如故障覆盖率、测试时间等)。 工业界范围较窄的定义:能够测试检验出存在于设计产品中的各种制造缺陷的程序。
3.2 可测性设计(Design For Testability,DFT)的含义?指设计人员在设计系统和电路的同时,考虑到测试的要求,通过增加一定的硬件开销,获得最大可测性的设计过程。 为了达到故障检测目的所作的辅助性设计,这种设计为基于故障模型的结构测试服务,用来检测生产故障。 主要的可测性设计方法:
- 扫描通路测试
- 内建自测试
- 边界扫描测试。
两个重要概念:
- 可控制性(Controllability):指将该信号设置成0或1的难度。
- 可观测性(Observability):指观察这个信号所产生故障的难度。
扫描测试被认为是最理想的结构故障测试结构,不仅可重复利用,也有助于测试向量的生成。
能够检测的故障包括线路的断路和短路、线路和器件的延迟等。
组合逻辑的故障模型的测试分析可以从输出端口倒推出输入端口,得到测试矢量。
时序逻辑需要一个或多个时钟周期才能将测试矢量送至被测节点。扫描测试方法是解决时序电路测试的最佳方案。
4.1 扫描测试结构的基本单元?测试矢量的施加及传输是通过将寄存器用特殊设计的带有扫描功能的寄存器代替,使其连接成一个长的移位寄存器链来实现。 扫描测试结构的基本单元是扫描触发器,使用最广泛的是带多路选择器的D触发器和带扫描端的锁存器。
-
带多路选择器的D触发器
scan-enabel 控制电路为 正常工作模式 或者 扫描模式。 增加芯片面积和功耗。
-
带扫描端的锁存器 电平敏感扫描器。
c为高电平,正常工作模式。a为高电平,扫描工作模式。 b为高电平时,存在第一级锁存器的数据传输到 sq 端。 时钟生成和分配异常复杂。
将扫描单元按扫描移位模式连接起来,就构成扫描测试的基本结构。
扫描方式:
- 全扫描:在设计中的每个寄存器都用具有扫描功能的寄存器代替。
- 部分扫描:电路中一部分采用了扫描测试结构,而一部分没有。
为了测试 G3 输入断电 SA1 故障测试,流程:
- 1 将测试矢量(100)移入,也就是移位寄存器链输出从右到左分别是 1 0 0,当电路正常时,输出应该是0,当有 ST1 故障,输出就为1.
- 2 测试矢量移入后,就可以切换到正常工作模式看看输出了。此时输出存在最后一个寄存器上。
- 3 再切换到扫描模式,将故障响应通过扫描链输出,同时新的测试矢量输入。
检测延迟故障(包括状态跳变故障和延迟故障),通常采用 at-speed 测试方法,可以包含一切 stuck-at 故障。
at-speed 测试 测试一个延迟故障需要对组合逻辑施加两个测试向量,第一个设置电路状态,下一个引起触发器翻转。两种方法产生并施加at-speed 测试向量。
- 移位启动
- 慢速移位快速捕获(Slow Shift Fast Capture)
为了保证电路中每个节点符合可控制和可观测的需求,再扫描链插入之前会进行扫描设计规则检测。
- 使用同种类扫描单元进行替换,通常选择带多路选择器的扫描触发器;
- 在原始输入端必须能够对所有触发器的时钟端和异步复位端进行控制;
- 时钟信号不能作为触发器的输入信号;
- 三态总线在扫描测试模式必须处于非活跃状态:
- ATPG无法识别的逻辑应加以屏蔽和旁路。
扫描测试的设计包括两部分内容:测试电路插入 和 测试矢量生成。
测试电路的插入:
- 在电路中(RTL)加入测试控制点,包括测试使能信号和必要的时钟控制信号。
- 在扫描模式下将触发器替换为扫描触发器,并且将其传入扫描链。
- 通过检查 DRC ,保证每个触发器的可控制性和可观察性。
测试矢量的生成主要利用 ATPG 工具完成:
- 扫描插入工具: Synopsys 的DFT Compiler、Mentor 的DFTAdvisor。
- ATPG工具: Synopsys 的TetraMAX、Mentor 的Fastscan。
- 测试矢量验证: Synopsys 的TetraMAX。
Synopsys 的DFT Compiler为例,将 DFT 实现放在综合流程中,不会妨碍原功能、时序、信号完整或功耗的要求,实现过程:
- 1 信号定义
- 2 设计综合
- 3 扫描插入
- 4 设计规范检查
- (1)直接访问测试方法 在芯片外增加直接访问存储器的端口,通过直接读/写存储单元来测试存储器。
- (2)通过片上微处理器进行测试 微处理器作为“测试仪”,利用微处理器存储器中的汇编语言程序来实现所需要的存储器测试算法。
- (3)利用存储器内建自测(Built-In-Self-Test,BIST)。 通过在存储器周围加入额外的电路来产生片上测试向量并进行测试比较,完成对存储器的测试。BIST 的方法可以用于 RAM、ROM和Flash 等存储设备中,主要用于 RAM 中。
- (4)扫描寄存器测试 对于小型的嵌入式存储器通常使用局部边界扫描寄存器,需要给嵌入式存储器增加测试外壳。由于外壳的延迟,存储器的读写速率将降低。
- (5)用 ASIC 功能测试的方法进行测试 对于小型存储器,ASIC 供应商提供了简单的读写操作用于 ASIC 的功能操作。
边界扫描测试(Boundary scan)是为了解决PCB上芯片与芯片之间的互连测试而提出的一种解决方案。