Introduction to Multi-Mode Chains
介绍如何使用多模式进行链分配。多模式扫描链用于以下用途:

1.如果EDT IP未使用一个bypass构建,则构建bypass(单链bypass/多链bypass)。

2.为EDT模式创建多个配置。

3.如果使用分层DFT,则需要对包裹的核心进行内部和外部模式扫描链。

一个简单的例子。该设计包括26个紫色和绿色扫描单元类型的扫描元件。在模式A中,使用整个完整的扫描单元群,并将其连接到9的链长度以形成3条链。在模式B中,只有绿色类型的扫描元件用于在图5-11中,模式a使用黑色si1、si2和si3作为扫描链输入,其相应的扫描输出端口为so1、so2和so3。在模式B中,只有2条链,绿色端口标记为so1和so2。

Multi-Mode Gating Logic
一旦完成了每个模式的扫描元件分布,就可以确定每个模式中的扫描路径发散的位置。这些扫描路径位置称为拐点。当给定扫描元件存在多个扫描路径源时,识别拐点。在第图5-11中,这些是添加多路复用器的点。
Multi-Mode Scan Insertion
这种新的扫描插入基础结构的主要优点之一是能够分配扫描元素并为多个模式分配扫描链。当指定了多个模式时,扫描插入工具将自动插入能够根据所选模式重新配置扫描链的选通逻辑。

如果使用多模式,则您可以查看扫描链在所有不同模式下的缝合方式,并且可以更改特定和/或所有模式的规格。你也有能力分析,看看扫描链是如何平衡的。在下面的示例中,添加了前两个模式mode1和mode2。在模式1中,chain_length指定为200,因此工具将平衡扫描链,每个扫描链包含大约200个触发器。在模式2中,触发器的总数被划分为20个链。

Example:
>add_scan_mode mode1 -type unwrapped \
-single_clock_domain_chains on \
-single_clock_edge_chains on -chain_length 200
>add_scan_mode mode2 -type unwrapped \
-chain_count 20
# Before scan gets inserted, you can analyze the different scan modes and scan chains
>analyze_scan_chains
>report_scan_chains
这里的report_scan_chains命令告诉在模式1中将有多少个链,以及在模式2的20个扫描链中的每个扫描链中将有多少触发器。如果决定一个链中有太多触发器,并且希望查看如果分配了30个链,那么在一个链中将识别出多少触发器,使用修改的约束重新指定,然后analyze_scan_chains和report_scan_chain。
>delete_scan_modes mode2
>add_scan_mode mode2 -type unwrapped -chain_count 30
>analyze_scan_chains
>report_scan_chains
现在,如果确定每条链的触发器数是可以接受的,那么使用insert_test_logic缝合扫描链。
>insert_test_logic -write_in_tsdb On
insert_test_logic-write_in_tsdb On命令将设计和TCD文件写入tsdb_outdir目录结构,以便atpg生成可以使用它。
Chain Port Sharing
可以在不同模式的链之间共享扫描输入和扫描输出连接。额外的选通逻辑插入到扫描输出侧(在链的最后一个元素之后),以仅在其活动模式期间使用2x1 MUX(2-mode共享)或AND/or逻辑(多模式共享)启用每条链路径。可以共享现有端口/管脚或生成的端口。
 
Existing Ports/Pins
通过在add_scan_mode或create_scan_chain_family命令。例如,以下命令将导致端口MY_SCAN_IN和MY_SSCAN_OUT在Core和Wrapper模式之间共享。core和wrapper是类型类的内置开关。

