引言
随着科技的不断发展,集成电路的制造工艺和设计水平得到了飞速提高,设计者能够将非常复杂的功能集成到硅片上。将PCB板上多块芯片的系统集成到一块芯片内部,这个芯片就是系统级芯片,即SoC(System on Chip)。SoC芯片的特点主要有两方面: 第一是其高度的复杂性,第二是大量运用可重用的IP(Intellectual Property)模块。
以往的芯片设计往往只专注于某个特定功能的模块设计,例如压缩/解压、无线模块、网络模块等。而一块SoC芯片的功能可能是多个独立模块的总和。另外,芯片的制造需要经历化学、冶金、光学等工艺过程,在这些过程中可能引入物理缺陷导致其不能正常工作。因此对芯片的测试成为必不可少的环节。可测性设计(Design For Test,DFT)[1]是在芯片的设计阶段就考虑以后测试的需要,使芯片测试更加容易和充分,并降低测试成本。
一个SoC包含各种可复用的功能IP核,其中嵌入式微处理器核是其中的关键部分,大部分都嵌有一个或多个微处理器核以获得最好的性能。所以,对微处理器核可测性问题的研究越来越迫在眉睫。
1 传统测试方法
20世纪七八十年代之前,集成电路还都是小规模电路时,测试大都通过加入激励,探测相应的方式来完成。这种方式在电路规模不大并且频率不快的情况下还是可行的,但是随着集成电路规模的增长,功能验证内容增多,或者需要使用异步激励信号时,这样的测试方式就存在局限性。为了提高故障点的测试覆盖率,出现了自动向量生成(ATPG)工具。运用ATPG算法以及强大的计算机,可以检测到尽可能多的故障点。随着芯片规模的增长,芯片门数相对于引脚数目的比例变得太悬殊,只通过输入/输出引脚进行测试的方法几乎不能再应用了,于是出现了另外一种基于扫描的测试技术——DFT。但当扫描链很长而且数量很多时,单芯片测试时间还是很长。同时高级测试仪器的价格急速攀升,使得BIST(BuiltIn SelfTest)即片内测试方法的产生成为必然。
2 几种常用的BIST方法及其优缺点
片内测试是节省芯片测试时间和成本的有效手段,外部测试的测试速度以每年12%的幅度增长,而片内芯片的速度以每年30%的幅度增长[2] ,这一矛盾进一步推动了BIST的应用。由于SoC芯片内部的IP种类繁多,对不同的IP核采用不同的BIST测试方法。采用BIST技术的优点在于:降低测试成本、提高错误覆盖率、缩短测试时间、方便客户服务和独立测试。目前BIST测试方法主要有MemBIST和LogicBIST。
2.1 MemBIST
MemBIST是面向嵌入式芯片存储器的测试方式,用于测试存储器工作是否正常。芯片内部有一个BIST Controller,用于产生存储器测试的各种模式和预期的结果,并比较存储器的读出结果和预期结果。MemBIST可分为RAMBIST和ROMBIST。目前较常用的存储器BIST算法有March算法及其变种。业界常用的工具有Mentor Graphics的MBIST Architecture。
2.1.1 RAMBIST测试结构
用RAM实现的数据Cache和指令Cache均使用普通的BIST方法。因为这两个RAM的结构完全相同,因此为了减少面积消耗,只使用一组测试电路。在测试时有外部信号TE0、TE1分别控制RAM1、RAM2是否处于测试状态,TE0、TE1不能同时有效。测试电路结构如图1所示。
图1 RAM可测性设计结构图
控制器在外部输入信号BIST的控制下,产生读写控制信号、访问地址和测试码,对RAM的相应数据进行压缩分析,并将得到的特征值与存放在芯片中的标准特征值比较。通过两个I/O口报告测试结果,还实现了初步的故障诊断功能。当发现有故障时,通过TAP控制器,可以将出错的地址移出芯片,为进一步的故障诊断和修复提供信息。
2.1.2 ROMBIST测试结构
通常使用循环冗余校验(CRC)电路实现ROM的测试,这种方法虽然测试结果很可靠,但是需要逐位读取信息,而对ROM的访问是每次32位,如果使用该方法则需要一个缓冲机制,并且速度会很慢。在此仍使用RAM测试中并行的数据压缩,故障覆盖率能够达到要求,测试电路也比CRC电路简单。测试电路如图2所示。
BIST测试信号由TAP控制器的TDT口输入,是整个测试电路的使能信号,测试过程经过触发后,完全在电路内部完成,结束后通过一个I/O口报告测试结果。多输入寄存器(MISR)作为TAP控制器的数据寄存器,测试初始化时设置为初始状态。
图2 ROM可测性设计结构图
2.2 LogicBIST
LogicBIST方法是利用内部的向量产生器逐个地产生测试向量,将它们施加到被测电路上,然后经过数字压缩和鉴别产生一个鉴别码,将这个鉴别码同预期值进行比较。LogicBIST通常用于测试随机逻辑电路,一般采用伪随机测试图形生成器来产生输入测试图形,应用于器件内部机制;采用MISR作为获得输出信号产生器。由于MISR的结构和多输入序列的鉴别码的固有特点,这是一个多对一的映射关系。不同的输入序列通过MISR之后可能产生相同的鉴别码,这被称之为alias。
LogicBIST测试只能得到芯片能否通过测试的结果。一旦芯片不能通过测试,该如何确定芯片内部的故障点在何处呢?这就是诊断工作,不过LogicBIST对故障诊断的支持太弱,如果一块芯片未能通过,单单凭错误的鉴别码是很难确定故障点在何处的。有时会出现芯片内部多个故障点的共同作用使得鉴别码反而是正确的现象,这被称之为漏测试。它产生的概率非常小,也有算法来尽量减小漏测试发生的概率。其中一种方法是将正确的序列输入,和正确的鉴别码作单一映射,其他的错误输入一定得到错误的鉴别码。这种方法对MISR、PRRG以及CUT都需要具体分析,以改变其结构或者PRPG的生成顺序。
结语
本文介绍了SoC片上嵌入式微处理器核可测性技术的研究现状;介绍了设计时在电路中植入相关功能电路,用于提供自我测试功能的技术,以降低器件测试对 17自动测试设备(ATE)的依赖程度。BIST技术可以实现自我测试,也可以解决很多电路无法直接测试的问题(因为它们没有外部引脚)。可以预见,在不久的将来即使最先进的ATE也无法完全测试最快的电路,这也是采用BIST的原因之一。但是BIST也存在一些缺点,如额外的电路会占用宝贵的面积,会产生额外的引脚和可能出现测试盲点等。BIST技术正成为高价ATE的替代方案,但是目前还无法完全取代ATE,他们将在未来很长一段时间内共存。