基于Spyglass的DFT检查

SNUG 2016 2016 13 页

基于Spyglass的DFT检查

作者: Philippe Debaud (STMicroelectronics, Grenoble, France) 会议: SNUG 2016 页数: 13 源文件: SNUG_TPC_Spyglass_Debaud_Spyglass_based_DFT_checks_Philippe_Debaud_STMicroelectronics_Grenoble_paper.pdf


Page 1

Figure Figure Figure

基于Spyglass的DFT检查

Philippe Debaud

STMicroelectronics Grenoble, France

Philippe.debaud@st.com

摘要

如今,SoC 系统级芯片通常需要生成数百个内部时钟,频率高达GHz级别或更高。在这些频率下,要保持测试质量需要使用时钟整形器(也称为片上时钟控制器 OCC),以便在内部生成跳变故障测试所需的脉冲。随着工艺尺寸的缩小,电路性能对后端变得极其敏感。实现高效实现的一种可能方案是使用基于物理分区的设计方法。该流程对DFT 可测试性设计提出了额外的约束,并要求在门级插入OCC以获得优化的时钟树 Clock Tree。因此,OCC在扫描插入过程中被插入,这将需要进行特定的检查。我们在本文中展示的结果证明了SpyGlass在处理OCC插入问题方面具有卓越的能力。


Page 2

Figure Figure Figure

目录

1. 引言 2. 设计 2.1 概述 2.2 OCC 2.3 OCC位置 2.4 插入流程 3. 使用Spyglass进行级联OCC检测 3.1 Spyglass设置 3.2 用于级联OCC检测的Spyglass规则 3.3 级联OCC检测的Spyglass结果 4. 使用Spyglass进行缺失OCC检测 4.1 Spyglass设置 4.2 用于缺失OCC检测的Spyglass规则 5. 结论 6. 参考文献

图表目录

图1:STiH337的物理视图 图2:使用的OCC 图3:OCC插入前的时钟树结构 图4:OCC插入后的时钟树 图5:由于OCC1错误放置导致的级联OCC 图6:缺失OCC 图7:DFT插入步骤与使用Spyglass的交互 图8:级联OCC示例 图9:Spyglass级联OCC报告视图 图10:缺失OCC检测 图11:Spyglass缺失OCC报告视图 图12:Spyglass缺失OCC报告分析 图13:时钟原理图


Page 3

Figure Figure Figure

1. 引言

我们开发的芯片面向机顶盒消费市场,这要求我们遵守包括结构灵活性、测试质量和测试成本(高产量)在内的多种约束。随着复杂度和频率的提高,以可接受的成本保持测试质量是DFT 可测试性设计面临的最大挑战之一,使用内部时钟整形器是必然的选择。由于我们的后端流程采用基于物理分区的方法,这对DFT提出了额外的约束,并要求在门级插入片上时钟控制器 OCC以获得优化的时钟树。这种方法的主要优势在于OCC插入的灵活性,使我们能够在同一次运行中完成OCC和扫描插入。当然,这种方法也带来了验证挑战,我们借助SpyGlass来解决这些挑战。虽然Spyglass可以处理广泛的DFT问题,但我们在这里选择聚焦于OCC检查。本文末尾的讨论将探讨该策略的可能扩展方向。

2. 设计

2.1 概述

试验在STiH337SoC 系统级芯片上进行,该芯片面向卫星机顶盒平台,采用基于ARM应用处理器和GPU的架构。这款40 mm²的电路采用CMOS 28FDSOI设计,集成了功耗岛,包括:

- 双核ARM Cortex-A9,最高运行频率1.2 GHz - DDR3/3L 16-bit - HDMI-TX, USB 2.0 和 3.0 - 四个视频DAC,支持SD CVBS模拟电视 - ...

下图展示了该组件的物理结构。

图1:STiH337的物理视图

Page 4

Figure Figure Figure

2.2 OCC

ST使用与Synopsys结构[1]兼容的专有OCC。这些OCC实现了一些特定功能,以便于时序收敛 Timing Closure或低功耗方面。此处未展示特定的IO,它们可能会根据最终应用出现。这些修改对本文中描述的流程完全没有影响。

图2:使用的OCC

2.3 OCC位置

整个芯片被划分为物理块,如图3所示。由于OCC不是在RTL 寄存器传输级层次插入的,因此必须特别注意。事实上,根据分支的不同,可能会出现多种情况,OCC需要相应地插入或不插入。