> add_scan_mode Core \
-include_elements [get_scan_elements -class core] \
-si_connections MY_SCAN_IN \
-so_connections MY_SCAN_OUT \
> add_scan_mode Wrapper \
-include_elements [get_scan_elements -class wrapper] \
-si_connections MY_SCAN_IN \
-so_connections MY_SCAN_OUT
Generated Ports
通过使用-si_port_format和-so_port_format选项指定忽略%s模式名称字段的相同格式规则,可以在模式之间共享该工具生成的端口。例如,以下命令将导致端口EXT_SCAN_IN1到EXT_SCAN _IN10和EXT_SCAN-OUT1到EXT_SCAN_OUT10在模式Basic和Wrapper之间共享:
> create_scan_chain_family ext_chains -chain_count 10 \
-si_port_format “EXT_SCAN_IN%d” \
-so_port_format “EXT_SCAN_OUT%d” \
-include_elements [get_scan_elements -class wrapper]
> add_scan_mode Basic -chain_count 100 \
-include_elements [get_scan_elements] \
-include_chain_families { ext_chains }
> add_scan_mode Wrapper -include_chain_families { ext_chains }
Population Control
可以明确指定每个扫描模式中考虑分配的扫描单元集。可以使用add_scan_mode选项“-include_elements”和/或“-incrude_chain_families”完成。只有状态为“可用”的scan_element对象才能添加到population.因此,可能需要将“activechildscanmode”属性设置为特定的子模式值,以便将其相应的现有分段包括在总体中。
 
Default Population
为方便主流用户,如果add_scan_mode命令没有调用“-include_…”选项,那么该命令将对此时定义的每个对象隐式调用,即:
> add_scan_mode Implicit_population
really maps to:
> add_scan_mode Implicit_population \
-include_chain_families [get_scan_chain_families] \
-include_elements [get_scan_elements]
这可能不一定是模式所需的population,因此在使用此功能时应谨慎。
Population prioritization
如果同一扫描元素包含在多个“-include_…”选项中,则以下优先级规则规定了如何使用它:

1.-include_chain_families

2.-include_elements

Scan_chain_family包含和-include_elements选项包含的扫描元素将分配给Scan_chain_family对象指定的链。应该注意的是,现有链会自动从考虑分配的总体中排除,因此永远不会连接到其他扫描元素。


Scan Insertion Flow Steps

当创建新的扫描链时,新的扫描插入能力提供了对扫描元素分组/排序的更好控制。flow有三个主要步骤。

首先,在设置期间,在加载设计和Tessent Cell library(也接受ATPG库文件)的同时,还必须描述任何现有扫描段(也称为子链)和现有扫描链(来自先前扫描插入过程)。add_scan_segments和add_scan_chains命令可分别用于此目的。

第二,在系统模式从SETUP转换到ANSYSTEM期间,该工具将运行DRC并从手头的设计中提取所有可用的库单元/叶单元扫描元素。此时,所有现有的扫描元素都已定义,可以使用get_scan_elements命令进行自检。

第三,在分析过程中,可能会根据一些命令创建虚拟扫描元素;例如,如果请求插入用包装单元。同样,可以使用get_scan_elements命令对所有创建的虚拟扫描元素进行自检。

Controlling Scan Insertion

命令set_scan_insertion_options允许控制一些影响扫描插入的参数。例如,如果希望所有链的最大链长度为1024,请使用以下命令:

> set_scan_insertion_options -chain_length 1024

当使用add_scan_mode命令添加扫描模式时,您可以通过简单地用新值重新指定它们来覆盖大多数常规扫描插入设置。该命令基本上获取活动扫描插入设置的简单描述,并覆盖任何add_scan_mode中明确指定的选项。如果要为模式ext_mode创建具有长度为512的较短链的外部模式,可以按如下操作:

> add_scan_mode ext_mode –type external -chain_length 512

或者,如果想在full_mode中创建一个没有长度限制的单个OCC链,对于其余的扫描元素填充,该链长度为256,您可以按如下方式操作:

> create_scan_chain_family occ \
-chain_count 1 \
-chain_length unlimited \ // overrides to no length limit!
-include_elements [get_scan_elements -filter is_occ]
> add_scan_mode full_mode -chain_length 256 \
-include_elements [get_scan_elements] \
-include_chain_families occ

