【Tessent Shell Users Manual】【Ch4】DFT Architecture Guidelines for Hierarchical Designs

随着设计规模的增大,大部分芯片都是层次化的设计流程。对于 DFT 而言,同样也可以使用层次化设计方法学进行测试插入、测试生成和诊断。采用层化设计方法的 DFT 称之为 hierarchical DFT。

Hierarchical DFT 只能应用于block-based 的设计,其几大优点如下:

在这里插入图片描述

Hierarchical DFT Overview

Hierarchical DFT 就是用层次化设计的方法学来进行测试插入、测试生成和诊断的过程。在 Tessent Shell 环境中,多部分内容(如physical layout regions、wrapped cores等)被用于在层次化设计中实部署 DFT。

Physical Layout Regions in Hierarchical Test

层次化设计通常有多个物理版图区域(physical layout regions),这些版图区域在其他的物理版图区域中被实例化。通常情况下,实例化是发生在 chip level,所以会有两个层级(某些设计会更多)。(我对层次化设计的理解可能有一些问题,并不是说 RTL代码中的每一个module就是一个level,应该是从功能角度进行 或者是其他角度进行 level 的划分。 )

从 DFT 的角度来看,每个版图区域都可以进行单独进行测试插入,所以就可以并行部署DFT,从而提高效率。

对 lower-level 的设计完成 DFT 插入之后,才能在更高的层级进行 DFT 插入。

描述层次化设计版图区域的属于如下:

  • Physical block, block, core, child core —— 这些术语是可互换的,它们指的是 chip level 以下的 layout regions,这些 layout regions 可以在一个 chip 或这多个 chip 之间进行实例化。blocks 是在 TO 中保持完整的逻辑实体,你可以独立于 chip 在这些 blocks 上进行 synthesis。

  • Chip —— top-level physical block(顶层物理模块),即带有 IO pad 和 时钟控制器的整个设计。

设计(designs)中超过两个层级的 chip 和 upper-level blocks 通常被成为 parent blocks,和他们相关的任务发生在 parent level 。

(这一部分有一些定义不是很清楚,简单的理解就是,基于层次化设计进行 DFT 设计的时候,从底层开始,逐渐往上层推。)

Pattern Retargeting

Pattern Retargeting 是 Tessent Sehll 保留和 cores 相关的 ATPG patterns的过程,目的是在 chip level 进行测试的时候可以复用。

这样,在 chip level 的时候,就不需要生成新的向量。core 的每一个实例都可以使用这些 pattern 。

(这里有一个问题,Retarget 的 pattern 如何施加到电路呢?)

pattern retargeting 包括为 cores 生成向量、将 core-level 测试向量 retarget 到 chip-level 和 生成 top-level 的逻辑电路的向量。

更多详细的内容在 Scan and ATPG 手册中的 “Scan Pattern Retargeting” 章节 。

Wrapped Cores and Wrapper Cells

在 hierarchical DFT 中,必须对 physical block 进行 wrap(封装?) 从而使其在 pattern retarget 中是可复用的。

术语 wrapped cores 用来表示这些 physical blocks。

如下图所示,从 DFT 的角度看,Physical Layout Regions 就是 physical blocks。 Tessent 在不同颜色的 physical blocks 上进行测试插入。Clk1 和 Clk2 是异步时钟。

在这里插入图片描述

用于这些 blocks 的 wrapping 机制会利用存在于这些 block 边界的功能性 flops。这些 flops 被称之为 shared wrapper cells(或者是 wrapper cells ),因为他们既是原始功能的 IO flops,又要用于隔离 core。

而且,还可以添加专用的 wrapper cells。这些 wrapper cells 被添加到和 large logic cones 相连的 physical blocks 的 PIs 或者 POs 上。这样以来,就可以在 core 的 internal testing 期间对 logic cone 进行测试。