图3:OCC插入前的时钟树结构

Page 5

Figure Figure Figure

下图展示了OCC插入点。正如我们所见,根据需要黑盒结构的不同,需要五到六个OCC。

图4:OCC插入后的时钟树

在图5中,一号OCC应移动到灰色所示的位置。在图6中,二号OCC应放置在图中标示的位置。

图5:由于OCC1错误放置导致的级联OCC

这种"即时"OCC插入引出了一个问题:如何高效地验证OCC已正确插入,没有出现图5所示的级联OCC或图6所示的缺失OCC。实际上,在RTL级别进行插入允许在早期设计阶段进行验证和调试,但这里无法做到这一点。因此,我们必须找到另一种解决方案,允许进行快速高效的检查。Spyglass已被证明是实现这一目标的完美工具。


Page 6

Figure Figure Figure 图6:缺失OCC

2.4 插入流程

下图展示了DFT插入过程的概览。我们从DFT前的门级网表开始,根据规格插入OCC。然后并行启动DFT DRC和Spyglass检查,重点关注级联OCC和缺失OCC。

图7:DFT插入步骤与使用Spyglass的交互

在顶层,Spyglass检查允许确保当所有物理块连接在一起时OCC已正确插入。如果没有,我们必须返回OCC插入步骤。


Page 7

Figure Figure Figure

3. 使用Spyglass进行级联OCC检测

为了提高效率,尽早发现错误非常重要。级联OCC检测可以通过多种方式进行,例如:

1. 使用测试平台进行仿真。我们必须确保物理块已正确设置,并检查所有已插入OCC的输入端都有自由运行的时钟。 2. ATPG 自动测试向量生成运行。同样,我们必须确保物理块已正确设置以通过DRC 设计规则检查,并检查我们能否生成具有适当覆盖率的测试向量。 3. 形式检查。检查是否存在连接OCC输出到OCC输入的路径。

由于设置过程可能很繁琐,并且可能需要的调试时间与我们的计划要求不相符,我们选择了使用第三种方案。

3.1 Spyglass设置

由于计划进度是我们的主要关注点之一,我们首先关注的是工具设置以及获得工作环境的复杂程度。事实证明,这非常简单,如下例所示:

#Define the project
new_project my_trial.prj -force

#Define and read Libraries (.lib) set lib_files [list \ /libs/.../CORELIB.lib \ etc .. \ ] read_file -type gateslib $lib_files

#Define design source (.v) set rtl_files [list \ /prj/.../my_netlist.v \ ] read_file -type verilog $rtl_files

#Define TOP and compile set_option top "my_top" compile_design

#Define spyglass rules to be used current_methodology $SPYGLASS_HOME/GuideWare2.0/soc/netlist_handoff/ current_goal dft/dft_block_check

通过这个简短的设置,我们就可以定义要应用的规则,以检查级联OCC。


Page 8

Figure Figure Figure

3.2 用于级联OCC检测的Spyglass规则

如前所述,我们希望避免设计中出现级联OCC,因为这会阻止ATPG 自动测试向量生成工具生成跳变故障向量。如下图所示,第一个OCC从自由运行时钟生成所需的双脉冲,此时test_se(也称为扫描使能信号)变为低电平。第二个OCC仅从OCC1接收到一个双脉冲,无法在其clk_out输出端生成任何时钟。

图8:级联OCC示例

因此,上图中红色所示的连接必须被视为禁止连接,这可以使用illegal_path命令转换为Spyglass规则。由于我们设计中所有OCC名称都包含子字符串"_OCC_4b_",所需的规则可以写为:

illegal_path -from "*_OCC_4b_*::clk_out" -to "*_OCC_4b_*::*"

3.3 级联OCC检测的Spyglass结果

完成第3.2节描述的设置后,使用以下脚本进行检测:

#Define Cascaded OCC rule and check
illegal_path -from "*_OCC_4b_*::clk_out" -to "*_OCC_4b_*::*"
run_goal
write_report moresimple

在我们拥有100万个触发器的物理块上运行20分钟后,Spyglass窗口显示了我们在设计中故意留下的错误。


Page 9

Figure Figure Figure 图9:Spyglass级联OCC报告视图

4. 使用Spyglass进行缺失OCC检测

缺失OCC检测是一个相当困难的话题。在包含数百个时钟的大型SoC 系统级芯片上,可能需要巨大的工作量才能完成这项任务。方法可以基于:

