Design for Test with DFT-MAX Adaptive Scan in low power design
Hao Zhang; Wally Li;
Beijing Vimicro Corporation
Abstract
ATPG test cost increases greatly with the increasing of SOC design size. Reducing ATPG test cost is a very important aim for designers. Another challenge is how to generate test structures in low power design. Muti-vdd and active clock-gating has become standard technology in lower power design. And the same time it brings some difficulty to design for test. The article gives an overview about design for test in low power design with Synopsys DFT-MAX adaptive scan technology.
1.0 引言
随着SOC系统规模的不断提高,传统的扫描链测试方法的测试成本越来越高。由于在传统的扫描链测试结构中一条扫描链占用一组输入输出管脚,所以随着芯片规模的扩大,扫描链长度较长,测试所需的测试向量和时间都比较长。另外为了降低功耗的多电源设计也给扫描链插入带来了困难。本文结合一个规模较大的多媒体芯片的设计,对DFT-MAX在深亚微米低功耗SOC设计中的应用进行了初步的探讨。也根据笔者的经验对低功耗SOC设计中的DFT (Design for test) 设计提出一些建议,具有一定通用性。
2.0 DFT-MAX adaptive scan介绍
2.1 DFT-MAX adaptive scan含义
为了减少测试所需的时间和成本,Synopsys DFT-MAX 使用了一种并行扫描链结构,缩短链长,并且可以根据设计需要自如的选择压缩比率。
2.2 DFT-MAX adaptive scan机制
DFT-MAX集成于Synopsys综合工具Design Compiler 0509版本之中。DFT-MAX在指令方面与之前的DFT Compiler xg mode 相比变化不是很大,本文不做赘述。DFT-MAX主要增加了Adaptive Scan的DFT方式(compression mode)。与通常的DFT方式(internal mode)相比,Adaptive Scan通过使用并行扫描链结构大大减少了测试向量,减少了测试时间。由于Adaptive Scan可以自行插入扫描链的串行并行转换逻辑,使得DFT流程可以兼容于通常的DFT流程,不必有大的改动。Adaptive Scan另一个特点是它的串行并行转换电路都是使用组合逻辑电路,没有时序逻辑单元,不必专门为插入的测试逻辑考虑时钟平衡问题。最后Compression mode 和Internal mode之间可以切换,这一点在测试debug的时候十分有帮助。
3.0 使用DFT-MAX adaptive scan 插入 DFT结构
Figure 1 – Architecture of low power multimedia design
3.1 本设计的结构
本项目是一个多媒体SOC系统,结构复杂,设计形式多样,规模较大。在引入Synopsys DFT-MAX adaptive scan的DFT结构后,大幅度的减少了测试向量和测试时间。下图是该项目的大致结构框图。其中包括ARM,USB PHY(physical interface),One-T sram等硬核。由于本设计十分注重降低功耗,所以使用了muti-vdd和active clock-gating的技术。
系统功能较为复杂,这里只对DFT相关的一些结构进行描述。
a. ARM在整个系统中处于核心地位通过两组AHB 总线与其他模块相连。
b. USB PHY是一个数模混和硬核,有一组与数字 逻辑相连的功能接口。
c. 所有memory包括One-T sram、6T sram、rom 都处于Memorytop这个层次下,并分组拥有各 自的memory bist逻辑。
d. 整个系统分为两个电源区域,其中PMU(Power Manage Unit)处于始终供电状态。而其他数字模 块处于另一个电源区域,可以根据功能需求关闭 电源以降低功耗。在这两个电源区域之间使用iso late单元进行隔离。
e. 所有的功能时钟都是由PLL分频得到的,在测试 模式下使用外供时钟代替。
在这样一个多电源域 的设计结构中,所有跨电源 域的信号都需要使用iso -late cell进行隔离。这对于插入DFT结构是一个难 题。为了避免因为插入DFT结构造成大量的跨电 源域的连线,我们根据电源域划分了两个DFT结构,并在顶层接连起来。其中compression_mode是用来选择compression mode和internal mode两种测试模式的管脚。
如下图所示的PMU和CORE属于不同的电源域,这两个部分各有一个DFT结构。其中由于PMU中的寄存器较少大约1040个左右,而CORE中的寄存器大约有48000左右。为此我们为PMU划分2组扫描链链IO,在PMU中使用常规扫描链结构,共两条扫描链,链长约为520。而在CORE中使用adaptive scan结构。分配14条扫描链IO,100条子链。压缩比为1:7。这两组DFT结构分别与PAD相连。这样我们可以很好的控制跨电源域的连线,避免插入DFT结构时对电源隔离的破坏。
Figure 2 – DFT construction of low power multimedia design
3.2 DFT设置
a. 配置DFT时除了常规的DFT设置(如设置DFT时 钟,信号,报告等)外还需要增加以下一些设置。 首先需要指定打开压缩模式。
set_dft_configuration -scan_compression enable
b. 设置最小压缩比率为6。由于DFT-MAX的实际压 缩 比率约为设置比率的1.2倍,所以,实际压缩比 率大约为7。
set_scan_compression_configuration-minimum_compression6
c. 接下来选择compression_mode作为测试模式选择 管脚。
set_dft_signal -view spec -type TestMode – active_state 1 -port PAD_CMP -hookup_pin {u_pad_ctl/compress_mode}
d. 由于本设计有较复杂的功能时钟结构,所以在扫描 链插入时选择enable internal clock,mix clock的 设置。在跨时钟域的位置插入lock-up latch。
set_scan_configuration -clock_mixing mix_clocks
set_scan_configuration -add_lockup true
e. 本设计使用了动态门控时钟的技术,插入了用于时钟 门控的gating-cell。为了识别这些门控单元,在设置 DFT时除了要设置DFT时钟,还需要创建用于识别 gating-cell的时钟。由于在本设计中在DFT测试模式 DFT时钟就是gating-cell的时钟,所以创建如下时 钟。并为识别gating cell作出以下设置。
create_clock -period 50 PAD_XCLK_xc -name PAD_XCLK_xc
set test_drc_ungate_clocks true
set test_ungate_internal_clocks true
f. 设置gating cell的控制信号和控制位置
set_clock_gating_style -positive_edge_logic {integrated} -control_point before -control_signal scan_enable
g. 识别gating cell和report gating cell
identify_clock_gating
report_clock_gating -verbose -gated -ungated – gating_elements
h. 最后需要根据不同的测试模式生成不同的SPF (compression mode and internal mode)。
write_test_protocol -out ../spf/internal.spf -test_mode Internal_scan
write_test_protocol -out ../spf/compression.spf -test_mode
ScanCompression_mode
3.3 DFT插入的结果
由于使用了两个DFT结构,我们在实际操作中是分别进行DFT插入的。在插入过程中对不需要插入的部分加上don’t touch的属性,就可以进行分别的处理。下图是对core进行DFT插入的报告,未包含PMU。其中
Figure 3 – summary result of DFT insertion with compression mode
工具自动插入compression mode所需的测试逻辑。用户可以报出compression mode和internal mode的测试链结构。用户还可以在网表中查看到子链结构和compression mode选择逻辑的相关信息。在此不做赘述。
3.4 生成测试用SPF
由于本设计分别进行两次扫描链插入,所以生成了两个SPF。为了生成最终全芯片的SPF,还需要对这两个SPF进行处理。可以使用Synopsys提供的spfgen工具,也可以在core的spf中添加PMU相关的部分。由于两次生成的spf的pad结构是一样的,只是扫描链结构不同。可以将PMU的扫描链结构分别加入到core的compression mode和internal mode的SPF中,可以得到全芯片的两种测试模式的SPF。
3.5 使用TMAX生成测试向量
为了支持compression mode,需要使用TMAX 0509以后的版本。
使用TMAX载入插入扫描链后的网表,读入测试用的SPF。生成测试向量,并计算测试覆盖率。下图是最终的结果。
Figure 4-summary result of ATPG of compression mode
全芯片的测试覆盖率达到97.19%,DFT-MAX插入的相关逻辑的覆盖率如下,可见测试逻辑本身的覆盖率非常高。
Figure 5 – test coverage of compression logic
下面是internal mode的最终结果。
Figure 6-summary result of ATPG of intermal modes
经过比较可得,compression mode的测试向量稍多,但由于并行扫描链长度很短,总测试向量和测试时间都大大缩短。压缩比率约为6 : 1。由于在本设计中,链长主要由PMU的两条链限制,所以如果对PMU的扫描链结构进行优化,可以进一步提高压缩率。
4.0 测试覆盖率的提高
由于本设计结构比较复杂,有很多地方都会对测试覆盖率有影响。下面主要结合本设计对覆盖率的提高做出一些探讨。
提高测试覆盖率主要要提高设计的测试可控性和可观查性。
1. 在本设计中由于使用了AMR和USB PHY这两个IP 硬核,由于这些硬核的输出在测试模式下不可控,形成了一些与这两个硬核相关的一些阴影逻辑,影响了测试覆盖率。例如本设计中USB PHY的数字输出经过多级组合逻辑后才由寄存器寄存,在测试模式中这一段组合逻辑就不能被测试到。解决的办法是在扫描链测试模式下将硬核的输入输出转接到寄存器上,这样可以消除阴影逻辑的影响。在本设计中,通过对ARM的两组AHB总线和USB PHY的UTMI接口的调整,使测试覆盖率提高了约1%。
2. 本设计为了方便FPGA测试和芯片调试,定义了32位debug IO结构。其大致结构如下,每一个功能模块都有一组debug总线,最后通过多路选择器输出到PAD。由于这组debug总线在量产封装中是不会封装出来的,所以我们将其从SPF中去掉。但这样debug IO的输出变成不可观测的,所以需要在扫描链测试模式下将debug IO连接到可观测的IO上。由于本设计中debug逻辑比较多,如果不对debug IO进行处理将会损失约5%的测试覆盖率。
Figure 7 – optimization about debug pins to improve test coverage
3. 在本设计中使用很多memory,包括registfile,6T-sram,oneT-sram。这些memory都有memory bist逻辑。在扫描链测试时,我们发现memory bist逻辑的测试覆盖率很低,大约只有40%。由于本设计中memory很多,所以bist逻辑所占比例不小,对整个芯片的测试覆盖率影响很大。经过分析发现bist逻辑的大致结构如下。bist_select、bist_run、bist_result_en是memory bist控制信号,在scan模式下被置为0。scan_mode是bist逻辑用来开启bypass逻辑的信号,只在scan模式下有效。bypass逻辑在scan模式下将memory的读写控制信号、地址、读写数据信号连接到寄存器上,这样在scan模式下使得memory的读写控制信号可测。可见这个bist结构在scan模式下虽然不影响memory读写控制逻辑的测试,却由于bist_select、bist_run、bist_result_en始终为0,不能对大部分bist逻辑进行测试。为此我们稍做改进,将bist_select、bist_run、bist_result_en通过寄存器控制,这样在scan模式下,ATPG可以控制bist_select、bist_run、bist_result_en这几个信号,可以开启bist逻辑,从而达到提高覆盖率的作用。通过修改使得bist逻辑的覆盖率由40%左右提高到92%,使芯片整体覆盖率提高了3%。
Figure 8 – Analysis of memory bist logic structure
总的来说,覆盖率的提高主要依靠对设计测试可控性和测试可观测性的提高。
5.0 低功耗设计中DFT的总结
a. 低功耗设计中使用的muti-vdd的技术会给扫描链 的插入带来一些困难。因为扫描链在跨越不同的电 源域的时候需要进行隔离。
b. muti-vdd同样也会给后端进行扫描链reorder带来 困难。
c. 通常为了在多电源域的设计中减少跨电源域的扫描 链结构,可以对不同的电源域分别插入扫描链结 构,在顶层中连接起来。
6.0 DFT-MAX的一些特点
a. DFT-MAX 要求xg mode,由于xg mode比db mode对内存的占用小很多,对于规模较大的设计 十分有帮助。
b. DFT-MAX adaptive scan使用内部并行扫描链结 构,使得链长得到压缩,常用的压缩比率约为3-50。
c. 由于Adaptive scan插入的测试逻辑都是组合逻辑 电路,所以不必为测试逻辑考虑时钟平衡的问题, 对于布线延时较大的设计比较有利。
d. DFT-MAX不需要对流程作大的改动,兼容于DFT- Complier的流程。
e. 目前DFT-MAX adaptive scan有最少scan chain 的要求,一组adaptive scan的DFT结构需要至少 5条扫描链。
7.0 总结和建议
DFT-MAX adaptive can通过并行子链的结构达到缩短链长的目的,通常可以达到10-50倍的压缩率。由于在ATPG测试中测试时间除了与pattern长度有关,还与pattern load reload,以及上电复位等过程有关。而这些过程的时间通常是很难减少的,所以更高的压缩比率获得的收益率变化不是很大。所以adaptive scan的压缩率相当的实用。
本设计中由于PMU中链长较长,成为压缩的瓶颈。如果对PMU的DFT结构进行优化可以使得子链长度进一步缩短。由于DFT-MAX adaptive scan最少需要5条扫描链,所以在PMU的结构中未能使用adaptive scan。
覆盖率的提高主要需要提高改善设计的测试可观测性和测试可控制性。由于设计千差万别,所以需要具体分析。
8.0 References
DFT Compiler User Guide Vol. 2: Adaptive Scan (XG Mode)
DFT Overview User Guide (XG Mode)
DFT Compiler User Guide Vol. 1: Scan (XG Mode)



