《vlsi测试与可测性设计》由会员分享,可在线阅读,更多相关《vlsi测试与可测性设计(4页珍藏版)》请在金锄头文库上搜索。
1、VLSIVLSI 测试与可测性设计测试与可测性设计随着集成电路的集成度越来越大,芯片的测试技术也给我们带来新的挑战, 集成度的增大使芯片的故障率也随之增大,这样我们设计的测试电路也越来越 困难,要使我们能完成测试任务我们需要 VLSI 测试与可测性设计。VLSI 测试 技术我们需要研究测试理论基础,测试矢量生成,可测试性设计。 数字系统的测试是一个不缺少的重要环节。 系统测试的核心问题是确定施 加什么样的激励,可以使故障激活(既使故障能够反映出来) ,同时能够在可及 端测量出来。因此还要确定在什么地方施加机理,在什么地方进行测量。最初 的系统测试主要采用功能测试,如 1953 年 Eckert
2、 所采用的 BINCA 计算机就是 用两个相同的处理器同步进行工作,并随时进行比较,看其是否有相同的结果 来判断是否有故障。 器件测试是从最简单的组合电路开始的。Eldred 在 1959 年提出了第一篇 关于组合电路的测试报告。尽管它只是针对单级或两级组合电路中的固定故障 测试,但是它已实际应用于第一代电子管计算机的测试,并揭开了数字系统测 试的序幕。 Eldred 指出:3 输入或门,输入故障可采用输入矢量(100) 、 (010 )和(001 )测试,每个矢量还可检测输出端的 s-a-0 故障。为了检测输出端 s-a-1 故障,还需要增加输入矢量(000 ) 。Eldred 提出的方法只
3、解决了两级以 内的组合电路测试问题。 DBArmstrong(1966)基于 Eldred 的基本思想提 出了一维通路敏化方法。主要思想是对多级门电路寻找一条从故障点到可及输 出端的敏化通路,以便在可及端可以观察到故障信号。 利用这种方法确实解决 了相当多组合电路的测试问题。当时人们 认为,非冗余的组合电路中任一故障 信号都是沿某一条通路传输 到可及端的。直到 1976 年,Schneider 提出了一 个反例,证明了某些故障信号只通过一条通路是不可能传输到可及输出端的, 而必须同时沿两条或两条以上的通路传输,才能在可及输出端测试到故障信号。Schneider 指出了一维通路敏化存在的问题,但
4、是没有提出解决这个问题 的方法。实际上,罗思(Roth)于 1966 年提出的著名的 D 算法就已经考虑了故 障信号向可及端传输的所有可能的通路(包括多通路传输) 。虽然以后对 D 算法 有不少改进,但是都没有超出罗思的基本思想。从理论上说,组合电路测试在 罗思的 D 算法中已达到最高点。在实际应用中,脱胎于 D 算法的 PODEM 算法和 FAN 算法已经臻于完善,达到完全使用阶段。 在罗思之后,Seller 等提出的布 尔差分法和 Thayse 提出的布尔微分法,虽然在实际应用中存在一定的困难,但 是使通路敏化理论得到系统化,这两种方法在数字系统测试中也占有重要的地 位。罗思的 D 算法从
5、理论上解决了组合逻辑电路的测试问题,即任何一个非冗 余的组合逻辑电路中任意单故障都可以用 D 算法来找到测试它的测试矢量。但 是在实际应用中还存在计算量大,难以应付大电路问题。虽然各种各样的改进 方法在不同程度上提高了运算速度,但是总的计算工作量还是很大。 Armstrong(1966)提出 enf(等效正则)法,其核心问题是寻找一个可检 测电路内全部故障的最小测试集。波格(Poage)和博森(Bossen)等提出了用 因果函数来检测所有单故障和多故障的最小测试集,并在小型的组合逻辑电路 测试中取得较好结果。但是上述几种方法通常都要处理大量文字型数据,所需 的工作量和计算机内存容量都比较大,因
6、此对大型组合电路难以付付诸实用。 魏道政等提出的多扇出分支计算的主通路敏化法以及较为直观的图 论法,在实际应用中显示出较大的优越性。随着系统和电路规模的增大和元件集成度的提 高,大型组合电路故障检测日趋迫切,对计算机速度要求越来越高,所需存储 容量越来越大,使某些算法已失去实用价值,因此必须研究和探讨新的方法, 或探索某一类器件的专用测试方法,例如:PLA 器件的测试。过去认为没有实 用意义的穷举法,随着电路规模的增大而有了新的发展,因为穷举法测试码产 生非常简单,Archambeau 等人提出的伪穷举法为穷举法用以解决大型组合电路 的测试开拓了新的途径。 时序电路测试比组合电路测试要困难得多
7、,其主要原因是:时序电路中存 在反馈线;存在存储元件;时序元件。正因为时序电路测试存在上述三个难以 解决的问题,因此它的测试理论和方法的研究进展一直比较缓慢,切实行之有 效的方法也比较少。解决时序电路测试问题的最初途径是沿用组合电路的算法, 但由于 要对电路的状态作估算,因此使设计工作量剧增。Hennie(1964)首先 提出了把时序电路“复原”的输入序列的问题,但实际并非所有的时序电路都 存在这样的“复原”序列。为了比较好地解决时序电路的测试问题,相继提出 了逻辑函数的多值模拟法,其中比较成功的有三值、六值和九值布尔模拟。多 值布尔模拟中所引入的新的布尔变量,主要是为了解决时序电路中状态变量
8、的 初值设置,以及在测试过程中某些元件的未知状态或随意状态的表达问题。目 前常见的方法有九值算法、线路-时间方程算法、M0M1 算法等。阮根鸿提出 H 算法也作了有益的尝试,并取得了一定的成果。 在研究面向故障的测试矢量生成方法的同时,时序电路的功能测试问题也 得到了广泛重视。这种测试方法不考虑电路的结构,而只考虑电路的功能流程, 它只检验电路的逻辑功能是否正确,而不考虑电路的定位问题,因此它不能代 替一般的测试问题,但在验证因果设计方案和检验生产厂家的产品时是非常有 用的。传统的数字电路(芯片、电路板及系统)的逻辑设计与测试是分开进行 的,即先设计,后测试,设计阶段不考虑测试问题。 然而,随
9、着数字电路的日 益复杂,特别是 VLSI 电路密度的日益增加,数字电路的测试问题日趋尖锐, 测试时间和测试费用日趋提高,甚至达到无法测试的地步,影响了微电子技术 的进一步发展。为了有效开发电路,降低电路测试费用,数字电路必须设计成 可测试的。这就要求在电路设计阶段考虑测试问题,或者说必须进行数字电路 的可测试性设计。随着微电子技术和数字技术的飞速发展,数字电路的可测试 性技术近几年来越来越引起电路设计者的重视,这门技术本身也得到了迅速发 展。 数字电路可测试性技术可分为两大类:为解决某些具体电路的测试而提出 的专用方法,如增加电路板的外部测试点、把大电路划分成小电路等通用技术, 称为结构方法
10、(structured approaches ) 。这些方法增加某些电路或改变电 路结构使测试变得容易,目前较为流行的有扫描通路法(Scan Path) 、随机存 取扫描法(Random-Access Scan) 、电平敏化扫描设计法(Level-Sensitive Scan Design,简称为 LSSD) 、内在逻辑块观察法(Built-In Logic-Block Observation)和串行荫蔽寄存器法(Serial Shadow Register )等。为了彻 底解决数字电路的测试问题,目前还发展了内建自测试(Built-In Self- Test)技术。数字电路的可测试性有多种定
11、义,其中之一是:若能对一电路产 生、评价并施加一组测试图形,并在预定的测试时间和测试费用范围内达到预 定的故障检测和故障定位的要求,则说该电路是可测的。 可测试性包括可控制 性(controllability)和可观察性(observability)两种特性。可控制性是指通过原始输入置电路内部的逻辑点为逻辑“1”和逻辑“0”的能力,可观察 性是指通过原始输出观察电路内部逻辑节点的响应能力。 数字信号测试作为 VLSI 芯片测试的基础,已经是一项应用十分广泛的技术。 各个 EDA 供应商、ATE 供应商都有着十分成熟的解决方案,包括功能测试仿真 向量的产生,转换和实际测试操作,以及芯片的 AC/
12、DC 参数测试。作为高速信 号测试的基础和芯片测试的基石,我们将在本文中介绍通用的数字信号测试技 术、难点和各种解决方案,为下一次文章介绍的高速信号测试抛砖引玉。 数字信号测试中最基本的是功能测试,也就是模拟芯片在实际工作中的状 态,输入一系列的信号,在输出端检测输出信号是否和预测的正常输出相符。 以最简单的存储器单元为例,输入时钟、写信号、地址、数据,然后再输入读 信号、地址,最后在输出端观察输出的数据是否正确。 要将功能测试实际应用在 ATE 上,需要首先有正确的功能仿真测试向量 (包括输入向量和希望的输出向量) ,然后转换为 ATE 的测试程序。运行程序时, 测试通道向芯片发出驱动波形,
13、比较实际输出向量和希望的输出向量,得出 Pass/Fail 的结果。 随着 VLSI 的规模越来越大,内部的功能越来越复杂,功能测试也越来越复 杂,其带来的结果是测试向量深度的增加。一颗芯片的测试程序通常会有许多 个功能测试向量,以模拟不同的工作状态,测试不同的功能模块。这些向量都 会被加载在测试向量内存中,以顺序或并发方式被执行。在实际生产过程中, 由于内存大小限制,加载一段向量,测试一段向量,再加载一段向量的做法会 使测试成本大为增加,所以大小合适并且可以很容易升级的是衡量 ATE 系统的 一个重要指标。随着 DFT 扫描测试的应用,许多芯片测试要求的向量深度已经 超过 20M,有些甚至达
14、到 100M。 功能测试日趋复杂带来的另一个问题就是调试的困难。最直接简便的调试 方法莫如将实际得到的波形与预期波形进行比较,以确定问题的状况,找出原 由。下图所示的就是在 SmarTest 软件中的 Timing Diagram 工具。在这个页面 中我们可以看到上部的 5 个输入波形(包括一个 pin group 输入的数据)和 7 个输出管脚的波形。这里的每个波形都是测试通道实际在我们选择的 10 个 cycle 中得到的波形,包括每个比较沿和每个脉冲的上升、下降沿的形状,并 且可以对时刻、输出电压进行测量。通过这样的波形与预期波形,甚至 EDA 工 具的仿真波形比较,就可以得出是逻辑错误
15、、电气特性问题或其他原因导致的 功能测试失败。 随着 SOC 设计的日益推广,越来越多不同速度的 IP 被集成到同一颗芯片中。 从高速的 PCI Express, USB2.0 到基本的 SDRAM, PCI,测试一颗包含从 33Mbps 到 2.5Gbps 如此大速度范围的芯片对 ATE 提出了从功能到成本的一系列要求, 也带来了从硬件到软件的一系列挑战。在硬件上要求每一个通道都能测试如此 大的速度范围必然带来昂贵的测试成本,所以比较好的解决方法就是根据芯片 的要求灵活的配置机台,高速、低速测试通道可以存在于同一平台上,做到 channel mixing。在软件上,不同 IP 的时钟频率不同
16、,为了方便调试、节省测 试向量内存,可以采用 multi-port 的技术,针对不同的 port 采用不同的时钟 频率进行转换、测试,同时也可以与其他 ports 一同进行并行测试 (concurrent test) 。 数字信号芯片的 DC 参数测试主要是测量芯片管脚的电气特性。常用的测试 项目包括:连接性、输入漏电、高阻抗漏电、输出电流电压等。以常用的输出电压为例,它主要测试管脚的带负载能力。在输出为低时,灌入电流,测量输出 电压。随着灌入电流的提高,输出电压也会提高。是否能在一定的负载(灌入 电流)下,输出电压保持在一定的范围内,可以衡量这个管脚的电气特性是否 合格。 如果要同时测量多个输出管脚的电气特性,需要两个条件:合适的功能测 试向量将这些输出管脚同时设置到一定的输出状态;每个输出管脚对应的测试 通道都有独立的驱动、测试能力或者 PMU(parametric measurement unit) 。 数字信号芯片的测试除了上述的功能测试、 DC 参数测试外还有 AC 参数、 功耗测试等种种项目,这些内容将在之后的文章中介绍。几乎所有 VLSI 芯片 的测试都离不开数