1. DFT-DRC使用。我们必须确保物理块已正确设置以通过DRC。手动检查结果可以突出显示由于缺失OCC而未被扫描的触发器。然而,时钟直接由主输入驱动的触发器将不会被突出显示。 2. ATPG运行。同样,我们必须确保物理块已正确设置以通过DRC,并检查我们能否生成具有适当覆盖率的测试向量。 3. 形式检查。检查所有触发器是否都有一条从OCC输出连接到其时钟输入的路径。

我们选择了第三种方案,因为它能确保最佳的覆盖率,并使我们避免了在扫描插入关键阶段进行设置开发和调试。

4.1 Spyglass设置

Spyglass设置与第3.1节中描述的完全相同。


Page 10

Figure Figure Figure

4.2 用于缺失OCC检测的Spyglass规则

目标是确保设计中所有触发器都有一个OCC,以便在生产过程中以符合质量需求的覆盖率进行at-speed测试。因此,下面红色所示的连接必须被视为强制连接,这可以使用required_path命令转换为Spyglass规则。

图10:缺失OCC检测

由于我们设计中所有OCC名称都包含子字符串"_OCC_4b_",所需的规则可以写为:

require_path -from_one_of "*_OCC_4b_*::clk_out" -to_type FLIP_FLOP_CLOCK

该检查将对设计中所有具有FLIP_FLOP_CLOCK属性的引脚进行,这正是我们所需的,因为检查将在扫描插入之前完成。

值得注意的是,对于扫描插入后的检查,该规则需要翻译为:

require_path -from_one_of "*_OCC_4b_*::clk_out" -to_type SCAN_FLIP_FLOP_CLOCK

在我们拥有100万个触发器的物理块上运行约6小时后,Spyglass窗口显示了在设计中发现可能的错误。生成的列表包含所有时钟树中没有任何OCC的触发器,如下图所示。


Page 11

Figure Figure Figure 图11:Spyglass缺失OCC报告视图

可以使用Spyglass的增量原理图功能进行图形化分析,使我们能够快速探索连接关系。

图12:Spyglass缺失OCC报告分析

经过几秒钟的调查,可以看出报告的错误是真实存在的,如下图所示。


Page 12

Figure Figure Figure 图13:时钟原理图

在这个例子中,时钟来自一个主输入,显然这里遗漏了OCC。总体而言,经过快速审查,交互式GUI使我们了解到许多错误与那些我们不打算插入OCC的触发器有关,例如专用于测试的寄存器、内部OCC寄存器或扫描链流水线寄存器。为了清理报告,可以在require_path命令中使用-except_to选项。以下是一个示例:

require_path -from_one_of "*OCC_4b_*::clk_out" -to_type FLIP_FLOP_CLOCK \
  -except_to {{*PipeTail*::*} {*OCC*::*} {*_tcr_*::*}}

5. 结论

我们采用基于物理分区的方法,提供了优化的实现,但对DFT 可测试性设计提出了额外的约束,特别是在时钟验证方面。虽然Spyglass可以处理广泛的DFT问题,但我们选择在这里聚焦于OCC插入检查。在我们的特定案例中,DFT控制假定是正确的,并使用基于仿真的传统方法进行覆盖。DFT团队在此次试验中首次使用了Spyglass。设置在几个小时内完成,第一天内就获得了首批结果。这里的主要优势在于能够进行检查而不必关心芯片设置,后者总是需要一些调整和调试时间,尤其是在门级仿真中。此外,这种方法避免了脚本编写和过滤开发,这些总是容易出错的。相反,这里进行的静态检查并不妨碍我们进行仿真和测试向量生成。它使我们能够通过在出现问题时缩短迭代循环来提高可预测性,并简化调试。


Page 13

Figure Figure Figure

6. 参考文献

[1] Solvnet: "Specifying OCC Controllers", https://solvnet.synopsys.com/dow_retrieve/L-2016.03/dftug/dftug13_Specifying_OCC_Controllers.html

[2] Solvnet: "TetraMAX ATPG User Guide", https://solvnet.synopsys.com/dow_retrieve/L-2016.03/tmolh/Content/tmax_ug/ni/tmax_ug.pdf


图片索引

本文共 17 张图片,存放于 SNUG_TPC_Spyglass_Debaud_Spyglass_based_DFT_checks_Philippe_Debaud_STMicroelectronics_Grenoble_paper_images/ 目录。