【Tessent Shell Users Manual】【Ch5】Workflows(2)【Tessent Shell Flow for Hierarchical Designs】(1)

Tessent Shell 使用名为 “divide and conquer” (分而治之)的方法学进行 hierarchical DFT,在 sub-physical block level 进行 RTL and Scan DFT 插入。

从最低层级的 bolck是开始,自底向上(bottom-up process)进行层次化 DFT 实现。

层次化的设计方法学是大规模设计变得高效,芯片设计者将设计拆分为多个 RTL blocks,并行设计不同的功能模块。


Hierarchical DFT Terminology


Tessent Shell 的 hierarchical flow 中的一些专用术语。

Physical Block

Physical Block 是在 TO 过程中保持完整的逻辑实体,它们是综合和 layout 的区域。在芯片的顶层模块之下,这些 blcoks 可在一个 chip 或者多个 chips 内复用或实例化。 可以独立于整个 chip 对这些 blocks 进行综合

在对 Physical Block 进行 DFT 插入的时候,Tessent 保留根模块的端口。当使用 ungrouping 时, 当前 Physical Block 内部的 Physical Block 实例在最终的 layout 中可能不会被保留。

在 Tessent Shell 中,hierarchical DFT insertion 流程将 physical blocks 分为三种类型:wrapped cores,unwrapped cores 和 chip。

  • Wrapped core. Wrapped core 包含用于隔离 core 内部逻辑的 wrapper cells。 wrapper cells 在 scan chain insertion 阶段插入。
    Wrapped cores 需要通过 ATPG pattern retargeting 使 core 是可复用的。
    Wrapped cores 可以包含 sub-blocks。

  • Unwrapped core. 不包含 wrapper cells ,但是包含 sub-blocks。

  • Chip. top-level 的 physical block,即完整的设计,通常在此处寻找 pad IO macros 和 时钟控制器。chip 可能包含其他的 physical block 或者是 sub-block,这些 block 可是以是 wrapped cores 或 unwrapped cores。不同于其他 physical blocks,chip 是 layout regions。(layout regions 的概念不是很清晰,后面学习的时候留意一下。)

Sub-Block

Sub-Blocks 是存在于 parent block 中的设计,和 parent blocks 一起综合(被合并到 parent block 中 )。

Sub-Blocks 不是 layout physical regions。在 post-layout 的网表中,sub-block 模块的边界可能保存也可能不保存。如下图所示,相同的 sub-block 会同时在 physical block level 和 chip level 实例化。

在这里插入图片描述

可以对 sub-block 进行 DFT 硬件(MBIST、EDT、OCC等)插入,但是综合和 scan insertion 要在 sub-block 的 parent physical block
level 。

Instrument Block

一个特殊的空模块(module),其中插入了 DFT elements。这个特殊的模块在 parent block 中手动实例化,它的引脚被也是手动的连接。

ATPG (or scan) pattern retargeting

为了在 parent instantiation level 测试逻辑块的时候实现复用,Tessent Shell 保留和 wrapped cores 相关的 ATPG patterns。这样,只需将 wrapped core ATPG patterns 重定向(retarget)到 top level,不需要重新生成 patterns。

为了 ATPG pattern retargeting 和 graybox 建模,Tessent Shell 对 wrapped core 的内部电路和外部电路做了区分。

  • Internal mode。从 wrapper cells 往 wrapped core 的内部看,即 core 内部的所有逻辑。Tessent Shell 在 chip-level design 的 ATPG patterns 生成过程中对 internal mode 的 ATPG pattern 进行 retarget。

  • External mode 。从 wrapper cells 向 wrapped core 的外部看,即连接 wrapped core 到外部逻辑块的逻辑电路。Tessent Shell 使用 external mode 构建 graybox models(灰箱模型),他会被 parent physical block 的 internal modes 使用。

Graybox

灰盒模型是 wrapped core models,只保留 core 的 external mode 逻辑电路和部分 IJTAG 网络。

在自底向上的层次化 DFT 过程中,灰盒模型的目的是保留 parent physical blocks 生成 internal mode 的 ATPG patterns 所需的最小逻辑。


How the DFT Insertion Flow Applies to Hierarchical Designs


在基于 flat design 的 DFT 插入流程中,进行了 两步 pre-scan insertion 过程。对于层次化设计而言,流程是一样的,只不过是以自底向上的方式对设计中的每个 core 和 sub-block 应用该流程。在对低层级的 physical blocks 完成 DFT 插入之后,对 parent blocks 执行相同的插入过程,直到达到芯片的 top-level。