Scan Insertion for Unwrapped Core

本节介绍未包裹核心的扫描插入。对于unwrapped的核心,没有创建包装单元,因此扫描插入流程使用之前描述的通用扫描插入步骤。

在此扫描插入流程中,首先识别设计中存在的扫描元素。接下来,可以创建scan_chain_family对象,指示工具如何分配特定的扫描元素子总体。在此阶段,定义一个或多个扫描模式。每个扫描模式的填充是通过包括scan_element和scan_chain_family对象来定义的。如果您没有明确添加至少一个扫描模式,该工具将推断一个默认模式,其中包括每个scan_element和scan_chain_family对象。一旦读入了预扫描缝合的网表以及所需的库,就可以详细设计(使用set_current_design)。如果已经使用DftSpecification插入了EDT IP,并且使用了DFT信号,则在扫描插入期间,这些信号在此处可用,并且工具知道并使用它们。例如,如果扫描启用被声明为DFTSignal,则无需再次声明扫描启用。该工具知道哪个端口被声明为scan enable,并在不使用set_scan_enable属性的情况下使用它。 如果已插入EDT IP,并且DFT信号用于指定不同的模式,那么对于EDT_mode,在指定时可以使用-EDT_instance连接到EDT IP添加扫描模式。工具自动理解此模式的启用解码。Example 1: If EDT IP was inserted and an ICL for EDT IP exists then use:

>set edt_instance [get_instances -of_icl_instances \

[get_icl_instances -filter tessent_instrument_type==mentor::edt]]
>add_scan_mode edt_mode -type unwrapped -edt_instance $edt_instance
Example 2: If EDT IP was inserted and an ICL for EDT IP does not exist, then use:
>set edt_instance [get_instance -of_modules *_edt_c1 ]
>add_scan_mode edt_mode -type unwrapped -edt_instance $edt_instance
在check_design_rules期间,运行DRC。如果存在任何预先存在的扫描段,请之前文章中的“预先存在扫描段”,了解如何处理它们。如果请求包括多个模式并且使用DFT信号,那么下面的示例将说明如何做到这一点。
Example 3: EDT IP未内置bypass。可使用DFT信号edt_mode、multi_mode和single_mode。默认类型是unwrapped的,因此没有必要指定它们。
>set edt_instance [get_instance -of_modules *_edt_c1 ]
>add_scan_mode int_edt_mode -edt_instance $edt_instance
>add_scan_mode multi_mode -chain_count 6
>add_scan_mode single_mode -chain_count 1
下面的示例分为三个主要部分。第一部分-设计、库和设计精化,展示您如何阅读Tessent Cell Library和Synthesized Verilog Gate级设计。如果已插入EDT IP,则使用set_tsdb_output_directory指向tsdb数据库所在的位置。然后使用read_design从最后一次插入中读取所有其他支持文件,如ICL、PDL、TCD,并详细说明设计。
# Design, Library loading and design elaboration.
>set_context dft -scan -hierarchical_scan_insertion
# Sets and opens the tsdb_output directory.
>set_tsdb_output_directory ../tsdb_outdir
>read_cell_library ../../../library/tessent/adk.tcelllib
# Read synthesized netlist
>read_verilog ../3.synthesis/processor_core_synthesized.vg
# Use read_design to read in information(DFT signals etc) performed in previous pass.
>read_design processor_core -design_identifier rtl2 -icl_only
>set_current_design processor_core
本示例的第二部分定义了需要声明的时钟和设计约束(如果存在)
# Define clocks and design constraints if any
>add_clock clock1
>add_clock clock2
# Run DRCs, specify different scan insertion options, and write scan stitched design
>check_design_rules
>report_clocks
>report_dft_signals
最后一部分是运行DRC的地方,如果使用了DFTSignal,那么可以使用add_scan_mode命令来指定它们。如果未指定tsdb_outdir,可以使用insert_test_logic-write_in_tsdb On指定它,以将设计文件和相邻文件写入tsdb目录数据库。
# Find edt_instance
>set edt_instance [get_instances -of_icl_instances [get_icl_instances \
-filter tessent_instrument_type==mentor::edt]]
# Specify different modes the chains need to be stitched
# EDT is built-in with Bypass
>add_scan_mode edt_mode \
-edt_instance $edt_instance
# Before scan gets inserted can analyze the different scan modes and scan chains
>analyze_scan_chains
>report_scan_chains
# Insert scan chains and writes the scan inserted design into tsdb_outdir directory
>insert_test_logic
>report_scan_chains
>exit
Example 1: 1 mode: 32 flat scan chains
这个非常基本的示例中,使用默认分布约束(多个时钟域、多个时钟边沿、功率域和每条链的单个簇),在32个扫描链上分配(展开/平坦)所有扫描元素。该工具将链连接到名为ts_si[31:0]和ts_so[31:0]的新顶级端口。
> add_scan_mode unwrapped_mode -chain_count 32
> analyze_scan_chains
> insert_test_logic
Example 2: 2 modes: edt, multi bypass (EDT controller already present)
在此示例中,对于edt模式,从所有扫描元件分配200条链,并连接到指定的edt控制器si/so引脚。