共享的和专用的 wrapper cells 构成了 wrapper chains。位于 wrapper chain 上的逻辑块在 core 的内部测试(the internal testing of the core)中进行测试,称之为 intest ;位于 wrapper chain 之外的逻辑块在 core 的外部(external)测试中进行测试,称之为 extest

Internal Mode and External Mode

为了pattern retargeting ,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 使用。

如下图所示,基于可用的 chip pin,在 OCC 和 EDT 存在的情况下,可以对同时在 internal mode 下对 Red、 Green、Brown 和 Pink 这四个 cores 进行测试。

在这里插入图片描述

基于某些因素,如可用 chip-level pins 的数量、测试台的channels、测试台内存和功耗等,你可以在 internal mode 中测试一个或者多个core。在 internal mode 下, chip-level 的 OCCs 和 EDT 压缩逻辑是 inactive 的。

在 external mode 下,cores 内部的 OCCs 和 EDT 逻辑是 inactive,wrapped cores 外部的 OCCs 和 EDT 逻辑块是 active 的。如下图所示,在常用的 external mode 配置中,会有一个 EDT 逻辑块用于测试 wrapper chains 外部的逻辑电路。

在这里插入图片描述

On-Chip Clock Controller

在 hierarchical 测试中,对 wrapped cores 进行 pattern retargeting 需要一种方法(mechanism)能够对时钟进行局部独立控制。

OCC 插入到 wrapped cores,可以使 ATPG patterns 独立(self-contained),从而使其能偶被 retarget。

使用时钟波形对OCC进行初始化,然后 patterns 被 retarget 到 parent 或 chip-level design。不同 blocks 的 Block-level patterns 和 OCCs 可以在 parent 或 chip-level design 进行独立于时钟的 retarget 和 merge 。

个人思考:每个 block 都有自己 pattern,这些 patterns 的使用是和 clk 相关的,可能不同的 block 的pattern 需要不同的频率的 clk,OCCs 的存在就可以使的在 chip level 进行 merge 的时候不用考虑各种不同的 patterns clk,因为每个 block 可以用各自的 OCC 对 clk 进行调整。)

标准的 OCCs 包括 built-in clock selection, clock-chopping 和 clock-gating 功能,更加详细的内容可以参考 Scan and ATPG Manual 的 “Tessent On-Chip Clock Controller”章节。

Graybox Model

灰盒模型是保留 core 的 external mode 逻辑电路的 wrapped core models,具体包括 wrapper chains 、需要和下一个 physical level 的逻辑块一起测试的部分 IJTAG 网络。

在 hierarchical test 中,灰盒模型的目的是保留 parent physical blocks 生成 internal mode 的 ATPG patterns 所需的最小逻辑单元。
当测试进入到下一个 physical level 时,使用灰盒模型可以使 Tessent Shell 能够更加快速的加载设计。

Top-Down Planning Before Bottom-Up Implementation

为了能够合理的预算和分配资源,层次化设计的 DFT 结构要自顶向下进行规划。规划完成之后,在进行DFT插入的时候,是从最低层级的 block 开始,自底向上逐步部署。

为了解决设计的挑战,需要考虑以下因素:

  • 优化 pattern 数量以减少测试时间
  • 优化扫描体积以适应分配的测试机台的内存
  • 减少芯片引脚需求以匹配测试机台的引脚

在 DFT 规划的过程中还需要考虑优先级之间的trade-off,例如测试时间,测试质量,流程的兼容性和设计进度等。

此外,要注意 chip-level 的 DFT 的会影响 core-level 的DFT。

Clocking Architecture

在功能模式下,时钟架构(Architecture)包括 divided clock 和 multiplied clock(分频和倍频)。原始时钟、分频时钟和倍频时钟在一个 core 内可以是同步的,在不同层级之间的 core 也可以是同步的。分频时钟在不同层级的core之间可以是异步的。

