一、集成电路的测试
集成电路是一种复杂的功能器件,在开发和生产过程中出现一些错误和缺陷是不可避免的。测试的主要目的就是在生产中将合格的芯片与不合格的芯片区分开,保证产品的质量与可靠性。此外需要通过测试对产品的质量与可靠性加以监控。
根据集成电路产品生产所处的不同阶段与不同目的,测试大致可以分为3种类型:①在产品的研发阶段,为了检测设计错误而进行的测试(设计错误测试);②在芯片生产阶段,为了检测产品是否具有正确的逻辑操作和正确的功能而进行的测试(功能测试);③在产品出厂前,为了保证产品的质量与可靠性,需要进行的各种测试(产品测试)。
进行集成电路测试需要有专门的测试仪器,通常这些测试仪器是非常昂贵的,测试的实现难度与测试时间决定了测试的费用。如何经济有效地进行测试也是集成电路设计者的责任。集成电路设计者应该负责设计错误测试与功能测试整体方案的制订,包括精确定义测试方案,设计测试电路和生成相应的测试向量。
1.设计错误测试
当一个新的电路设计完成并第一次投片制造后,设计者最想知道的就是电路设计本身是否存在错误。设计错误测试的主要目的是发现并定位设计错误,从而达到修改设计,最终消除设计错误的目的。设计错误的主要特点是同一设计在制造后的所有芯片中都存在同样的错误,这是区分设计错误与制造缺陷的主要依据。
在输入测试向量后,从输出的错误类型可以大致定位设计错误,但还需要花很大的努力才能精确地确定错误发生的位置。某些情况下,为修改设计错误而反复设计与制造的代价(时间与费用)几乎与初始设计一样大。因此,一方面设计者在设计阶段应认真做好仿真模拟工作,确保设计一次成功;另一方面,在设计时要考虑芯片制造后的测试问题,万一在测试时发现存在设计错误,要做到能尽快定位错误的位置。为此,有时在第一版的设计中,增加一些测试分析用的电路与输入输出引脚,便于在设计出现错误的情况下进行分析与定位,节约设计反复所用的时间。
2.功能测试
这里所说的功能测试主要是针对制造过程中可能引起电路功能不正确而进行的测试。与设计错误相比,这种错误的出现具有随机性,测试的主要目的不是定位和分析错误,而是判断芯片上是否存在错误,即区分合格的芯片与不合格的芯片。
功能测试的困难源于以下两个方面:
(1)一个集成电路具有复杂的功能,含有大量的晶体管;
(2)电路中的内部信号不可能引出到芯片的外面,而测试信号和测试结果只能从外部的少数管脚施加并从外部管脚进行观测。
测试的过程就是用测试仪器将测试向量(1和0组成的序列)通过探针施加到输入管脚,同时在输出管脚上通过探针进行检测,并与预期的结果进行比较。高速的测试仪器是非常昂贵的设备,测试每个芯片所用的时间必须尽可能地缩短,以降低测试成本。
功能测试是要判断集成电路在各种可能的输入激励信号下是否正确工作。乍看起来将各种可能的1和0的组合加到输入管脚就可以实现完整的测试。其实不然,当电路的输入管脚数增加到一定的程度后,比如说有一输入管脚数为64的电路,要对它进行彻底地测试,需要外加264次的输入(测试向量)和进行264次的检测。另一方面,多数集成电路内部还含有锁存器、触发器等时序电路单元,它们都有两种状态,若要覆盖所有的可能性,内部状态的每一种组合也要进行测试。如果一个集成电路的输入管脚数为N,内部含有M个双稳态单元(触发器或锁存器),则所需要的测试向量为2N+M。一个规模很小的专用集成电路(ASIC),有可能达到N=25,M=50,就要求有275个测试向量(近似于3.8×1022个)。假如有这么多的测试向量,并以每个测试向量1μs的速率加到电路上,那测试一遍需要十亿年,这显然是不可能实现的。因此,必须采用一种完全不同的测试方法。
常用的一种方法是用精简的测试向量集。通常一个有故障的电路对大多数可能的输入测试向量仍会给出正确的输出,故障仅仅是对一些特别的输入测试向量才显露出来。因此,我们可以设计一个测试向量序列,使得电路的输出在输入这一测试向量序列后与预期值不一样,从而发现制造造成的故障。要做到这一点,需要知道数字电路中有哪些可能的故障。下面简单介绍一下通常的故障模型。
二、故障模型
对于一个集成电路来说,尽管物理上会有很多类型的故障发生,但这些故障反映在数字电平上就是没有按照预期从1变为0或从0变为1。这叫做固定值故障(stuck-atfault)模型。如有一个逻辑门,其输出由于工艺上的某种原因,造成电平始终固定为1状态,它不随输入端的信号变化而改变,这就称为具有固定1故障。如输出始终处于逻辑0状态,就是具有固定0故障。固定值故障可能在一块集成电路中的任何一个节点发生。如果集成电路中有n个节点,就有2n个可能的故障(每个节点有可能固定0或固定1),设计者应生成一个相对短的测试向量集,尽可能多次地显示出这些故障。
以下通过一个输出端带有固定1故障的2输入与非(NAND)门来说明如何生成测试向量。如图8-1所示,A、B输入为00、01、10时,该故障门仍给出正确的输出即逻辑1,惟一能显示出故障的输入是11,因为这时输出仍然是1而不是期望的0。如果与非门带有固定0故障,则除11以外的任何一个输入(即00、01、10中的任何一个)都可以显示出故障。因此对一个2输入与非门只要两个测试向量就足以显示出这两种故障。
图8-1 输出端有固定1故障的2输入与非门
以上的讨论同样适用于逻辑门在输入端存在固定值故障的情况。
为了测试一个电路中某部分的故障,设计者所设计的测试向量,一定要能使给出的输出区别于没有故障时的输出。如一些故障能被一组输入的测试向量检查出来,我们就称这些故障被这组测试向量所覆盖。被一个测试向量序列所覆盖的故障数占电路中所有可能的故障数的比率就叫故障覆盖率。当然我们希望设计出来的测试向量序列能够达到或接近100%的故障覆盖率。如果用人工生成测试序列是非常繁琐的,幸好现在有很多CAD系统可以自动完成这项工作。
三、集成电路的可靠性
产品质量的好与坏是对电路能否在初期满足规范要求的一种结论,可靠性是对电路能否长期满足规范要求的一种指标。通常,测试产品时采用比规范要求更严格的测试条件,这是为了尽量消除任何可能导致初期失效或长期失效的那些电路。此外,还可以对通过第一轮测试的器件再作进一步的测试并监控其结果,第二轮测试的结果可以用来修正初始的筛选要求,在设法提高成品率的同时仍能保证规定的质量和可靠性要求。
高质量的电路设计是保障产品质量和可靠性的前提,因此在设计中要留有足够的设计余量。有了这一前提,测试就成为尽量发现影响产品质量的制造缺陷和影响可靠性的潜在制造缺陷的过程。
从质量和可靠性的要求出发,对集成电路的测试可以分为两类:电学测试和环境测试。电学测试的内容包括直流、交流和瞬态性能。环境测试是测量电路在较宽的环境变量范围内,如温度、湿度、振动和机械拉力等变化时所造成的影响。测试的严格程度取决于所制订的质量和可靠性的目标。
产品的测试有多种。有些测试是毁坏性的,只能在样品上进行,做过这些测试的样品就不能再进入产品系;有一些测试虽然是非毁坏性的,但由于时间费用的原因也只能在样品系上做,做过这些测试的样品还可以进入产品系。这两类测试都是针对样品系进行,因此称为抽样测试。抽样可以按生产的批次每次进行,也可以定期进行。另一种是对每个器件都要按正常的生产流程进行测试的,称为筛选测试。
典型的集成电路产品失效率遵循图8-2所示的曲线,初期的高失效率是由于潜在的制造缺陷。这种失效率可以通过严格的测试而大幅度降低,然而这种测试成本很高,因此要在测试成本和保修代价之间加以平衡。测试的要求依赖于器件的用途,如果一种ASIC将用于卫星,则必须对其作大量全面严格的测试,因为其保修的代价会非常高,这与普通的商用产品完全不一样。失效率曲线平坦部分是正常的产品生命周期,在这段时间内,失效率是很低的(假如设计本身没有问题)。最后阶段是产品生命末期,这时产品已经无法再用了。
器件的失效可以分为4大类:设计失效、工艺失效、封装失效和测试失效。设计失效是由于电路设计或采用的工艺参数处于临界状态而造成的。消除这种失效的唯一办法是在最恶劣的条件下(如高温、低电源电压等)进行筛选,或重新设计电路,或在更稳定的工艺下制造该电路。工艺失效是由于圆片制造过程中的缺陷造成。这可能是氧化层中的针孔,或由于掩膜上的存在灰尘斑点;或金属可能有划痕、缝隙及短路;也可能在压焊块上有污染物或钝化物。封装相关的失效是由于将一个原本是好的管芯装入管壳里的过程中所造成的缺陷。这包括连线问题、管芯粘贴不牢或管壳的机械性能不好等。测试失效是由于没有正确地进行测试或没有足够的保护余量而造成的。
图8-2 失效率与时间关系曲线(www.xing528.com)
四、典型的测试和检查过程
下面简单介绍一下典型的测试和检查结果。需要说明的是,这里的描述非常通用,每个具体产品都应该与特定的芯片制造商讨论,作出测试进程的详细描述,明确通过何种级别筛选过的器件可以被接受。
1.圆片测试(wafer sort)
圆片测试是对圆片上的每个管芯作简单的电学测试,不合格的管芯用墨水做上记号,以便在管芯被划开之后可以挑出并抛弃。
2.管芯目检(die visual)
圆片测试后,余下电学上合格的管芯通过目检检查金属上是否有划痕,管芯边缘是否有碎片或裂纹,压焊块上是否有钝化物等。任何通不过这种检查的管芯也将被抛弃。
3.密封前目检(pre-seal visual)
一旦管芯被装配到管壳内并将焊丝压焊好后,在包封前要对连接后的情况进行目检。这主要是检查焊丝压焊、管芯粘贴是否有问题,芯片是否有损伤,管腔或管脚上是否有异物等。
4.管芯粘贴测试(die attach)
包封前要抽出一批样品测试管芯粘贴的强度。它是用工具在管芯上施加一个剪切力,使管芯从管腔中脱开。这是一种损坏性试验,用来测量管芯粘贴的完整性。芯片失效通常是由于管芯下面有空隙或管芯与管腔底部粘贴质量不好而造成的。管芯粘贴不好会使从管芯到管腔的热阻增加,管芯散热不好而导致芯片温度偏高。最坏情况下,管芯与管腔间的粘贴变松,导致压焊丝被拉断。
5.压焊强度测试(lead bond strength)
包封前抽出一批样品,用工具加力使焊丝脱落。这是一种破坏性的试验,用来测试焊丝压焊的压焊强度。
6.稳定性烘焙(stabilization bake)
在不加电的情况下,将电路放置在150℃的烤箱中进行烘焙,使得芯片表面游离的离子重新分布,以达到稳定性能的目的。
7.温度循环测试(temperature cycle)
在不加电的情况下,交替地加热和冷却电路。这种热冲击将使处于临界故障的封装破裂,存在管芯粘贴故障的管芯从管腔脱落等。
8.持续加速度测试(constant acceleration)
将密封前的电路放在离心力相当于30 000倍的重力下测试。这项测试主要是检测焊丝压焊、封装和管芯粘贴的完整性。
9.渗漏测试(leak test)
这项测试是在不加电条件下,针对陶瓷管腔封装的电路进行的。电路放置在高压氦气环境中,氦气通过管壳的针孔或裂缝渗入管腔内,然后再将电路放到真空室中,通过一个分光计测量从管腔中漏出的氦气比率。这项测试的目的是检查封装的完整性,消除电路可能在高湿度环境下的失效。
10.老化前电测试(pre-burn-in electrical test)
在25℃下对电路进行完整的功能测试。
11.高低温电测试(high and low temperature electrical test)
这是在指定的高温和低温下对电路进行完整的功能测试。如果不再进行老化,这将是最后的电测试。
12.高温老化(burn-in)
在规定的时间内,在125℃下对电路进行电冲击测试。这个过程可以加速失效率,使得处于临界状态的电路在老化期间失效。
13.老化后电测试(post-burn-in electrical test)
这是一项在25℃下对老化后的电路进行完整的功能测试。该项测试可以剔除在老化过程中失效和参数值不符合接收规范的电路。
14.外观目检(external visual)
这项是最后的目检。目的是保证封装后引脚和标记没有缺陷。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。