对于多旁路模式,所有扫描元素都分布到12个多旁路链,并连接到新的顶级端口,称为ts_multi_bypass_si[11:0]和ts_multi_bypass_so[11:0]。还创建了名为ts_stm0s0和ts_stm1s0的默认顶级ScanTestMode端口,以控制两种模式的激活

> add_scan_mode edt \
-si_connections edt_inst/to_si[199:0] \
-so_connections edt_inst/from_so[199:0]
> add_scan_mode multi_bypass -chain_count 12
> analyze_scan_chains
> insert_test_logic
Example 3: 3 modes: edt, multi bypass, single chain (EDT controller already
present)
这个例子是前一个例子的变体。edt模式由200条链组成多模式旁路有12条连接到顶级端口的链,在单链时有只需一次扫描输入和一次扫描输出。顶层ScanTestMode端口称为edt_mode_enable,

创建multi_bypass_mode_enable和single_modeenable以控制3种模式。对于多旁路模式,所有扫描元件分配到12个多旁路并连接到名为tsmulti_bypasssi[11:0]和ts_多通道_ so[11:0]。对于单链模式,所有扫描元素都分布到1个并连接到名为tssingle_chain_si和tssingle-chain_so的新top-level端口。

> add_scan_mode edt -si_connections edt_inst/to_si[199:0] \
-so_connections edt_inst/from_so[199:0] -enable_connections edt_mode_enable
> add_scan_mode multi_bypass -chain_count 12 -enable_connections \
multi_bypass_mode_enable
> add_scan_mode single_chain -single_class_chains off \
-single_power_domain_chains off -single_cluster_chains off -chain_count 1 \
-enable_connections single_mode_enable
> analyze_scan_chains
> insert_test_logic