如果 core level 的 ATPG patterns 想要 retarget,那么这这个 core 必须包含 OCC 。Cores 中 OCC 的如何实现(implement)和下列因素有关:

  • How the clocks are balanced —— clock balancing 最常用的方法是 clock tree synthesis 和 clock mesh synthesis。具体使用的方法会影响到所插入的 OCC 的类型(standard、parent、child)
  • OCC behavior during intest and extest —— 在 core 的 intest 和 extest 中,OCCs 需要做什么也会影响 OCCs 的实现方式。

一些 OCCs 只需要执行 clock chopping 或者是 clock-gating 功能。有时 OCCs 可能需要用于测试目的的多路时钟。可以根据 Chip-level 的时钟来确定 wrapped cores 内部的架构和 OCC 类型。

( user manual 手册的附录中有 OCC 时钟架构的示例,后面看一下。 )

Resource Availability

可用资源在 DFT 实现中十分重要。比如,在 chip level ,可用于测试的引脚的数量限制了 EDT channel 引脚的数量、EDT channel 引脚可能会被连接到多个 EDT 控制器。

而且,测试机台也会限制连接到 EDT channel pins 的数量,所以必须考虑测试机台用于存储 test patterns 内存的大小。可用内存的大小影响向量集合的划分和并行的core 的数量。

如果想要测试 wrapped core,就必须要创建测试访问机制(test-access mechanism, TAM)。TAMs 负责每一组并行运行的 wrapped core 的扫描数据的读入和读出。如果 chip 的 pin 受到限制,就需要复用来连接 wrapped cores 中的多个 EDT 控制器。

TAM逻辑依赖于对 cores 进行测试的时间和方式。TAM 在 top level 安排 wrapped cores 的测试,它能够访问在chip level 被网文从而能够执行测试。 TAM还需要这些 cores 的布局布线信息,从而避免布线拥塞,所以需要考虑并行测试的 core 的接近程度以及连接到它们的引脚的位置。

个人思考:这里的过程可能是,先大概做一个TAM,然后给后端进行布局布线,如果 TAMs 布局布线的效果不好,那么久更新 TAMs 的方案。)

Test Scheduling

那些 wrapped cores 需要在测试台上并行测试却决于多个因素。

SSN(Streaming Scan Network)能够使你在功耗预算之内测试最多的 cores。因为所有的 core 都是通过 SSN 总线进行访问,你可以在 ATPG 或 pattern retargeting 结束之后再决定哪些 cores 同时运行。SSN ScanHost 驱动 TK EDT channels,将其和 top-level 的输入输出引脚进行解耦(减少或消除模块之间的相互依赖关系)。

在 retargeting 和 ATPG 中,SSN通过控制 network 的带宽处理不同 pattern 数量的 core, 工具将 pattern 数量少的 core 的带宽转移到 pattern 数量多的 core 上,。通过这种带宽管理,不同 pattern 数量的 core 完成测试的时间会比较接近,相比于比 non-SSN patterns,padding 减少。(padding有填充的意思,这里指的是应该是 scan chain 的长度不一致的,需要进行填充。)

如果在 Scan Host 中添加 On-chip Compare ,SSN 能够高效的测试相同的 core 。 On-chip Compare 能够在恒定的时间内完成任意数量相同的 core 的测试,因为他们有着相同的输入。

对于 non-SSN 的设计, 测试调度(scheduling)取决于如下因素:

  • patterns 的数量
  • 可以的 chip pins
  • 测试机台的存储限制
  • 相同的 core 的数量
  • pattern 数量接近的 core
  • 功耗预算和分配
  • Optimal compression at the core level
  • Channel sharing of cores within modular EDT or sub-chip architectures; cores need to be tested where channels are shared

为了使带有一定数量的 hierarchical cores 的 chip 实现最佳的测试调度,需要为所有 core 的 internal mode 生成最佳的压缩(compression)方案。对于每一个 core,compression 应该基于异步 channel 配置。使用analyze_compression命令可以优化compression。

