随着手持设备的兴起和芯片对晶片测试越来越高的要求,内建自测试的功耗问题引起了越来越多人的关注。本文对目前内建自测试的可测性设计技术进行了分析,并提出了折叠种子优化降低节点峰值功耗模型,通过调整种子结构和测试向量的相关性的办法来避免过高的SoC 测试峰值功耗。采取了屏蔽无效测试模式生成、提高应用测试向量之间的相关性以及并行加载向量等综合手段来控制测试应用,使得测试时测试向量的输入跳变显著降低,从而大幅度降低节点的峰值功耗。实验结果表明,该方案可以有效地避免BIST并行执行可能带来的过高峰值功耗。
引言
随着深亚微米(DSM) 和超深亚微米(VDSM) 技术的应用,电路规模不断增大、复杂程度不断提高,电路测试变得十分复杂和困难,单凭改进和研究测试生成方法已无法满足对测试的要求。可测性设计技术已成为集成电路设计中越来越重要的环节之一。系统芯片(system-on-chip,SoC) 的出现给集成电路测试带来了多方面的挑战, 测试功耗就是其中最重要的一个方面,这是因为测试模式下电路的功耗要远大于正常工作时的功耗:
·在工作模式下测试电路是不工作的,而在测试 模式下这部分电路要产生一定的功耗;
·为了提高测试效率, 测试向量要尽可能引起电路内部节点逻辑值的翻转, 而在工作模式下每个时钟周期仅有部分节点发生翻转;
·为了节 省测试时间,SoC 芯片常采用并行测试方法。测试功耗过高将产生多方面 的不良影响,如芯片封装成本的增加、成品率和可靠性的下降等。
扫描测试作为应用最广泛的可测性设计方法,它的测试功耗问题备受关注。以前主要通过降频测试的方法来降低扫描测试功耗;但SoC 芯片对测试时间、故障覆盖率等方面的要求使得降频测试方法不再适于解决测试功耗问题,这主要是由于:
·SoC芯片的测试向量集十分庞大,采用降频测试将导致测试时间开销和测试成本无法忍受;
·降频测试将导致SoC 芯片中某些故障变得不可测,引起故障覆盖率的下降。
为此人们开始研究其他降低扫描测试功耗的方法并取得一些显著成果:采用面向功耗优化的测试向量生成算法来产生测试向量;通过改变加载到待测电路测试向量的次序来减少测试模式下电路内部节点的翻转;控制测试时钟触发寄存器的方式来降低测试功耗等。
内建自测试(BIST)技术和峰值估计模型
内建自测试(BIST)是一种由硬件本身执行完成的可测性设计技术。随着现代设计和封装工艺的快速进步,使得外测试变得非常困难,BIST已经成为解决VLSI测试问题最有前途的解决方案。BIST技术以其众多的优势而闻名,例如,增强的可测性;支持at-clock-speed测试:对ATE需求的减少和在系统维护中的支持;此外,随着基于核的SOC设计的出现,BIST代表着最受欢迎的测试方法中的一个,因为它允许设计的知识产权保存。
内建自测试结构
最基本的BIST结构有三部分硬件模块组成,如图1所示。
图1 BIST硬件结构模型(略)
测试生成模块(test generator)为待测电路CUT( Circuit Under Test)生成测试矢量。响应分析器(response analyzer)压缩并分析测试响应来确定待测电路是否有故障。BIST控制器(BIST controller)是控制BIST运行的中心单元。在BIST的系统层次中,BIST控制器存在于电路的任何层次,如模块层、芯片层、电路板层和系统层。每一个BIST控制器负责所在层次上的子测试,对下一级BIST自测试的控制以及对上一级BIST自测试的报告。
峰值功耗
CMOS 电路的功耗可以分为静态功耗和动态功耗。其中静态功耗是由于漏电流等引起的,而动态功耗则是由于节点翻转时的短路电流和对负载电容的冲放电引起的。一般而言,CMOS电路的动态功耗占据其功耗的大部分。节点i在一个时钟周期内的功耗Ei表示如下:
公式(略)
其中Ci是节点的负载电容,Si是节点一个周期内翻转的次数,Vdd是电源电压。近似的来说,节点的负载电容和其扇出Fi成正比。因此可以得到Ei近似表达式:
公式(略)
其中Co表示单个扇出平均负载电容。因此要计算该节点的功耗,只要计算上式中的可变部分SiFi(称之为Weighted Switching Activity,WSA)即可。其中Si可以通过逻辑模拟得到,而Fi可以从电路的逻辑结构中提取出来。假定相邻的两个测试矢量Vk-1和Vk,则相临的测试向量对TPK=(Vk-1,Vk)所消耗的功耗:
公式(略)
其中i遍历电路中的每一个节点,S(i,k)则表示TPK引起的节点i翻转率。假定BIST的测试矢量集TS长为L,则可以用WSAmax来衡量BIST的峰值功耗:其中K遍历整个矢量集。
折叠种子优化WSAmax
通过门级峰值功耗的分析,峰值功耗可以用WSAmax来衡量的,即峰值功耗与Si和Fi的乘积以及节点i的翻转次数有关,在测试过程中WSAmax是节点i上峰值功耗的唯一变量,为了降低节点i上的峰值功耗,本文通过折叠种子来改变相邻测试矢量相关性,过滤无用测试矢量,从而达到优化WSAmax目的。
折叠计数器的工作原理简介
折叠计数器是一种可编程的约翰逊计数器,其状态序列的生成,可以通过对线性移位寄存器(LFSR)的反馈电路编程来实现;也可以根据同一个初始状态,规则的翻转其状态位来获得。当折叠计数器从一个初始状态S∈{0,1}n开始,产生一个n+1状态序列S=F(0,s),F(1,s),…,F(n,s)。其中状态F(i,s)能够根据初始状态S执行多次翻转后推导出,翻转仅仅由位置j和状态距离值i确定。由下式给出翻转函数。
公式(略)
折叠序列计算公式:F(i,s)=(?inv(1,i)s1,?inv(1,i)s2,…,?inv(1,i)sn)
s=(s1,s2,…,sn)(0≤i≤n)
折叠计数器的控制过程:折叠种子送入LFSR,由折叠控制器(主要由折叠距离计数器、比较器、两输入的多路选择器和位计数器组成)通过异或门控制对初始状态的翻转,实现翻转函数inv(j,i)的功能;异或门的输出连至被测电路(CUT)的扫描链,从而将折叠种子展开称n+1个测试应用序列。
折叠计数器的主要特性:
·一个折叠种子可以生成n+1个折叠计数器序列,每间隔一个序列的两个序列只有一位不同,最后两个相邻序列仅最后一位不同。
·利用折叠关系可以对任何一个测试集构造一个较小的折叠种子集。
·折叠种子的展开可以依次连续生成,也可以通过赋给折叠距离计数器的距离值,选择生成对应的序列。
低峰值功耗种子折叠
使用双种子压缩方案,就是利用折叠计数器特性对确定的测试集TD 进行压缩的。它先将TD 压缩成折叠种子集,再对每个折叠种子运用 LFSR 编码成该寄存器种子;当每个种子展开时,必须将一个完整的折叠计数器状态序列生成出来;这样存在以下问题:不同种子所产生的测试序列之间包含大量的无效和冗余的测试序列,且测试序列间跳变频繁,同时测试序列又串行移入扫描链,势必增加CUT 中各节点的跳变,从而导致测试功耗过大。因此,删去无效和冗余的测试模式,降低测试模式间的输入跳变,是方案有待改进的问题。根据以上分析,本文结合先前的测试方法提出了一种新的控制策略。如下所述:
由于TD是一个确定的测试集,在构造最小折叠种子集的过程中,每个种子所生成的折叠计数器序列中包含确定的测试模式数是已知的,并且对应的折叠距离值也是确定的。因此,只要确定了所有的种子及其对应的有效折叠距离值后,依据折叠计数器特性,就可生成确定的测试集TD,从而避免了大量无效和冗余的折叠序列的生成,同时对有效应用模式重新排序后,并行加入扫描链,使得输入跳变大幅度降低,从而达到降低功耗的目的。下面给出每个折叠种子与其折叠距离值的对应关系。首先,按照每个种子对应的确定折叠距离值分组一一对应种子排列,用 每个种子对应距离值的个数来控制每组距离值的装载。具体的数据结构关系见图2,其中折叠种子用si(1≤i≤k)表示,种子对应的确定折叠距离数用mi(1≤i≤k)表示,具体的距离值用FDij(1≤i≤k,1≤j≤mi)表示。
图2 折叠种子与折叠距离的关系(略)
如表1所示,一个折叠计数器生成一个完整的折叠序列的例子其中每个状态序列可由初始种子S=0110、位置值j、距离值i来确定。折叠距离i决定生成的是那个状态序列,翻转函数值的奇偶性性决定那个状态位是否翻转,如果翻转数是奇数,对应生成的状态翻转,否则不变,下面是折叠计数器生成的原始序列和改变顺序后的序列的比较。
表1: 计数器生成的原始序列和改变顺序后的序列的比较(略)
比较结果表明计数器生成的原始序列之间的相关性不大,但改变顺序后的每相邻序列之间只有一位不同,这就大大降低了节点的翻转次数,从而能降低节点的峰值功耗。
下面给出本文总体方案:
(1)针对硬件故障Fhard 测试集,构造一个最小的折叠种子集。
(2)利 用LFSR 对每个折叠种子实施编码,获得一个小的LFSR种子。测试期间经过LFSR 解压还原成折叠种子。
(3)折叠距离值的选择与折叠距离数的统计。删除在折叠集中无效和冗余的折叠距离值,最终获得的折叠距离值与硬故障集中测试模式是一一对应的。
(4)按数据结构(si,mi,{FDi1,FDi2,…,FDimi})排列种子、折叠距离数以及对应的折叠距离值。
(5)按最小输入跳变原则对上述数据结构中的折叠距离{FDi1,FDi2,…,FDimi}进行重新排序;测试时将测试模式并行加入扫描链。
本文提出的解压结构如图3所示。
在此结构中,不同于原方案的是,添加了一个折叠距离数计数器和移位寄存器,折叠距离数计数器用以控制装载和 更换种子及对应的折叠距离值。这里仅生成有效测试模式的排序序列,而不是生成折叠种子的完整序列;同时移位寄存器的添加使得测试向量并行加入扫描链,这将会非常有效地降低测试峰值功耗。实验表明该方案的峰值功耗只是原方案的2.37%,故本文结合先前方案而提出折叠种子优化WSA_{max}是一个切实可行的降低节点峰值功耗的优秀方案。
比较验证
本方案采用 ISCAS-89和ISC AS-85 组合逻辑电路部分做了一系列实验,其中,仅对那些 在10,000 随机模式应用之后,仍然存在不可测故障电路进行了分析,并将结果与双重种子压缩方案进行比较,如表2所示。
方案生成了每个种子的所有折叠序列,而本方案仅仅生成折叠序列中有效测试模式的排序序列,测试时间及功耗均大幅度降低;虽然在测试数据存储方面,本方案要比原方案占用的内存稍多一点,但尤其突出的是本文建议的方案,在相同故障覆盖率的条件下,平均输入跳变仅为原方案的2.37%,测试功耗显著降低,这对复杂的系统芯片SoC 测试将是十分宝贵的。
结束语
本 文提出了一种降低节点峰值功耗的BIST 方案,它针对原方案测试时间过长,测试矢量过多,节点峰值功耗过高的缺点加以改进:降低应用测试模式数,提高应用测试向量间的相关性,并行加载测试向量,从而大幅度降低节点峰值功耗。实验结果表明,本文提出的方案不仅能够大幅度降低节点峰值功耗,而且有效地节省了测试应用时间,是一种测试硬件开销与测试功耗得到有效平衡、更加实用的测试方案。 |