Mentor-dft 学习笔记 day12-Multi-Mode ChainsScan Insertion Flows相关推荐

  1. ElasticSearch 学习笔记:Multi Search

    本文目录 1 简介 2 格式 3 header格式 4 body格式 5 返回格式 6 性能 7 相关文章 1 简介 批量查询接口(Multi Search API)允许在一次请求中执行多个查询操作, ...

  2. Unity2D学习笔记Day12:敌人统一死亡动画+Class的继承(含虚函数virtual,重写override)

    学习资源:B站 M_Studio<Unity教程2D入门>17 Unity Assets:Sunnyland Day12 调用frog死亡动画效果 这里我没有完全按照教程的方法,是自己写的 ...

  3. Python学习笔记---day12函数进阶

    day12函数进阶 函数的嵌套 闭包 装饰器 上述内容均属于函数部分必备知识,以后开发时直接和间接都会使用,请务必理解(重在理解,不要去死记硬背). 1. 函数嵌套 Python中以函数为作用域,在作 ...

  4. 21天学通Java学习笔记-Day12(MYsql-JDBC)

    JDBC MYQL 基础: 用命令行进入MYSQL:shell > mysql -h host(主机) -u user(用户名) -p 回车,等待输入密码 退出MYSQL:mysql >  ...

  5. 学习笔记day12 synchronized底层实现及锁升级机制

    原博客:https://blog.csdn.net/weixin_40394952/article/details/118693945 一.synchronized使用方法 1.修饰实例方法,对当前实 ...

  6. python __name__怎么使用_python学习笔记26(python中__name__的使用)

    在python中,每个py文件都是一个模块,也都是一个可执行文件,即包含main方法.因此,对每个py文件,可以单独运行,也可以import它给其他客户使用,这两种情况不一样. 1. 如果模块是被导入 ...

  7. Python学习笔记:Day1-2 开发环境搭建

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  8. 【学习笔记】超简单的快速傅里叶变换(FFT)(含全套证明)

    整理的算法模板合集: ACM模板 目录 一.概念概述 二.前置知识 1. 多项式 2. 复数 4. 欧拉公式证明 3. 复数的单位根 / 单位向量 三.FFT 算法概述 四.离散傅里叶变换(DFT) ...

  9. OpenCV学习笔记(一)(二)(三)(四)(五)

    OpenCV学习笔记(一) 决心开始研究OpenCV.闲言少叙,sourceforge网站最近的版本是2011年8月的OpenCV2.3.1,下载安装,我这里使用的开发环境是vs2008,网上搜了一下 ...

最新文章

  1. HTML中的一些知识点
  2. JRuby大捷:ThoughtWorks宣布Mingle发布在即
  3. 漫谈强化学习中的引导搜索策略
  4. Android SqliteManager 源码
  5. Java从string数组创建临时文件
  6. Java笔记-JNI中简单的参数与返回值处理
  7. 190916-二级format补齐
  8. html底部弹出选择,jQuery手机端底部弹出菜单列表特效代码
  9. 扩展欧几里得算法(双六游戏)
  10. 腾讯面试Android高级岗。居然被一个多线程基础面倒了?
  11. (转)[Cocoa]深入浅出 Cocoa 之 Framework
  12. 同时买票是怎么实现的_搞笑GIF段子:这位挖掘机司机真的很牛,同时胆子很大...
  13. 数据库设计系列[04]组织结构加入权限系统
  14. Sql分页存储过程(支持多表分页存储)
  15. HCNP-Cloud云计算认证
  16. 注意力、自注意力和多头注意力
  17. 「读书感悟系列」苏世民:我的经验与教训
  18. 如何拆台式计算机光驱,如何拆开光驱
  19. 【论文阅读】正则表达式也可以被当成神经网络训练吗?[附项目代码与代码详细说明]
  20. (示例一)功能简单的小区快递管理系统(二维数组存储数据)

热门文章

  1. [译] 从原型图到成品:步步深入 CSS 布局
  2. 揭秘刘安和兄弟连不是骗子吗,手法如此传销,培训机构竟利用网络营销上市 现在互联网这么大,娱乐界乱搞,教育界还乱搞,如今泛媒体时代,人人都是KOL,每个人都是意见领袖,一人一个自媒体号,人人都可以发飙
  3. SPA SEO SSR三者有什么区别
  4. CSDN - 盛洪宇(技术胖) - Vue2.x从入门到实战
  5. linux 操作系统root账号被锁定的两种解决方法
  6. onvif 模拟摄像头_ONVIF 设备发现(网络摄像头)——实例笔记
  7. 复杂背景下的自动驾驶目标检测数据集
  8. 做测试8年,33岁前只想追求大厂高薪,今年只求稳定收入
  9. 浏览器提示ssl证书过期怎么办
  10. F. Floor Plan