在对 hierarchical design 进行 DFT 插入时,部分注意事项如所述。

  • 在进行 hierarchical DFT 时,必须指定 DFT 插入过程所在 hierarchical design level。对于 flat design吗,set_design_level 总是设置为 chip。但是在层次化设计中,它就会是 physical_block 或 sub_block。
  • 第一个 DFT 插入过程中的 Boundary Scan 通常要应用到 chip design level。在层次化设计中,这意味着在第一次 DFT 插入过程中, cores 和 sub-blocks 只需要插入 MemoryBIST,除非 cores 中带有嵌入式 pad IO macros。(具体流程参考 Tessent Boundary Scan User’s Manual 中的 embedded boundary scan flow)
  • 在层次化设计中,每一个 physical block 和 sub-block 都有各自的 design name 和 TSDB。(为了便于数据管理,每个 block 最好都有自己的 TSDB 文件夹,这样可以避免并行执行是的读写错误。具体参考该手册的 “TSDB Data Flow for the Tessent Shell Flow”)
  • 在处理(process)wrapped cores 的 parent physical block 时,可以对 core-level 的 patterns 进行 retarget。

RTL and Scan DFT Insertion Flow for Physical Block


对于每一个 wrapped core,整体流程和 flat design 一样,只是第一步的 DFT 插入流程不插入 Boundary Scan (除非有 embedded pad IO macros)。

在这里插入图片描述

First DFT Insertion Pass: Performing Block-Level MemoryBIST


因为没有在插入 MemoryBIST 的同时插入 boundary scan,所以可以直接使用 Tessent MemoryBIST 给出的流程。

Procedure

  1. 加载 RTL 设计数据

    a. set_context -design_id 设置为 rtl1

    和 wrapped core 的 MemoryBIST 插入相关的所有数据在 wrapped core’s TSDB 的 ID 为 “rtl1”。

    b. read_verilog 命令读取和编译设计。

    在这里插入图片描述

    c. 将 design level 设置为 physical_block,以便该 core 的 layout 在 tapeout 中保持为一个独立的独立的实体。

    在这里插入图片描述

  2. 创建 DFT Specification

    在这里插入图片描述

  3. 生成 MemoryBIST 硬件,提取 ICL。

    在这里插入图片描述

  4. 创建输入测试向量和仿真 testbenches

    在这里插入图片描述

  5. 执行仿真以验证设计

    在这里插入图片描述在这里插入图片描述

Second DFT Insertion Pass: Inserting Block-Level EDT and OCC


wrapped cores 的第二个 DFT 插入过程是插入 EDT 和 OCC 硬件。和 flat design 使用的标准 OCCs 有所不同,wrapped cores 需要选择所插入的 OCCs 类型是 child 还是 standard。( Scan and ATPG User’s Manual 的 “Tessent OCC Types and Usage” 有更加详细的介绍)

如果物理设计实现的 clock path 上不支持 clock MUX,可以使用 child 类型的 OCC。用在 wrapped core 的内部的 child type 的 OCC 只有 clock chopping 和 clock gating 功能,只要 chip-level 有 parent OCC 或者是其他能够进行时钟选择的硬件,它可以满足 ATPG pattern retarget 的需求。

在为 core 的内部模式(internal mode)生成 ATPG patterns 的时候,Clock selection 用于在 shift 和 capture 时钟之间进行选择。通常情况下,scan chain 的 shift 过程的时钟要比 capture 过程的时钟慢很多,所以需要进行时钟选择。

wrapped cores 的第二步 DFT 插入过程和 flat design 的很相似,简单示例如下所示。

Procedure

  1. 加载设计
    在这里插入图片描述

  2. Specify and verify DFT 需求(Wrapped cores 有自己的 DFT 时钟信号需求);
    在这里插入图片描述

  3. 创建 DFT 规范(specification)
    在这里插入图片描述

  4. 生成 EDT 和 OCC 硬件
    在这里插入图片描述
    在这里插入图片描述

  5. 提取 ICL 模块描述
    在这里插入图片描述

  6. 生成 ICL patterns 并执行仿真
    在这里插入图片描述

Specifying and Verifying the DFT Requirements: DFT Signals for Wrapped Cores


从 TSDB 中加载设计数据,为 EDT 和 OCC 硬件定义 DFT 需求,包括添加 DFT 信号和执行 DRC 两部分。

在这里插入图片描述