基于 compression analysis 的测试调度的示例如下所示。假设 chip level 有 64 个 pin 可以用作 channel pin 。设计中,blk_a 有12个实例,blk_b 有 8 个,blk_c 有 4 个,blk_d、blk_e、blk_f 各有 1 个。下表展示了集中不同的压缩方案,其中红色方框中的是对资源利用的最好的方案。

在这里插入图片描述

假如你计划将相同 core 的实例作为一组进行并行测试。

对于 blk_a 而言,需要40个 input channel pins 为所有的实例提供输入数据,每个实例都需要 2 个 output channel pins。并行测试 blk_a 的 12 个实例的时候,用到了 64 个可用 pins。
blk_b : 32 + 4 * 8 =64
blk_c :8 + 14 * 4 = 63
blk_f 和 blk_e 的复杂度和channel需求接近,所以可以同时测试:
blk_f & blk_e :22 + 10 + 30 + 2 = 64
blk_d 需要的 channel 的数量最多,所以最后测试。

这样,最终的测试调度如下表所示:

在这里插入图片描述

在进行 test schedule 的时候,遵循一下几条规则:

在这里插入图片描述

① 相同 core 的实例分为一组并同时测试;② 复杂度(pattern数量)和 channel 数量相近的 core 同时测试;③ channel 数量多的 core 单独测试。

Specific Tasks That May Require Planning

在测试期间,每一个设计会有自己特殊的任务。一些任务和设计到测试计划,还有一些任务可能只需要修改一些命令行。

一些需要提前计划的任务如下:

  • Dual-mode configuration for Tessent TestKompress
  • Low-power mode and threshold setup
  • Multiple load ATPG patterns through the memories
  • Test point provisioning for extra scan chains
  • Support for multiple power islands and voltage islands(功耗域、电压域)
  • Functional timing exceptions to be read in with SDC
  • Low pin count test (LPCT) controllers
  • Test setup sequence to enter test mode

Sample DFT Planning Steps

在规划 DFT 实现的时候需要考虑的一些问题:

  1. 计算可以用于 Scan channels 的 pins 的数量和测试所需的 ATE channels 的数量,选取其中的最小值。
  2. 在现有的功能时钟之外,使用特定的测试时钟。该时钟可以使用 TCK 信号作为时钟源。
  3. 评估功能时钟架构,规划 OCC 配置(数量、类型和插入位置)。
  4. 根据设计的大小和pattern的数量,确定每个 core 所需的 channel 的数量
  5. core 的并行测试的 test schedule
  6. external mode 配置
  7. top-level TAM

DFT Implementation Strategy

对大部分设计而言,一些决策会对 DFT 的整体实现产生很大的影响。

Multiple Cores Testing in Internal and External Modes

在 Internal 和 External Modes 下,都可以测试多个 core,但是有几个问题需要注意

Internal Mode

如果有多个 wrapped cores,将 scan chain 的长度固定为恒定值,这样可以在下一个 hierarchical level 对这些 core 进行并行测试的时候,shift 的长度是一致的。

在这里插入图片描述

(这一段关于 OCC 的描述,不是很懂 OCC ,所以后面再回头看)

如果有嵌入的边界扫描单元,确保他们连接到 chip level 的其他边界扫描单元。

External Mode

来自多个 wrapped cores 的 external mode chains 的数量决定这些 chains 的处理方式:

  • 连接到一个EDT控制器
  • 连接到多个EDT控制器
  • 不使用EDT,直接连接到原始pins。(肯能会导致布线拥塞)
  • 连接到 EDT 压缩逻辑。

如果来自多个 core 的 external mode chains 被连接到一个或者多个 chip level 的 EDT 控制器,就必须 balance 这些 chains,确保其长度相同。

在这里插入图片描述

在 ATPG 阶段,在运行 wrapped core 的 external mode 时,可以包含 boundary scan chain 。

Dedicated Test Clock

