DFT的低功耗设计
前言
低功耗的芯片设计是非常重要的,降低功耗最直接的目的就是延长由电池供电的电子产品的使用时间。比如手机,现在“充电五分钟,通话两小时”已是标配,如果是“充电两小时,通话五分钟”,那场景简直不忍直视;再比如电动汽车,续航里程是非常重要的竞争指标。另外低功耗的芯片可以大幅提高设备的可靠性,以及降低封装、散热系统的成本。
DFT低功耗设计的重要性
随着芯片规模和系统性能的发展,不断增高的测试功耗也给芯片测试带来了巨大挑战。在Test Mode下芯片的动态功耗往往比Function Mode时高出几倍,原因在于:
(1) 测试功耗与逻辑翻转率相关,与正常模式相比,测试模式CUT 中并行运行的模块数更多,全部节点跳变数为正常模式下的数倍,如果功耗太大,最极端的情况可能将芯片烧坏;
(2) 为提高测试质量并减少测试时间,SoC 测试中高速测试 (At-speed Test) 与并行测试的方式使得芯片测试功耗激增;
(3) 片上集成的DFT逻辑在正常工作时处于off状态,而测试时持续工作,动态功耗相对增高;
(4) 扫描测试中,在shift和capture时,会导致 CUT 发生一些不必要的翻转。
DFT低功耗设计除了解决上述问题,同时还可以降低IR drop。若IR drop太大,则会导致芯片测试驱动能力不足,以至逻辑计算出错,很容易发生漏检和误检,导致芯片良率和成品率降低。

常见的DFT低功耗设计介绍
如今,低功耗测试技术已经成为DFT领域的研究热点,近年来学术界和工业界研究人员对此做了大量的研究工作,涌现出很多低功耗测试方法与技术,主要包括以下三类:基于向量的低功耗测试技术、基于 DFT 的低功耗测试技术和低功耗测试调度技术,由于篇幅有限,以下仅介绍部分常见低功耗设计。
1、基于向量的低功耗测试技术
测试向量翻转会导致 CUT 内部节点发生状态变换,是测试功耗的主要来源,从测试向量着手的低功耗测试方法包括低功耗ATPG、测试向量X填充、测试向量重排序和测试输入控制等。
Test pattern的关心位(care bit)只占总cycle的5%-10%,而其中未指定的bit则会随机生成0/1来进行填充,若全填充0或全填充1,那么整条scan chain不会0101地 toggle,功耗因此降低。我们的pattern可能是0101序列,可以通过调整序列的方式改变为0110同样达到测试的目的同时使toggle rate降低。
基于测试向量的低功耗测试技术比较容易实现,一般不需要在CUT上添加额外的逻辑,对测试过程和待测CUT性能影响较小,对动态测试功耗优化程度比较高。但这类技术仅在测试向量层面优化测试功耗,难以控制静态测试功耗,同时由于没有充分考虑电路特性,优化空间相对有限,在降低测试功耗上难以起决定性作用,因此常作为其它低功耗技术的补充。
2、基于DFT的低功耗测试技术
基于DFT的低功耗测试技术主要通过添加或修改DFT逻辑以实现降低扫描链或电路节点的翻转,进而降低测试功耗,包括扫描跳变阻塞(Toggle Suppression)、时钟树优化、扫描链重构、电路划分和低功耗BIST等。
如图2所示,在shift期间利用AND门(或OR门)阻止SFF的值传播到组合逻辑时发生的翻转,从而降低测试功耗。

基于 DFT 的低功耗测试技术在一定程度上增加了CUT的DFT Logic开销和测试成本,可能还会延长测试时间并对CUT性能产生一定影响,但从电路层次对DFT进行低功耗设计,测试功耗优化效率非常高,实际应用较为广泛。
3、低功耗测试调度技术
并行测试可以减少SoC测试时间,但随着芯片集成度的增长,SoC芯片内嵌IP数目持续增多,各IP核并行测试所带来的高功耗和高温问题不可忽视,同时测试访问端口与总线等资源的限制亦不足以支撑所有IP核并行测试,因此需要从全芯片层次考虑SoC系统的测试调度问题。
首先介绍MBIST中的分步测试法,如图3所示,在Memory group时我们将memory进行分组,在同一组中再进行分步测试,如进行step1 test时我们可以关闭其它部分的clock来降低动态功耗,甚至可以关闭其它部分的电源进一步降低静态功耗和动态功耗。

图3 MBIST分步法
分步法同时也适用于扫描测试。如图4所示,在本例中芯片内部分为3个时钟域,分别为clock_a(400Mhz)、clock_b(200Mhz)和clock_c(100Mhz)。对于多时钟域SCAN的测试,一般来说会直接配置PLL为800Mhz,芯片内部的分频数值与Function模式保持一致,每个时钟域各自插入异步的OCC。这样做操作简单,但测Transition Fault时的capture时钟频率高,导致功耗急剧升高,将引起MOS管电性参数漂移,使得SCAN测试失败。


我们可以将OCC插在PLL后,通过分频器(clock divider)将OCC的时钟分成3个时钟域,并在分频器后加入时钟选择器(clock mux),该MUX将会为clock_b时钟域和clock_c时钟域选择对应的ATE clock或OCC clock。

图6 分步法中OCC的结构
如图7所示,在Mode0模式下, PLL配置为400Mhz,此时clock_a时钟域获得了400Mhz的clock,其余电路得到了ATE clock,由此可对模块a进行测试。

图7 分步法中Mode0示意图
在Mode1模式下,PLL配置为200Mhz,此时clock_a时钟域和clock_b时钟域获得了200Mhz的clock,clock_c获得了ATE clock,由此可在200Mhz时钟下测得模块a、模块b以及模块a与模块b交互部分电路(此时需扣除Mode0中测试到的Fault)。

图8 分步法中Mode1示意图
在Mode2模式下,PLL被配置为100Mhz,所有模块均获得了100Mhz的clock,从而可在100Mhz下对所有模块进行测试(需扣除Mode0和Mode1中测到的Fault)。

使用分步法可有效降低SCAN Transition Tset时的capture功耗,并且由于传统方法对不同时钟域之间的交互连接处测试点覆盖不全,分步法还可以增加测试覆盖率,但缺点是测试向量会增多,测试时间也会变长,导致测试成本增加。
除了分步法,还有一些其它方法可降低扫描测试过程中的功耗。在shift过程中,我们可以通过加不同数量的buffer cell这种方式将scan chains分成多个组,使得不同的scan chain在不同的上升沿toggle,这样就可以降低功耗了。

扫描测试时capture通常是同一个clock domain的capture clock同时翻转,和shift相比,capture采用高速时钟,会在极短时间内产生较大功耗。为解决这一问题,我们可以将同时capture的扫描链分开进行capture,这样就可以降低瞬时功耗。

低功耗测试调度在系统级考量SoC各芯核的测试规划,只改变测试次序,不会对各待测IP核内部测试结构产生影响,易于通过软件实现,测试硬件开销低,同时还能从整体上控制芯片测试功耗,缩短测试时间,因此在SoC芯片实际测试中使用较多。
总结
为提高测试质量与测试效率,实速测试与并行测试技术的引入使SoC测试功耗不断升高,精确功耗或温度评估模型、 有限测试资源访问冲突和多目标测试调度算法等问题仍需探索。这些难关仍需DFTer继续攻克,加油吧,工程师们。