Procedure

  1. 设置 DFT 需求
    在这里插入图片描述
    (第一步 DFT 插入过程中的设定的 design level 会保持,所以这里不需要再次设置。)

  2. 为 wrapped cores 定义 DFT 信号

    a. 定义全局 DFT 信号以进入逻辑测试模式
    在这里插入图片描述
    b. 定义 DFT 信号
    在这里插入图片描述
    (如果这些端口不存在,工具会自动创建新的端口。)

    c. Specify the following command to test with multiple load ATPG patterns in MemoryBIST
    在这里插入图片描述
    d. 在逻辑测试中测试 STI network
    在这里插入图片描述
    e. 为 hierarchical DFT 定义内部模式和外部模式。Scan 插入的时候需要。
    在这里插入图片描述
    该命令指定 wrapped cores 具有内部模式和外部模式(这是必须的),便于后续 scan chain 的 stitch 、 ATPG patterns retarget 和 graybox 建模。

  3. DFT 信号定义完成之后,执行 DRC。
    如果设计的 RTL 中包含 clock gating,并且不是集成的 clock gating cell,就必须使用 add_dft_clock_enables 命令指定 func_en 和 test_en 端口。
    Tessent 会检查时钟、异步置位和复位的控制能力。

Results

DRCs 结束之后,如果有问题,Tessent Shell 生成 DFT_C 错误。 (具体内容在 reference manual 的 pre-DFT Clock Rules)

Examples

下述示例给出了 wrapped cores 在第二步 DFT 插入过程中所需要的 DFT 信号。

在这里插入图片描述

Performing Scan Chain Insertion: Wrapped Core


wrapped cores 的扫描链插入需要进行 wrapper analysis,即准备将 flops( functional scannable sequential elements)复用为 wrapper cells(它们被称为 shared wrapper cells)。

analyze_wrapper_cells 命令用于执行 wrapper analysis。除了准备 shared wrapper cells 之外,该命令还会为扇出或扇入较大的 ports 提供(原文是 infer)专用的 wrapper cells。set_wrapper_analysis_options 命令的 -input_fanout_flop_threshold-output_fanout_flop_threshold 选项可以设定扇入扇出的阈值(默认值是32)。

shared wrapper cells 和 dedicated wrapper cells 可以在相同的 wrapper chains 上共存,有助于帮助 Tessent 将 wrapper chains 配置为接近的长度。

扫描插入使用的 DFT 信号 int_ltest_en 和 ext_ltest_en 配合扫描使能信号一同控制 wrapper cell。

Prerequisites

在执行扫描链插入之前,首先要进行综合。