对于层次化测试,将测试时钟配置为不共享功能时钟端口。测试时钟需要一个额外的脉冲来初始化 EDT 硬件,这会干扰到扫描单元,并导致无法修复的 D1 违例。

有了测试时钟,你可以使用 DFT 信号生成 OCCs 所需要的 shift capture clock 和 EDT 硬件所需要的 EDT 时钟。

可以使用 TCK 信号作为测试时钟,此时, TAP 需要按照 TCK 的频率运行,ATPG 的 shift 被限制在 TCK 频率。因此,需要确保使用最佳 TCK 速度。

使用特定的测试时钟对 internal test 和 external test 都十分有用,因为在扫描使能信号为1 的 shift 阶段,不管core处于 internal mode 还是 external mode,都会选择相同的时钟路径。(这句话不是很懂,但是后面会有进一步介绍。)

Automated Features Within the Tessent Shell Flow

Tessent Shell 提供了一些自动化特性来帮助 DFT 策略的实现。

  • TSDB —— Tessent Shell Data Base 是被所有 Tessent 产品使用的通用数据库。一个工具生成的测试信息可以被下游工具识别和使用。
  • IJTAG automation —— IJATG 有很多优点,如不从层级之间 DFT setup 的复用。针对自底向上的 DFT 实现方法是十分必要的。
  • Retargetable ATPG patterns —— 层次化 core 的内部使用 OCCs 使 ATPG patterns 变得独立,使其能够被 retarget。
  • Reset control —— 如果 set_dft_specification_requirements-logic_test选项是 on, Tessent在 pre-DFT DRC 会自动修复异步复位。Tessent 在shift 阶段停用reset,在capture 阶段测试 reset。当功能重置是内部生成时,这种自动修复是有用的。
  • Boundary scan chain included for ATPG —— 在chip level ,可以将 boundary scan chain 分割为更小的 chain,将其连接起来作为 compressed scan chain,然后在 ATPG 中对其进行控制。而且,可以配置这些 scan chain 使其在 capture 或 shift 阶段发挥作用。
  • Use memory to target shadow logic faults during logic test —— 在逻辑测试插入时,memory 是 bypass 的。Bypass 可以在 memory 本身内构建,也可以在 MemoryBIST 结构内构建。可以使用 IJTAG 控制的测试数据寄存器(Test Data Registers,TDRs)来启动 bypass 或者在逻辑测试中使用 memory。在逻辑测试中使用 memory,可以对 memory 周围的 shadow logic 进行测试。
  • Unused scan chains —— 在扫描插入和拼接期间,如果有任何过度定义的扫描链,Tessent Scan 自动添加未使用的扫描链与 pipeline 寄存器。当插入的EDT压缩逻辑中的扫描链没有被全部利用时,这将会十分有用。
  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:使用AngularJs编写的简单 益智游戏(附源代码)  这是一个简单的 javascript 项目。这是一个拼图游戏,也包含一个填字游戏。这个游戏玩起来很棒。有两个不同的版本可以玩这个游戏。你也可以玩填字游戏。 关于游戏 这款游戏的玩法很简单。如上所述,它包含拼图和填字游戏。您可以通过移动图像来玩滑动拼图。您还可以选择要在滑动面板中拥有的列数和网格数。 另一个是填字游戏。在这里你只需要找到浏览器左侧提到的那些单词。 要运行此游戏,您需要在系统上安装浏览器。下载并在代码编辑器中打开此项目。然后有一个 index.html 文件可供您修改。在命令提示符中运行该文件,或者您可以直接运行索引文件。使用 Google Chrome 或 FireFox 可获得更好的用户体验。此外,这是一款多人游戏,双方玩家都是人类。 这个游戏包含很多 JavaScript 验证。这个游戏很有趣,如果你能用一点 CSS 修改它,那就更好了。 总的来说,这个项目使用了很多 javascript 和 javascript 库。如果你可以添加一些具有不同颜色选项的级别,那么你一定可以利用其库来提高你的 javascript 技能。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值