2. 清华大学 计算机科学与技术系, 北京 100084
2. Department of Computer Science and Technology, Tsinghua University, Beijing 100084, China
在数字集成电路测试领域中,基于扫描的测试是测试设计中应用最广泛的技术[1]。扫描测试中过多的跳变会使得测试功耗远远大于功能功耗,过高的测试功耗会导致芯片温度过热,从而形成能够直接损坏芯片和降低芯片可靠性的热点,降低芯片的可验证性,使芯片成品率和使用寿命降低等[2, 3]。
目前已有一些低功耗测试方法,主要可以分为以下3类:第一类是低功耗自动测试向量生成(ATPG)[4, 5]的方法,这些方法通过减少扫描输入和扫描输出向量的移位信号跳变来降低移位功耗,但是这些改变ATPG的低功耗测试方法会引起复杂的计算;第二类是跳变屏蔽法[6, 7, 8],这些方法通过在触发器输出端加入屏蔽控制逻辑来屏蔽掉电路测试输入端的跳变信号,从而降低整个移位阶段的跳变活动;第三类是扫描分段[9, 10, 11, 12]把所有扫描链拆分成多段,每段使用独立的时钟信号,在一个时钟周期内只激活其中的一个扫描分段来达到降低功耗的目的。但是这3类方法都需要在捕获阶段激活所有的扫描链,进而产生过高的峰值功耗。
本文针对传统扫描分段方法中动态功耗过大的问题,提出了一种可控功耗扫描分段结构。这种结构可以大幅降低多扫描链测试的移位功耗和捕获功耗。同时实现了一种用来检测电路中逻辑依赖的算法,该算法可以通过不断优化触发器分组来降低测试中的跳变。在结构分段时,首次提出了同时考虑电路结构依赖和时钟树影响的方法。该低功耗结构和扫描分组算法可以使测试中同时跳变的触发器最少,解决动态功耗过大的问题。
1 可控功耗扫描分段结构本文提出的可控功耗扫描分段结构见图1,该结构主要是由移位寄存器、移相器、扫描分段组结构和功耗控制单元组成。本文将所有的扫描链拆分成多段。在每一个移位周期内只激活一个分段,且只把该激活分段的测试向量移位进相应的扫描链,同时移出这些扫描链捕获的上个测试周期的响应数据。在每个捕获周期内也只激活一部分分段组来捕获响应数据,通过多个捕获周期,各个分段依次捕获测试响应数据。图1中n和k分别表示扫描链的条数和扫描分段数。因为不管是移位周期还是捕获周期都只激活其中一部分分段,所以该结构可以大大减少电路测试时同时跳变的节点,降低峰值功耗,从而避免芯片温度过高、电压噪声产生和电源电压下降等问题。
图2给出了功耗控制单元的结构。该结构实现了在同一条扫描链中的扫描小段共享一条扫描输入通道,且在一条扫描链下属于不同分段组的扫描小段拥有各自独立的时钟信号。当电路处于测试模式时test信号被置为1,当电路处于功能模式时test信号被置为0。当进入移位周期时,通过寄存器COUNS的值来选择被激活的分段组,同时使能信号处于逻辑1值,经过多个移位周期完成测试向量的输入。当测试进入捕获周期时,通过寄存器COUNC的值来激活相应的分段组,同时扫描使能信号处于逻辑0值,这些激活的分段组捕获其需要的测试响应数据。COUNS每经过d个移位时钟往后移位一次,其中d是所有小分段中最大深度。COUNC的输入端连接解码器DEC,每一个输出端连接一个与门。在移位周期只激活其中一个扫描分段组,使得电路中同时跳变翻转的触发器能够大大减少。图3中通过COUNS来产生不同组的激活信号,其中clk0、 clk1、 clk2和clk3这4个时钟信号分别控制4个分段组。当test信号和使能信号处于逻辑1值时,通过clk0、 clk1、 clk2和clk3依次作用在相应的分段组上,完成各个分段组的移位扫描。当所有的测试向量都移位到相应的扫描单元后,功耗控制单元置扫描使能信号为逻辑0值,测试进入捕获周期。
在捕获周期首先设定在1个测试周期内有g个捕获时钟,每个捕获时钟激活i组分段,并把这些预设值保存进COUNC。可控的多捕获时钟周期是该分段扫描结构与现有低功耗结构最大的不同。图4中依次捕获测试响应的方法不仅可以大大降低电路中同时跳变的单元,并且可以精确地控制具体跳变的触发器数量。现有的单捕获时钟方法必须在1个捕获时钟内激活所有分段组,而该可控功耗方法在1个捕获周期内可以激活i(1≤i≤k)组不同数量的分段组。
2 扫描链分段及分段组合本文提出的移位周期和捕获周期都可控的分段结构需要保证测试时的数据有效性,即在移位数据作用于电路之前不会被测试响应数据所覆盖。为此本文首先分析整个电路,找到电路中触发器之间的相互依赖关系,利用它们之间的依赖关系将其拆分成平衡的扫描小段;然后利用基于时钟树的方法识别出相互冲突的扫描小段;最后将各个小段组合成最终的扫描分段结构。
2.1 扫描链分段本文先给出以下定义:
定义1 如果在逻辑电路中触发器B是触发器A的一个直接可达后继,那么触发器B依赖于触发器A。
定义2 触发器之间的依赖性具有传递性,即:如果触发器B依赖于触发器A,并且触发器C依赖于触发器B,那么触发器C也依赖于触发器A。
定义3 如果触发器B依赖于触发器A,同时触发器A也依赖于触发器B,那么触发器A和触发器B之间存在相互依赖关系。
以图5为例来说明如何利用触发器之间的关系进行分段。将电路抽象成对应的有向图,并把电路分成了5个集合,图5中每个节点表示电路中的一个触发器,从节点FF1到节点FF2的有向边表示触发器FF1依赖于触发器FF2。任意2个触发器之间存在相互依赖关系,那么它们将被置于同一个集合中,可以在同一个捕获时钟内被激活,如果这些有相互依赖关系的触发器不在同一个捕获时钟内捕获其测试响应数据,那么它们得到的捕获数据是无效数据。例如:节点FF20 —FF27在一个集合内是因为它们两两之间都存在依赖关系。如果它们中的任意一个节点在其他节点之前捕获了测试响应数据,那么它们得到的数据都将是无效的。从0开始对图5中每个集合赋予一个捕获序列号,只要各个集合中的触发器按照捕获顺序号来捕获测试响应,就能够保证这种分段结构最后得到的测试响应数据有效。同时为了达到平衡分段,本文预设每段中的最大节点数。但是,按照电路逻辑依赖来进行分段时,可能会出现一个集合的节点数超过了最大限制,这种情况下把这种超过限制的集合拆分成小集合,以满足集合最大限制的要求,并且这些新的小集合依旧保持原先的捕获顺序号。以图6为例,当集合S2被拆分成S2A和S2B时,这2个新的小集合继承了集合S2的捕获顺序号“2”。
图7详细介绍了分段的过程。首先对电路进行结构分析,得到电路中触发器之间的依赖关系。接着把这些触发器分成有顺序的小段,并把超过最大限制数的小段拆分成更小的段。分段过程以迭代的方式进行。每轮迭代中,首先设定新的捕获顺序号,并且找到当前没有直接前继的或者依赖于它的节点已经被标识为完成的节点,接着把找到的新节点加入当前分段,并标识这个节点为完成。如果当前分段已经达到最大数目限制(情况1)或者与该分段中存在相互依赖的节点已全部标识为完成(情况2),则建立新的小段。如果是情况1,新的小段保持原分段的捕获顺序号不变;如果是情况2新的小段的捕获顺序号在原分段的顺序号上加1。最后形成的平衡小段都有各自相应的捕获顺序号。
2.2 基于时钟树的分段组合本节将详细介绍基于时钟树的分段组合,其核心步骤是找到时钟树在测试中的影响区域。本文改进了文[13]的方法,使其能够很好地应用在本文的分段结构中。
定义4 集合IAC(A)中的节点是位于时钟缓冲器A周围的节点,它们共同决定该区域的功耗,那么位于IAC(A)的节点受A的影响。
定义5 在时钟输入端到触发器M输入端的路径上有一系列时钟缓冲器B0,B1,…,Bq,那么触发器的影响区域为
$IMA\left( M \right) = \sum\limits_{h = 0}^q {{B_h}.} $ |
定义6 一个平衡分段组S中有触发器ff0,ff1,…,ffo,那么该分段的影响区域为
$IMS\left( S \right) = \sum\limits_{y = 0}^o {IMA\left( {f{f_y}} \right).} $ |
定义7 一个分段组合SG中有分段S0,S1,…,Sk,那么SG的影响区域为
$IMG\left( {SG} \right) = \sum\limits_{a = 0}^k {IMS\left( {{S_a}} \right).} $ |
利用权值跳变度量法WSG(SG)来估算SG的功耗:
$WSG\left( {SG} \right) = \sum\limits_{z = 0}^x {w{f_z}.} $ |
其中: x表示在分段组SG中受影响的节点数,wfz表示节点z在测试时的功耗估算,其值近似等于该节点的输出分支数加1。 分析整个电路结构后,利用上述的定义不断迭代组合各个小分段,计算出各种组合的WSG(SG),最终找到其中功耗最小的组合。计算出所有小段组合的功耗是一个NP难问题,但是,本文的分组策略只需按捕获顺序号依次组合这些小段,因此可以在很短的时间内得到一个满足顺序要求的最优解组合。图8详细介绍了分段组合的过程,首先找到最小功耗分段组合SGmin,然后把该分段组中的各个小段分别连接到不同的链上。在每次迭代中,只考虑捕获顺序号小于当前顺序号的小段,可以很快地实现最优的分段组合。
3 实验结果分析实验平台使用SUNBLADE工作站,CPU为Intel酷睿4核3.9 GHz,内存为128 GB,操作系统是Linux Redhat6.0。实验中的电路数据集来自ISCAS89、 IWLS2005和开源核netcard电路。本文利用改进的Atalanta产生测试向量集,用加权跳变度量法来估算移位跳变功耗和捕获峰值功耗。
表1为实验所用电路的基本参数,此外还给出了利用本文分段结构进行stuck-at测试的故障覆盖率。
电路 | 触发器 个数 |
输入端口 个数 |
输出端口 个数 |
故障覆盖 率/% |
S38417 | 1 636 | 28 | 106 | 100.000 |
wb | 770 | 1 129 | 1 416 | 99.611 |
usbt | 1 656 | 104 | 19 | 100.000 |
pci | 3 359 | 160 | 207 | 99.639 |
des | 8 746 | 233 | 64 | 99.893 |
ethernet | 10 554 | 94 | 115 | 99.576 |
vga | 17 079 | 87 | 109 | 99.348 |
netcard | 97 796 | 15 | 56 | 99.041 |
$\begin{array}{*{20}{c}} {面积开销 = }\\ {\frac{{新结构的面积 - 原电路面积}}{{原电路面积}} \times 100\% ,} \end{array}$ | (1) |
$功耗估值 = \sum\limits_{z = 0}^x {Tr{a_z}{C_z}} $ | (2) |
式(1)表示的是商用工具astro计算出的该结构的面积开销。式(2)是用于估算测试中的功耗公式,其中Traz表示节点k的跳变数,Cz表示节点z的电容,Cz可以用该节点的扇出数加1进行估算。本文对每个电路进行不同方式的分段测试。对于S38417、 wb和usb 3个基准电路使用5、 8和10条扫描链的结构;对于pci、 des、 ethernet和vga 4个基准电路使用10、 20和30条扫描链的结构;对基准电路netcard使用30、 50和80条扫描链的结构。利用本文提出的扫描链分段和分段组合方法将电路拆分成了各个分段进行测试,结果如表2所示。APR、 PPR和CPR分别表示测试中移位阶段的平均功耗、峰值功耗和捕获阶段的峰值功耗相比直接电路测试的降低比例。AO表示该结构的面积开销,从结果可以看出所有电路的面积开销都很小。tCPU表示进行扫描链分段和分段组合需要花费的时间。表2还给出了所有电路最好情况下的平均数值,可以看出平均功耗、峰值功耗和捕获阶段的峰值功耗比直接电路测试的都有大幅度降低,并且面积开销很小。
电路 | 扫 描 链 |
分 段 组 |
APR /% |
PPR /% |
CPR /% |
AO /% |
tCPU |
S38417 | 5 | 6 | 95.6 | 96.7 | 51.7 | 2.6 | 387 |
8 | 6 | 94.8 | 97.2 | 55.6 | 2.7 | 405 | |
10 | 4 | 87.2 | 94.3 | 38.6 | 2.1 | 411 | |
wb | 5 | 5 | 70.2 | 78.0 | 45.3 | 1.6 | 159 |
8 | 5 | 66.3 | 76.6 | 48.2 | 1.8 | 168 | |
10 | 4 | 57.9 | 71.2 | 39.7 | 1.6 | 154 | |
usb | 5 | 6 | 93.9 | 95.9 | 48.8 | 2.8 | 335 |
8 | 5 | 91.1 | 96.7 | 49.3 | 2.7 | 369 | |
10 | 5 | 90.3 | 94.1 | 49.2 | 2.9 | 371 | |
pci | 10 | 5 | 88.6 | 95.6 | 48.6 | 3.1 | 659 |
20 | 5 | 86.4 | 90.8 | 47.9 | 3.8 | 687 | |
30 | 3 | 78.7 | 90.1 | 38.7 | 3.6 | 717 | |
des | 10 | 4 | 75.5 | 78.9 | 48.7 | 2.7 | 1 045 |
20 | 3 | 69.4 | 77.1 | 40.6 | 2.9 | 1 263 | |
30 | 3 | 67.9 | 70.8 | 32.5 | 3.2 | 1 481 | |
ethernet | 10 | 3 | 57.8 | 63.4 | 35.8 | 1.8 | 2 139 |
20 | 3 | 58.7 | 68.9 | 31.2 | 2.1 | 2 346 | |
30 | 2 | 21.1 | 44.1 | 18.9 | 2.0 | 2 530 | |
vga | 10 | 3 | 48.0 | 57.6 | 30.2 | 1.9 | 5 980 |
20 | 2 | 33.3 | 50.8 | 18.6 | 2.0 | 6 175 | |
30 | 2 | 31.3 | 45.6 | 13.6 | 2.2 | 6 409 | |
netcard | 30 | 6 | 76.8 | 88.9 | 44.6 | 3.4 | 10 554 |
50 | 5 | 71.2 | 80.3 | 40.9 | 3.5 | 11 096 | |
80 | 4 | 59.7 | 71.2 | 32.5 | 3.3 | 12 872 | |
平均值 | - | - | 75.8 | 82.7 | 45.1 | 2.4 | 2 656 |
本文提出了一种可控功耗扫描分段结构,该结构可以精确地控制移位阶段和捕获阶段的功耗,大幅降低移位阶段的平均功耗和峰值功耗,同时也能降低捕获阶段的峰值功耗。还设计了高效的分析电路结构的算法和基于时钟树的分段法,实验表明该结构可以很好地降低功耗,同时可以按照用户定义精确地控制功耗,而不会增加过大的面积开销。
[1] | Zorian Y A. Distributed BIST control scheme for complex VLSI design [C]// IEEE VLSI Test Symposium. Atlantic City, NJ, USA: IEEE Press, 1993: 4-9. |
[2] | Ravi S. Power-aware test: challenges and solutions [C]// International Test Conference. Santa Clara, CA, USA: IEEE Press, 2007: 1-10. |
[3] | Chandra A, Chakrabarty K. Low-power scan testing and test data compression for systems-on-a-chip [J]. IEEE Trans on Computer-Aided Design, 2002, 21(5): 597-604. |
[4] | Cho K Y, Mitra S, McCluskey E J. California scan architecture for high quality and low power testing [C]// International Test Conference. Santa Clara, CA, USA: IEEE Press, 2007: 2-8. |
[5] | Whetsel L. Adapting scan architectures for low power operation [C]// International Test Conference. Atlantic City, NJ, USA: IEEE Press, 2000: 23-33. |
[6] | Chen Z, Xiang D, Yin B X. Segment based X-Filling for low power and high defect coverage [C]// International Symposium on VLSI Design, Automation and Test. Hsinchu, China: IEEE Press, 2009: 319-322. |
[7] | 向东, 李开伟. 低成本的两级扫描测试结构 [J]. 计算机学报, 2006, 29(5): 786-791.XIANG Dong, LI Kaiwei. A Two-Stage Scan Architecture for Cost-Effective Scan Testing [J]. Chinese Journal of Computers, 2006, 29(5): 786-791. (in Chinese). |
[8] | 何蓉晖, 李晓维, 宫云战. 一种低功耗BIST测试产生器方案 [J]. 微电子学与计算机, 2003, 03(2): 36-39.HE Ronghui, LI Xiaowei, GONG Yunzhan. A schme for low power BIST test pattern generator [J]. Microelectronics & Computer, 2003, 03(2): 36-39 (in Chinese). |
[9] | 神克乐, 向东. 基于三维芯片热驱动的扫描测试策略 [J]. 电子学报, 2013, 41(6): 1202-1206.SHEN Kele, XIANG Dong. Three dimensional ICs thermal-driven test application scheme [J]. Chinese Journal of Electronics, 2013, 41(6): 1202-1206 (in Chinese). |
[10] | Imhof M, Zoellin C G, Wunderlich H, et al. Scan test planning for power reduction [C]// Design Automation Conference. San Diego, CA, USA: IEEE Press, 2007: 521-526. |
[11] | Saxena J, Butler K M, Whetsel L. An analysis of power reduction techniques in scan testing [C]// International Test Conference. Baltimore, MD, USA: IEEE Press, 2001: 670-677. |
[12] | Rosinger P M, Al-Hashimi B M, Nicolici N. Scan architecture with mutually exclusive scan segment activation for shift and capture power reduction [J]. IEEE TCAD, 2004, 23(7): 1142-1153. |
[13] | Yamato Y, Wen X, Kochte M A, et al. A novel scan segmentation design method for avoiding shift timing failure in scan testing [C]// International Test Conference. Anaheim, CA, USA: IEEE Press, 2011: 1-8. |