Procedure

  1. 设置 DFT context

  2. 加载综合后的设计

  3. 指定和 DFT 插入过程相同的输出文件夹

  4. 加载 rtl2 设计数据

  5. DRC
    在这里插入图片描述

  6. 配置 wrapper cells
    a. 指定分析 wrapper cells 的选项
    b. 添加特定的 wrappers (如果需要)
    c. 使用analyze_wrapper_cells 命令分析 wrapper cells
    d. 确保 wrapper analysis 是排除了 EDT channel IO ports

    在这里插入图片描述
    在这里插入图片描述

  7. 使用add_scan_mode 命令将 scan chains 连接到 EDT 信号和第二个 DFT 插入过程插入的 EDT 硬件
    wrapper cells 的 Scan Insertion 需要使用 multi-mode scan insertion。

    a. 为所有的 scan cell 创建一个 scan mode
    (使用 int_mode 命令将所有的 scan cells 串(stitch)在构成第一个 scan mode。

    b. 为 shared 和 dedicated wrapper cells 创建第二个 scan mode
    在第二步插入过程中定义的 int_mode DFT 信号用来控制该 scan mode

    add_scan_mode ext_mode 命令将 shared 和 dedicated wrapper cells 连接(stitch)在一起,

    在这里插入图片描述

Verifying the ICL Model


ICL-based verification 是在生成向量之前验证 ICL network 。

在验证过程中,工具根据语义规则(semantic rules)检查 ICL网络,以验证网络连接的正确性。工具会验证可以通过 iWrite 和 iRead 访问 IJATG 的每一个测试数据寄存器。如果设计中存有 MBIST,还会对其进行检查。

Tessent 在串链(scan chain stitching)过程中,复杂端口产生 loops(导致 ports 和 instances 名称在在综合之后发生变化)时,工具会自动更新 ICL 模型。

使用第三方工具进行扫描链插入的时候,为了完成 ICL-based verification,可能需要额外的和规则匹配的 ICL module。

验证SNN 的 ICL model 的示例如下所述。

Procedure

  1. Set the context to patterns to create ICL-based patterns
  2. 设置 tsdb_outdir 文件夹,加载单元库
  3. 读取 scan-inserted netlist
  4. 在 scan insertion 之前,从最后一个 DFT 插入步骤中加载附件
  5. 创建和写出 ICL-based 向量集合,包括 ICLNetwork 验证patterns 和 MBIST patterns(如果有 memory)。
  6. 指定 Verilog 仿真库、仿真 patterns、检查仿真结果

Examples

在这里插入图片描述

Performing ATPG Pattern Generation: Wrapped Core


wrapped core 的 ATPG patterns 生包含一个生成 graybox 模型的步骤。此外,要进行两次 ATPG,一次是 core 的 external mode,一次是 core 的 internal mode。

在这里插入图片描述

graybox model 不包括 wrapped core 的 internal mode logic,只保留了在 parent level 需要测试的 external mode logic。

具体来说,Tessent 保留的外部逻辑包括:

  • PI 和 wrapper cells 的输入之间的逻辑
  • wrapper cells 的 输出和 PO 之间的所有逻辑

IJTAG infrastructure 也会被保存在 graybox 中。

可以使用 external mode patterns 来计算整个 core 的 fault coverage。internal mode ATPG patterns 在顶层设计的时候 retarget。

Procedure

  1. 生成 graybox 模型

    a. 加载设计并使用和 scan insertion 过程相同的 design ID 将 graybox 写入到 TSDB

    b. 使用 analyze_graybox 命令生成 graybox 模型
    使用相同的 design ID 便于 Tessent 访问完整的设计数据

    下述示例为一个 scan-inserted 的设计创建 graybox 模型,并将数据保存在 TSDB 的 “gate” 中。

    在这里插入图片描述

  2. 为 wrapped core 的 external mode 执行 ATPG。该 patterns 只能用于计算真个 core 的故障覆盖率,不能再 chip-level 复用。

    a. 使用 read_design 命令读取设计的 graybox model
    使用 set_current_mode 命令指定一个独特的 ATPG mode 名称来表示 patterns 目的。mode type 是 external。

    b. 使用 import_scan_mode 命令检索(retrieve) core 的 external mode 数据。Tessent 使用 core 的 graybox 模型。使用 import_scan_mode 命令是假定你使用 Tessent Scan 进行 scan chain 的 stitch。

    c. 执行 DRC (check_design_rules)

    d. 生成 ATPG patterns(create_patterns)

    e. 使用 write_tsdb_data 命令将 TCD、flat model、fault list 和 PatDB 文件保存在 TSDB 中。

    f. 使用 write_patterns 命令写出向量仿真所需的 testbench

    在这里插入图片描述
    在这里插入图片描述
    set_fault_type命令的默认值是 Stuck,该默认值在工具启动的时候就有了,所以这个脚本中没有出现该命令)

  3. 为 wrapped core 的 internal mode 执行 ATPG。所得到 ATPG patterns 可以在 chip 的 top level 进行 retarget。

    a. 加载包含 child wrapper cores 的 wraper cores 的 graybox views

    b. 如果使用 Tessent Scan 进行 scan insertion,使用 import_scan_mode 指定 internal mode

    c. 使用 set_current_mode指定唯一的 ATPG mode 名称。current mode type 是 internal,常用的 mode name 是 scan_mode_name_sascan_mode_name_tdf

    d. 执行 DRC

    e. 生成 ATPG patterns

    f. 使用 write_tsdb_data 命令将 TCD、flat model、fault list 和 PatDB 文件保存在 TSDB 中。

    g. 使用 read_faults 命令合并 external mode 的 fault list 到 wrapped core 的总故障覆盖率

    在这里插入图片描述
    在这里插入图片描述

  4. 执行 core-level ATPG patterns 的 Verilog 仿真

    该任务是为了确保向量在 parent level 被重定向之后能正常使用。对于并行加载的 patterns,所有的 patterns 都要仿真。对于串行加载的 patterns,只需要对其中一部分进行仿真即可。gate-level 串行加载 patterns 的仿真时间是十分重要的。

Running Recommended Validation Step for Pre-Layout Design Sign Off


在 wrapped core 的层次化 DFT 插入流程的第一步中,大多是在 RTL-level 对 MBIST 硬件进行插入和仿真。为了确保 MBIST 仿真能够在 core 的 pre-layout netlist 的 sign-off 之前通过,在 core 的 scan-inserted netlist 上对 MBIST 进行 gate level 仿真。

Procedure

  1. 从 TSDB 读取 scan-inserted netlist
  2. Elaborate 设计并执行 DRC
  3. 生成 input test patterns 和仿真文件
  4. Simulate the testbench
    Tesent Shell 将生成的 testbench 保存在 Patterns directory 的 TSDB 中,design ID 为 gate。

Examples

在这里插入图片描述

  • 17
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值