在高度受限环境中同时使用DFTMAX与异步和同步片上时钟控制器(OCC)的用户经验
在高度受限环境中同时使用 DFTMAX 与异步和同步片上时钟控制器(OCC)的用户经验
会议: SNUG 2016
作者: Maxime Peycelon (Thales Communications & Security, France), Philippe Rossant (Synopsys France)
页数: 20
源文件: SNUG_TPC_DFT_Peycelon_Using_DFTMAX_with_both_asynchronous_and_paper.pdf
摘要
即使在引脚受限的设计中,也可能需要扫描压缩。此外,在 65nm 及以下工艺中,全速(at-speed)测试现在是强制性的,以确保所需的测试结果质量(TQR 测试结果质量)。在本文中,我们将描述在面向高可靠性应用的复杂 SoC 上,使用 DFTMAX实现异步和同步片上时钟控制器 OCC的流程。我们提供了将这些两种众所周知的 DFT 技术实现到我们自己的设计流程中所使用的方法学的详细概述,并展示了我们在当前开发的高度受限电路中遇到的多重挑战,以及这些困难是如何被克服的。
目录
1. 引言 2. 设计概述与特性 2.1 扫描压缩模式 2.2 内部扫描模式 2.3 同步/异步 OCC 处理 2.4 其他测试模式:LBIST 3. 基于核心的 DFT 方法学与流程 3.1 扫描插入以辅助核心层 DFTMAX 和 LBIST 插入 3.2 核心层异步 OCC 3.3 核心层同步 OCC 4. 基于 SoC 的 DFT 方法学与流程 4.1 SoC 层 DFTMAX 5. TetraMax ATPG 在 SSA 和 TF at-speed 中的应用 5.1 策略与流程 5.2 跳变故障的特殊性 5.3 结果与故障分级流程 6. 测试向量验证流程 6.1 验证平台生成 6.2 扫描链测试 6.3 串行模式向量仿真 6.4 并行模式向量仿真 6.5 不匹配问题解决 7. 结论与未来展望 8. 致谢 9. 缩略语 10. 参考文献
图表目录
1 引言
Thales 作为航空航天、太空、国防、交通和安全应用领域的主要参与者,是一家专注于具有高附加值的关键产品的全球性公司。在 Thales Communications & Security (TCS),我们除其他产品外,从事高可靠性通信设备的工作。更具体地说,我们的团队专门从事 ASIC 专用集成电路 设计,特别侧重 DFT 可测试性设计插入技术。
本文聚焦于以下 DFT 专题: - 核心层 DFT 方法学和插入流程 - 顶层 DFT 方法学和插入流程 - 特别是 DFTMAX、异步 OCC 和同步 OCC 的部署
2 设计概述与特性
本文中介绍的 ASIC 是一个复杂的 VLSI 芯片,面向具有嵌入式自保护机制的安全应用。顶层 DFT 原理图如下:
主要特性如下: - 工艺节点:65nm - 规模:1000 万门(等效 NAND2) - 嵌入式存储器:30 Mbit
实现了以下测试模式: - 逻辑 BIST(LBIST,第三方工具) - 存储器 BIST 及基于冗余的修复 - 内部扫描 - 扫描压缩(DFTMAX) - 同步和异步 OCC - JTAG 联合测试行动组 用于测试引脚和配置测试模式
2.1 扫描压缩模式
DFTMAX CODEC 在 DFT 中有两种行为:内部扫描和压缩。内部扫描是经典的扫描方式,扫描链数直接与专门用于 scan_in 和 scan_out 的引脚数相关。压缩模式是减少使用的引脚数并通过使用输入端解压器和输出端带 XOR 树的压缩器来增加扫描链数。
扫描压缩模式在此 ASIC 中实现是因为核心层最大链长要求不超过 256 个触发器 Flip-Flop的深度。定义这个深度是因为与扫描并行的 LBIST 需要有较小的扫描链以在可接受数量的向量内达到目标覆盖率。因此,我们必须将 1500 条内部扫描链压缩为 58 对 scan_in 和 scan_out。
在我们的 ASIC 顶层,我们将所有 1500 条扫描链开放给 LBIST。因此扫描压缩逻辑也必须在顶层实现。此外,我们的架构约束之一是给一些特定模块分配不同的 DFT 电路。因此我们创建了多个压缩器/解压器(CODEC),每个连接到核心并选择核心的哪些扫描链连接哪个压缩器。实现这一行为的方法学将在第 4.1 章中展开说明。
压缩器的控制允许在内部扫描和压缩模式之间切换,由一个 JTAG 控制的配置寄存器完成。
2.2 内部扫描模式
在 Thales,客户的要求驱使我们使用非常严格的设计规则以确保良好的可靠性。因此我们对扫描链和压缩插入使用 no_mix 选项,这意味着我们不允许不同时钟的寄存器位于同一条扫描链中。在我们的设计中存在多个时钟和复位源。这导致了高度不平衡的扫描链(从十几个寄存器到每条链数千个寄存器)以匹配有限的 58 条扫描链。因此,此模式仅在必要时在 ATE(自动测试设备 ATE)上用于调试测试。
2.3 同步/异步 OCC 处理
片上时钟控制器 OCC是 DFT 结构,用于在扫描期间在时钟之间切换。它允许用外部控制的慢时钟将所有寄存器的已知值移入,然后用功能/快速时钟产生两个脉冲以验证不存在跳变故障(制造过程中的缺陷导致更慢的时序跳变)。
这个 ASIC 是一个具有许多不同时钟的复杂芯片,其中有两个主要同步时钟驱动着大部分寄存器(大约 80%)。设计中时钟之间的交互如下图所示:
由于 clk_1 和 clk_1_div(clk_1 二分频)时钟域共享了许多信号,如果不测试这些跨时钟域,就不可能达到 99% 的Stuck-At 故障模型覆盖率或 91% 的跳变故障 Transition Fault覆盖率。因此我们决定在这些时钟之间使用同步 OCC。唯一具有同步路径的其他时钟(clk_4 通向 clk_5 和 clk_5 通向 clk_3)涉及非常少的路径(覆盖率下降约 0.02%)。为了限制对我们来说相当新技术的复杂性,我们对其余所有时钟使用了异步 OCC。
从图 4 中我们可以看出,不同 OCC 的模块之间存在同步信号。为了测试这些连接并提高测试覆盖率,我们在第 3.2 章中解释了我们是如何进行的。
OCC 控制信号(occ_bypass 用于在移位和捕获中使用慢时钟,occ_pll_test_mode 将 OCC 设置为测试模式,occ_pll_rst_n 用于复位 OCC 结构)可通过 JTAG 经由 OCC 控制,但仅限调试用途。OCC 在 Stuck-At 和 at-speed 测试中均处于活动状态。
2.4 其他测试模式:LBIST
正如我们已经看到的,在这个 ASIC 中还有其他 DFT 结构。集成最复杂的是 LBIST 逻辑内建自测试。LBIST 用于允许我们的 ASIC 在其生命期内进行自测试。此结构的实现可以示意如下:
3 基于核心的 DFT 方法学与流程
带 OCC 的扫描插入是在核心层插入的唯二 DFT 特性。压缩器、LBIST、存储器 BIST 和修复以及测试控制均在顶层插入。
3.1 扫描插入以辅助核心层 DFTMAX 和 LBIST 插入
DFTMAX 压缩器/解压器和 LBIST 插入是在 ASIC 的顶层进行的。但对于这两项 DFT 特性,必须对核心层施加强约束以辅助其插入。这些约束将在本章中描述。
3.1.1 复位处理
为了获得高扫描测试覆盖率,对于 ATE 来说能够从 ate_rst_n 输入控制所有内部复位信号非常重要。因此,使用了以下(或类似的)扫描重同步结构用于复位信号通过器件的传播:
然而,这种构造会在扫描和 LBIST 模式下创建不平衡的复位树。这在可以外部控制时钟的扫描模式下可能不是问题。但这对在功能模式下使用且不能有相同时钟控制的 LBIST 向量来说是个问题。针对 LBIST 的解决方案是在扫描期间阻断这个 ate_rst_n,并在 LBIST 阶段之前和之后断言一个没有时序问题的功能复位,以确保所有触发器在 LBIST 开始和结束时有确定的状态。
3.1.2 时钟沿管理
为了防止由 DFTMAX 或 LBIST 第三方工具插入的扫描压缩模式在仿真中出现不匹配等可能的困难,我们选择添加逻辑结构来改变下降沿触发触发器在测试模式期间的活动沿。因此,在扫描和 LBIST 模式下,所有触发器都在时钟上升沿翻转而不是下降沿。
3.1.3 X 容忍度管理
对于 TetraMAX,X 生成器(不可控的输入或触发器)会降低完全不可控寄存器或模块的覆盖率,并增加 ATPG 的复杂度,因为 TetraMax 会试图通过使用 DFTMAX 压缩器中的高 X 容忍度结构,或通过连续应用多次捕获并在其输出端获得已知值来阻断一些 X 生成器。对于 LBIST,X 生成器是被禁止的。如果一个触发器不可控,X 必须被屏蔽,以确保 X 不会污染 LBIST 签名。
为了消除所有 X 生成器,有几种技术。第一种是依赖第三方 LBIST 工具中或 Synopsys DFT Compiler 中的 X 移除功能(使用 Autofix 功能和测试点插入 TPI)。这些自动化技术可以产生以下结构:
然而,这种技术通常不考虑布局布线。用于绑定 X 的扫描单元可能远离 X 源,这将危及时序收敛 Timing Closure。
第二种解决方案是分析 DRC 检查中的 X 生成器警告,并在 RTL 中将它们移除。这种解决方案实现时间更长,但可以在后端工作中节省大量时间。使用 Synopsys 工具最有效的方法是通过 TetraMax 的 run_drc 命令识别每一个与非扫描寄存器相关的警告(例如:S19, C2, C16...),然后在 RTL 中隔离所有这些有意留为非扫描的寄存器。
对于这个 ASIC,我们手动隔离了几乎所有 X 生成器,并让 LBIST 工具管理几十个用 X 后检查验证 X 边界与后端一致的困难寄存器。
3.2 核心层异步 OCC
异步 OCC 插入相当直接。用于实现它们的脚本直接复用了 Synopsys 模板(参见 DFTMAX 用户指南)。然而,我们的一项反馈是为了简化这一插入,直接在 RTL 中插入未来 OCC 插入的包装器(wrapper),如下图所示。
3.3 核心层同步 OCC
对于同步 OCC,流程与异步 OCC 的区别不大,我们再次使用了 Synopsys 脚本模板。然而,为了保持高覆盖率,我们选择测试由不同同步 OCC 驱动的同步时钟之间的跨时钟域,如图 4 所示。
我们调整了配置 TetraMax 的 STIL 标准测试接口语言协议文件(SPF),因为 OCC 之间的跨时钟路径默认被认为是异步的。
该流程取自 TetraMax 用户指南第 11-39 章。将时钟声明为同步时钟使得这个 ASIC 在 stuck-at 故障中达到 99% 的测试覆盖率,在 at-speed 跳变故障中达到 91%。
4 基于 SoC 的 DFT 方法学与流程
在 SoC 层,我们使用了以下 DFT 方法学和流程。
4.1 SoC 层 DFTMAX
DFTMAX 在 SoC 层插入的难点是图 2 中描述的那个:必须定制扫描链分配以对应各种扫描压缩核心。在我们的设计中,假设我们需要实现 3 个压缩器/解压器。为了做到这一点,必须创建分区(partition),通过以下脚本实现:
#current_test_mode Internal_scan
set_scan_config -clock_mixing no_mix -test_mode Internal_scan
#current_test_mode ScanCompression_mode
set_scan_config -clock_mixing no_mix -test_mode ScanCompression_mode
define_dft_partition domain1 -include [list \
inst_sw_core/108 \
inst_sw_core/109 \
inst_sw_core/110 \
inst_sw_core/120 \
....... \
inst_sw_core/291 \
inst_sw_core/292 ]
define_dft_partition domain2 -include [list \
.......]
define_dft_partition domain3 -include [list \
.......]
current_dft_partition domain1
set_scan_config -chain_count 11 -clock_mixing no_mix -test_mode Internal_scan
set_scan_config -clock_mixing no_mix -test_mode ScanCompression_mode
set_scan_compression_config -inputs 11 -outputs 11 -max_length 256 -xtolerance high
current_dft_part domain2
set_scan_config -chain_count 12 -clock_mixing no_mix -test_mode Internal_scan
set_scan_config -clock_mixing no_mix -test_mode ScanCompression_mode
set_scan_compression_config -inputs 12 -outputs 12 -max_length 256 -xtolerance high
current_dft_part domain3
set_scan_config -chain_count 13 -clock_mixing mix_clocks_not_edges -test_mode Internal_scan
set_scan_config -clock_mixing no_mix -test_mode ScanCompression_mode
在我们的示例中,我们可以在脚本末尾看到我们对时钟混合采取了特别注意。在我们的设计中,DFT Compiler DRC 识别了许多不同的时钟域,按照 Thales 的设计规则,时钟的 DFT 配置必须设置为 no_mix。但这个选项仅对压缩模式是可能的。对于内部扫描模式,没有足够的 scan_in 和 scan_out 引脚来允许使用 no_mix 选项。这就是为什么我们对这些不同模式使用了不同的时钟混合策略。
名为 scan compression 的 DFT 模式通常在压缩器插入期间创建,换句话说,在使用上述脚本之后创建。在我们的 ASIC 中,有必要在此之前就声明 scan compression 模式,以便在插入之前 set_scan_configuration 确实可以对每种模式(internal 和 compression)具有针对性。以下示例展示了这种自定义多模式规范:
set_dft_signal -view spec -type TestMode -port bypass_compresseur -test_mode all_dft
define_test_mode ScanCompression_mode -usage scan_compression -encoding {bypass_compresseur 0}
define_test_mode Internal_scan -usage scan -encoding {bypass_compresseur 1}
5 TetraMax ATPG 在 SSA 和 TF at-speed 中的应用
对于 ATPG 自动测试向量生成,我们使用 TetraMax 工具,采取以下策略:
5.1 策略与流程
对于 TetraMax ATPG,我们使用 Synopsys 模板作为脚本的主干,并创建了一个测试设置来配置嵌入在我们设计中的基于 JTAG 的配置寄存器。
然而,设置有些困难,因为我们的设计包含许多模拟 IP。这些 IP 不能简单声明为黑盒,因为它们的输出配置了部分设计(全局复位、功耗隔离、石英振荡器等)。而且也没有可用于 TetraMax 的模型。
因此我们必须自行创建模型。对于大多数 IP,我们仅将输出绑定到已定义的值。对于一些 IP,创建更为困难,因为 IP 必须对动态测试设置初始化做出响应。
然而即使有了这些新模型,TetraMax DRC 仍无法通过,因为其中一个 IP 可能产生一个全局复位,TetraMax 认为 ATE_rst_n 受到破坏,不能正确控制芯片复位。简单的 add_net_connection TetraMax 命令不起作用。因此我们创建了一个特定的网表供 TetraMax 使用,其中此输出信号从模拟 IP 断开,由 ATE_rst_n 直接控制。这使我们能够通过 DRC,且仿真(基于真实网表)证明修改符合预期的行为。
5.2 跳变故障的特殊性(at-speed 测试)
Stuck-At 和跳变故障测试之间的脚本大致相同。主要区别在于时序例外(timing exceptions),它用于跳变故障测试而不用在 stuck-at 测试中。
时序例外 SDC 时序约束文件被创建以告知 TetraMax 哪些路径由于 false_paths、多周期路径或时序违反而无法进行跳变故障测试。
在我们的流程中,我们基于对综合后网表进行功能模式 静态时序分析 STA的 PrimeTime 分析创建了 SDC。首先,我们以与创建用于布局布线的 SDC 相同的方式启动 PrimeTime。但在 report_timing 分析之后,我们使用了名为 pt2tmax.tcl 的 TetraMax 脚本。
source ${script_location}/pt2tmax.tcl
write_exceptions_from_violations -delay_type min_max -output exceptions.sdc
对于流片前的布局后仿真,时序尚未由布局布线封闭。因此,对于每个布局后网表,我们使用 PrimeTime 中的 SPEF 信息创建了专用的时序例外 SDC,以从测试路径中排除时序违规。
5.3 结果与故障分级流程
在 ATPG 生成开始时,覆盖率不符合我们的预期,因为我们只能在 stuck-at 故障测试中达到 97% 的测试覆盖率。我们使用 TetraMax 分层浏览器 GUI 来理解覆盖率损失的位置。我们很快发现我们的存储器 BIST 没有被正确覆盖(约 65% 的覆盖率)。
考虑到我们的项目里程碑,不可能回到所有存储器 BIST 实例重新进行扫描插入,并且考虑到需要修改的存储器 BIST 数量,这种 ECO 不可行。因此我们研究了存储器 BIST 内部的覆盖率缺陷点,并确定通过扫描未覆盖的所有路径在存储器 BIST 测试期间已被使用。因此我们认定存储器 BIST 内的所有故障通过扫描或存储器 BIST 测试本身已被覆盖。然后我们从故障列表中提取所有存储器 BIST 故障,达到了 99% 测试覆盖率的目标。
考虑到此故障列表管理,我们获得了 stuck-at 故障 99.3% 的测试覆盖率(8000 个向量)和跳变故障 91% 的测试覆盖率(21000 个 at-speed 向量)。考虑到我们的目标,我们将结果降至 stuck-at 故障 99.3%(8000 个向量)和跳变故障 87%(7000 个向量)。
6 测试向量验证流程
对于测试向量验证,我们使用了以下方法:
6.1 验证平台生成
对于验证平台创建,我们直接使用了 Synopsys 的 stil2verilog 功能。这允许我们使用选项 -parallel N,其中 N 是时钟脉冲数。此选项生成一个用于并行仿真的验证平台,但在捕获后有 N 个移位脉冲时钟。此选项是 Synopsys 在设计中使用 OCC 时的建议。事实上,我们的经验是当我们选择 N 值为 4 时,仿真期间存在不匹配,当 N 增加到 5 时,这些不匹配就消失了。
6.2 扫描链测试
在向量生成期间,TetraMax 允许指定一个特定的链测试,除了自动添加到向量的压缩器链测试之外。
对于仿真,我们使用选项 -chain_test 0101。此选项允许生成一个移位构造为最大化跳变数的向量。这被决定用于在最佳条件 corner 下进行布局后扫描仿真期间创建 VCD。该 VCD 用于研究扫描期间的 IR Drop 电压降,换句话说,研究非常严苛条件下的动态电流下降。
对于 ATE 用途,我们使用的默认链测试选项是 0011,其中设计的跳变速率为 50%。
6.3 串行模式向量仿真
综合后仿真尤其是布局后仿真非常慢。我们仅对少量向量(15 个)进行了串行模式仿真。我们只能运行如此小数量的串行仿真向量,因为通过 15 个向量,我们已经验证了所有时钟域已通过 report_pattern -all -type 命令正确激活,并且由于并行仿真已经发现了详尽的捕获不匹配。
6.4 并行模式向量仿真
对于并行模式仿真,我们在仿真时间和仿真期间的测试覆盖率之间进行了权衡。我们决定将仿真的向量数量限制在大约 1000 个,以在仿真期间获得正确的覆盖率(87%)。
6.5 不匹配问题解决
为了解决不匹配问题,我们使用了验证平台 Verilog 中名为 tmax_diag 的内构选项。在编译验证平台时使用第三方仿真工具,我们添加了选项 +define+tmax_diag=1。在仿真期间,此选项允许创建一个专门的诊断文件,以 TetraMax 故障文件格式记录仿真期间发现的所有不匹配。
然后我们只需在 TetraMax 中加载设计的 TetraMax 映像,然后加载仿真期间使用的外部向量集,最后使用 run_diagnosis 命令,以仿真故障文件作为输入。报告将给出寄存器的位置或其逻辑锥中可能导致不匹配的候选者。
7 结论与未来展望
在这个项目之后,我们计划在我们即将到来的下一个项目上使用和部署非常相似的方法。
8 致谢
我们要向参与本项目在 TCS 的整个设计团队,包括管理层,以及我们在 Synopsys 巴黎的本地支持团队表示衷心感谢,感谢他们的帮助、建议和支持,特别是 Philippe Rossant。特别感谢 Charles Odinot 和 Philippe Rossant 在撰写本文时的帮助。
9 缩略语
| 缩略语 | 全称 |
| ASIC | Application Specific Integrated Circuit |
| ATE | Automatic Test Equipment |
| ATPG | Automatic Test Pattern Generation |
| BIST | Build In Self Test |
| CODEC | Compressor/Decompressor |
| DFT | Design For Test |
| DFTMAX | Synopsys Adaptive Scan Compression technology and tool |
| JTAG | Joint Test Action Group (IEEE 1149.1) |
| Logic BIST | Self Test for Digital logic |
| Memory BIST | Self Test for Memories |
| Async OCC | Asynchronous On Chip Clock Controller |
| Sync OCC | Synchronous On Chip Clock Controller |
| PrimeTime | Synopsys sign-off Static Timing Analysis tool |
| SoC | System On a Chip |
| STIL | Standard Test Interface Language (IEEE 1450) |
| SPF | STIL Protocol file |
| SSA | Single Stuck-At fault model |
| TetraMax | Synopsys Automatic Test Pattern Generation tool |
| TF | at-speed Transition fault model |
10 参考文献
[1] Synopsys DFTMAX User Guide 2014.09-SP5 or the latest available.
[2] Synopsys TetraMax User Guide 2014.09-SP5 or the latest available.
[3] Synopsys TetraMax On Line Help 2014.09-SP5 or the latest available.
[4] Test Pattern Validation User Guide 2014.09-SP5 or the latest available.
[5] Synopsys PrimeTime User Guide 2014.09-SP5 or the latest available.
[6] Solvnet: http://solvnet.synopsys.com
[7] Using Custom OCC with TetraMax for At-speed Transition Fault Testing and Small Delay Defect, Parrot, SNUG France 2011
[8] Using At-speed Testing with OCC (On Chip Clock Control), ATMEL, SNUG France 2013
[9] Design and Implementation of Custom On-Chip Clock Controller, Altera, SNUG Singapore 2013
图片索引
本文共涉及 12 张图表,存放于 SNUG_TPC_DFT_Peycelon_Using_DFTMAX_with_both_asynchronous_and_paper_images/ 目录。