【Tessent IJATG Users Manual】【Ch5】IJTAG Network Insertion

news2024/9/28 13:29:07

  • The IJTAG Network Insertion Flow
    • IJTAG Network Insertion Example
    • Modification of the IJTAG Network Insertion Flow
  • How to Edit or Modify a DftSpecification
    • Edit or Modify Method
    • DftSpecification Examples

IJTAG Network Insertion 可以将已有的 instrument 连接起来,插入 SIBs、TDRs 和 ScanMuxes 等,以此来创建自己的 IJATG network。

IJTAG Network Insertion 可以将 network 连接到一个 TAP 控制器或者是设计中预先存在的 TAP 控制器。

IJTAG Network Insertion 的实现是直接使用 create_dft_specification 命令。工具会读取设计中所有 instrument 的 ICL 模型,然后根据 ICL 模型需要被如何访问来插入 SIB 或者是 TDR。

如果需要的话,可以对 IJATG network 网络进行编辑或者修改,以满足设计需求。

在完成设计编辑之后,可以使用 extract_icl 命令生成 IJATG 网络的 ICL 描述。IJATG network 插入之后,工具不会自动执行 ICL 提取,因为你可以在提取之前进行一些额外的编辑。

Tessent IJTAG 会生成并连接自己的TAP。如果 IJATG network 需要连接到已经存在的 TAP 控制器,需要提供该 TAP 控制器的 ICL 。


The IJTAG Network Insertion Flow


基本的 IJTAG Network Insertion 流程和对应的一些命令如下图所示:

在这里插入图片描述

如上图 5-1 所示,IJTAG Network Insertion Flow 是相对比较简单。因为你想要修改设计文件,所以就必须将工具的 context 设定为 dft,并且加载单元库、设计文件和需要使用的所有的 instrument 的 ICL (可自动加载)。
create_dft_specification 命令告诉工具创建 DftSpecification ;process_dft_specification 命令在生成或编辑设计文件之前会进行验证。

工具执行完 DftSpecification 中的内容之后,会输出一系列文件,这些文件中包含所有插入的 IJTAG network 对象(SIBs、TDRs 和 ScanMuxes)( ICL 和 verilog 两种格式)和所有修改后的设计文件。

虽然 IJTAG network 是使用 create_dft_specification 自动生成的,但是你可以使用编辑命令或者是display_specification命令打开 GUI 对生成的 DftSpecification 进行修改。

如前所示, IJTAG network 的 ICL 描述并不是自动生成的,因为你可能对其进行进一步的编辑。但是,因为所有的数据都保存在内存中,所以你可在后面使用 extract_icl命令执行 IJTAG Network 的提取过程。


IJTAG Network Insertion Example

IJTAG Network Insertion 的示例如下所述。

set context dft -no_rtl

## Read the libraries
read_cell_library ./library/adk_complete.tcelllib
read_cell_library ./library/memory.atpglib

## Read the netlist
read_verilog ./netlist/cpu_top_scan_tk.v
read_verilog ./generated/cpu_top_edt.v
read_verilog ./PLL/PLL.v -interface_only

## Read ICL and PDL files before set_current_design
read_icl ./PLL/PLL.icl
dofile ./PLL/PLL.pdl
set_current_design cpu_top

## set design level before running set_system_mode analysis
set_design_level chip

## Specifiy the TAP pins using set_arrtibute_value
set_attribute_value tck_p  -name function -value tck
set_attribute_value tdi_p  -name function -value tdi
set_attribute_value tms_p  -name function -value tms
set_attribute_value trst_p -name function -value trst
set_attribute_value tdo_p  -name function -value tdo

set_system_mode analysis
report_icl_modules

## Automatically read any ICL from the directories that verilog is picked from
creat_dft_specification
report_config_data

## Use display_specification to edit or modify the specification or use editing commands
## if needed

process_dft_specification
extract_icl
exit

上述流程中,读入的 Verilog Netlist 已经插入了扫描链和带有 PLL 的 EDT IP。PLL 模块的 ICL 和 PDL 是在此之前单独生成并验证的。

因为 IJTAG network 是在 chip level 进行插入(set_design_level chip),所以在set_system_mode analysis之前需要指定 TAP pins。

使用 create_dft_specification 命令,PLL 和 EDT instruments 的 ICL 会被自动配置,然后插入到 IJTAG network 中。使用 report_config_data 可以报告该 network 中的内容。

如果 IJTAG network connection 是想要的,就可以使用 process_dft_specification 命令,否则可以使用编辑命令或者是打开 Configuration Data Visualizer 对其进行编辑。

最后一步就是使用 extract_icl 提取 set_current_design 所指定的 level 的 ICL。

【所以 DdfSpecification 是告诉工具如何进行 IJATG 插入,ICL 是在对完成插入的设计的 IJATG netwrok 的完整描述。如果当前设计是其他设计中的实例,在其他设计进行 IJATG netwrok 插入的时候,就可以使用当前设计的 ICL。ICL 中描述了当前设计中有哪些 Ijtag Instances(也可以叫 instrument) 以及它们之间的连接关系。】


Modification of the IJTAG Network Insertion Flow

大多数情况下,使用基本 IJTAG Network Insertion flow 即可,如果需要对其进行修改,可以使用如下内容。

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


How to Edit or Modify a DftSpecification


Edit or Modify Method

创建新的或者修改现有 DftSpecification 内容的两种方式:

  • Configuration Data Visualizer
  • ASCII text editor
  • 命令行

1. 图形化界面

Configuration Data Visualizer 提供创建和修改 DftSpecification 内容的图形化界面。在打开窗口中,会以树状目录显示 DftSpecification 中已经定义的内容。
你可以查看 Specification 的层次结构,对其中的 elements 进行移动,创建新的 element,或者对现有的 elements 及进行修改。

如下图所示,左边是 DftSpecification 中的内容,右边是可配置的内容。

在这里插入图片描述

选中最顶层的 DftSpecification ,鼠标右键可以添加内容。因为每个 DftSpecification 中只能由 1 个 IjtagNetwork,当前设计中已经存在了,所有右键就不会有。

在这里插入图片描述

【这个 GUI 的字体好小】

使用下述命令可以创建一个新的 DftSpecification。

在这里插入图片描述

该命令会打开 Configuration Data Visualizer 并创建和 current design 相关联的 DftSpecification Wrapper。

如果想查看内存中的 DftSpecification,对其进行修改或者追加特定的 IJTAG network,也可以使用该命令。例如,使用该命令打开当前设计中一个 ID 为 good3 的 DftSpecification。

在这里插入图片描述

Tessent Shell 中和 IJTAG Network Insertion 相关命令的小结:

在这里插入图片描述

2. ASCII text editor

就是文本编辑器直接打开 DftSpecification 文件,然后按照规定的语法修改就行了。也没有什么好说的。

但是图形化界面和文本编辑器用的不是很多,刚开始学的时候,可以用一用,在实际的项目设计中,都是 flow,更多的是考虑在命令行或者脚本中对其进行修改。

3. 命令行修改


  • CMD1read_config_data -in $spec -from_sting {}

    这个命令可以将特定的字符串(-from_sting后面 {} 中的内容,{} 也可以是双引号)写入到 DftSepc 中,字符串需要遵循 DftSepc 的语法,字符串可以放在 Tcl 变量中。

    如果想在 IjtagNetwork 中的 SIB 下面新加入一个 tdr,就可以使用下述命令:

    在这里插入图片描述

    Tdr wrapper 中的所有内容都可以按照规定的语法在这里定义。

    但是有一个问题是,双引号中的内容不能有变量,所有的变量都会当作普通字符串,如果想要使用变量,可以使用下述方式:

    在这里插入图片描述

    先将要插入的内容放到一个变量中,然后把变量给到命令。


  • CMD2add_config_element & set_config_value

    首先使用 add_config_element 命令插入一个 wrapper :

    在这里插入图片描述

    然后在使用 set_config_value 命令设定参数值。

    在这里插入图片描述
    该命令就是将一个 OCC wrapper 中的 clock_intercept_node 选项设置为 $clk

    使用 get_config_value -in_wrapper wrapper_object 可以返回 wrapper 中那些内容可以通过 set_config_value 命令控制。

    set_config_value 命令只能设计 wrapper 中已经存在的选项的值。如下图所示的 Tdr wrapper,绿色方框中的选型时默认存在的,可以直接设置,但是对于红色方框中的内容,如果是空的,就不能设置。如果有内容,如 connection(0) 已经存在了,那么是可以用该命令对其进行改的。

    也就是说,set_config_value命令只能修改已经存在的内容,不能增加内容

    在这里插入图片描述


  • CMD3move_config_elementdelete_config_element
    具体用法:move_config_element object_spec [-in_wrapper wrapper_name_or_object]
    就是移动 wrapper 的位置。

    【这里,可以移动和删除的内容可以是 wrapper 中的某一个配置】
    在这里插入图片描述


DftSpecification Examples

这里给出了一些使用 DftSpecification 的 element 和 syntax 创建特殊的或者常用的 IJTAG Network Insertion 任务。【就是特定的需求在 IjtagNetwork中如何实现】

这里所有的示例都是基于使用 ASCII text editor 来创建 DftSpecification 。(就是直接在文本编辑器中对 DftSpec 文件进行修改。)
-----------------------------------------------------------------------
1. Connection of a Basic Scan Instrument to a SIB
-----------------------------------------------------------------------
在该示例中,有一个带有单一 scan interface 的 instrument ,你想要将其连接到 SIB。

Instrument

在这里插入图片描述

DftSpecification

在这里插入图片描述

使用 ID 为 S3 的 SIB wrapper,并在 SIB wrapper 中声明 instrument 的设计实例的路径。

不需要指定 scan-in、scan-out 等其他控制端口,因为工具会从 ICL 模型描述中找到这些信息。

instance path 必须存在于设计中,因为 Dftspecification 只是按照指定内容将其连接起来,而不会创建新的 design instance。

Result

IJTAG network 中会插入一个 SIB 。该 SIB 控制 instrument 实例 design2_I1/instrumentB_I1 的 SelectPort “sel” 。

该 instrument 的的端口连接关系:

  • scan-out 被连接到 SIB 的第二个 scan-in;
  • scan-in 连接到和 SIB 的第一个 scan-in 端口一样的 IJTAG scan chain;

类似的,instrument 的 scan-、capture- 和 update- 控制端口连接到 SIB 对应接收这些控制信号的端口上。Tck 也是也是如此。

---------------------------------------------------------------------------------------------------
2. Creation of a a Scan Instrument With More Than One ScanInterface
---------------------------------------------------------------------------------------------------

在该示例中,instrument 有两个 ScanInterface 定义。如果使用和示例1中一样的语法,工具不知道将 SIB 连接到哪一个 scan ports。因此,在这种情况下,必须声明所连接的 ScanInterface 的名字。

Instrument

在这里插入图片描述

DftSpecification

在该示例中,将 ScanInterface P2 连接到了 SIB “S3”,P1 连接到其他地方。

Sin(S3)  {
  DesignInstance(design2_I1/instrumentC_I1) {
    scan_interface : P2 ;
  }
}

-------------------------------------------------------------
3. Connection of a Parallel Data Instrument
-------------------------------------------------------------

该示例展示如何将一个 instrument 的并行数据端口连接到 TDR。

Instrument

在这里插入图片描述

DftSpecification

将 instrument 连接到 TDR,使其成为 DftSpecification 的一部分。

Tdr(T3) {
  DataOutPorts {
    connection(6:0) : design2_I1/instrumentA_I1/INA[6:0] ;
  }
  DataInPorts {
    connection(7:0) : design2_I1/instrumentA_I1/OUT[7:0] ;
  }
}

Result

IJTAG network 中会有一个 8bit 的 TDR 寄存器。TDR 的 size 根据连接的需求自动确定确定

TDR 包含 8 个数据输入端口,7 个数据输出端口和所有常用的控制信号端口。

instrument 的 7 个最低位(即 7 个数据输入端口)连接到 TDR 的 7 个数据输出端口;相似的,instrument 的 8 个数据输出端口连接到 TDR的 八个数据输入端口。8bit 的 TDR 寄存器从中捕获数据。

-------------------------------------------------------------------------------------
4. Connection of a Parallel Data Instrument to the Top Level
-------------------------------------------------------------------------------------

该示例展示如何将 instrument 的并行数据端口连接到 top level 的数据端口。

Instrument

在这里插入图片描述

DftSpecification

IjtagNetwork {
  DataOutPorts {
    connection(6:0) : design2_I1/instrumentA_I1/INA[6:0] ;
  }
  DataInPorts {
    connection(7:0) : design2_I1/instrumentA_I1/OUTA[7:0] ;
  }
}

如果 top-level 的输入端口已经连接到其他设计的端口,但是你还是希望保留上面定义的连接关系。

在这种情况下,工具会在 connected instrument pins 的 parent instance 中自动插入一个 mux ,在 DftSpecification 中描述与原始连接和新插入的连接之间的切换。

如果连接的引脚是 floating 或者 tied,或者连接到引脚的 net没有 fan-in (multiplexing : auto),工具则不会插入 mux。

所插入的 mux 的 select 连接到 top-level 创建的 DataInPort。

如果想要强制工具总是在 top-level 输入端口和 instrument 的引脚之间插入一个 mux,无论是否需要,需要使用 multiplexing 参数。当然,你也可以强制工具不插入 mux。

在这里插入图片描述

--------------------------------------------------------------------------
5. Connection of a Parallel Data Instrument to a TDR
--------------------------------------------------------------------------

该示例将 instrument 的并行数据端口连接到 TDR,这个 TDR 会在 specification processing 过程中插入。同时,也展示了 multiplexing 参数的使用。

和示例4一样,工具也会分析是否需要插入 mux。不同的是,这里插入的 mux 的 select 端口是连接到插入的 TDR 上的一个额外的 DataOutPort。

DftSpecification

在这里插入图片描述

Result

TDR 的 size 根据连接关系的需求自动确定。在该示例中,IJTAG network 网络中会包含一个 9bit 的 TDR 寄存器:8 个数据输入端口、8 个数据输出端口和所有的控制信号端口。

TDR register 的低 7 位连接到 TDR 的低 7 位数据输出端口,然后连接到 instrument 的 7 个数据输入端口。

相似的, instrument 的 8 个数据输出端口连接到 TDR 的 8 个数据输入端口,然后有 TDR register 的低 8 位来捕获数据。

TDR register 的第 9bit 和第 8 个数据输出端口用于 mux 的 select line。

6. Creation of a TDR With More Bits Than Needed for the Current Specification

基于示例 5,该示例说明当 specification processing 中连接关系未知时,如何在 TDR 中保留额外的 bits。

可以使用参数 length 来指定 TDR register 的 bits 数,但是该数不能小于满足连接关系所需要的最小 bit 数。

DftSpecification

在这里插入图片描述

--------------------------------------------------
7. Connection of an EDT Controller
--------------------------------------------------

------------------------------------------------
8. Connection to a TAP Controller
------------------------------------------------

------------------------------------------------
9. Creation of a Hierarchy of SIBs
------------------------------------------------

-----------------------------------
10. Usage of a ScanMux
-----------------------------------

----------------------------------------------------------------------------------------------------
11. Move of a SIB, TDR, or ScanMux Deeper Into the Design Hierarchy
----------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------
12. Change of the Instance Name of a SIB, TDR, or ScanMux
--------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------
13. Change of the Design and ICL Port Names of a SIB, TDR, or ScanMux
--------------------------------------------------------------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992244.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怀山府交付,怀柔主城品质生活完美呈现

时间是美好的质造者,也是美好的检阅者。 越秀天恒怀山府,作为越秀地产进驻北京的开篇之作,承载着越秀地产深厚的匠心传承与府系产品的卓越品质,以时间为笔,四季为墨,7月26日,终于迎来了盛大交付…

【数据结构与算法 | 力扣+二叉搜索树篇】力扣450, 98

1. 力扣450:删除二叉搜索树的节点 1. 题目: 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引…

开个技术外挂|用自动建模工具巧妙解决电子产品连续跌落被摔的损伤,再也不怕手滑了

啪嗒,这是心碎的声音 消费电子、网络设备、家电等行业需要对产品进行不同区域的多次跌落试验,以研究产品在已有损伤的情况下,再次发生跌落,产生的影响。连续跌落仿真计算,可以对多次跌落产生的损伤累计进行查验&#x…

CMU15445 (Fall 2023) Project 1 - Buffer Pool 思路分享

文章目录 写在前面Task 1 - LRU-K Replacement PolicyTask 2 - Disk SchedulerTask 3 - Buffer Pool ManagerNewPageFetchPageUnpinPageDeletePageFlushPage 写在最后 写在前面 操作系统为应用程序提供了默认的缓存机制,DBMS作为应用程序,为什么不使用默…

2024年中级消防设施操作员(考前冲刺)证模拟考试题库及中级消防设施操作员(考前冲刺)理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年中级消防设施操作员(考前冲刺)证模拟考试题库及中级消防设施操作员(考前冲刺)理论考试试题是由安全生产模拟考试一点通提供,中级消防设施操作员&#…

7.2 继承与多态:Python 面向对象编程的魔法

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

idea中怎么使用git把项目提交到远程仓库

git的版本控制 在gitignore中添加这些文件 可以在与远程仓库进行操作的时候 忽略掉这些文件夹 使用Git进行项目代码的版本控制,具体操作: 1). 创建Git本地仓库 当Idea中VS变成Git(G): 说明本地仓库创建成功。 2). 创建Git远程仓库 1、gi…

Deep-Live-Cam:只需单张图像即可实现人脸替换;零一万物、月之暗面再掀国产大模型资本战丨 RTE 开发者日报

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、…

萤石开放平台开发票流程

若您已经在开放平台完成充值,可通过以下方式自助开票 一、PC端开票 进入开放平台首页,登入账号,进入价格页面,点击首页右下方的“开票指引”入口 二、萤石云视频APP 萤石云APP:底部导航栏“我的”——点击“订单”…

如何编写一个有效的OKR(带有示例)

客户经常问我们的一个问题是:”我如何写出有效的目标和关键结果? 我如何写出有效的目标和关键结果? 一开始,要弄清楚不同的要素是很困难的,而且有这么多的指导和风格,你很难知道自己是否做对了。 在这篇…

【Nacos无压力源码领读】(三) Nacos 配置中心与热更新原理详解 敢说全网最细

本文将从 Nacos 配置中心的基本使用入手, 详细介绍 Nacos 客户端发布配置, 拉取配置, 订阅配置的过程以及服务器对应的处理过程; 配置订阅以及热更新原理相关的部分, 我看了主流的博客网站, 绝对没有比这更详细的讲解; 如果在阅读过程中对文中提到的 SpringBoot 启动过程以及…

k8s 与 docker 安装 Syncthing 文件同步服务器

Syncthing是一个开源文件同步工具,可以在多台设备之间实时同步文件或文件夹,官方网站:https://syncthing.net/ 下载地址:https://syncthing.net/downloads/ ,如果是windows一般推荐下载图形界面SyncTrayzor, 但我这边都…

视频循环存储的实现

目录 1. 三方工具 2. 视频存储的实现 2.1 分段存储 - 比如每15分钟 2.2 对齐到15分钟整边界 2.3 循环存储的实现 video_space_daemon.sh 3.封装 3.1 主执行程序,修订版 3.2 创建服务 3.3 service关联的执行脚本文件 4.额外的工作 附录A: ffmpeg视频存储…

中电金信三步法全面助力银行数字化营销体系建设

存量用户竞争时代 精细化经营、个性化服务与多场景覆盖 成为银行经营的重要策略 营销数字化转型不可或缺 但是,与所有转型的曲折、阵痛等特征一样,银行构建数字化营销运营体系过程中,亦走过一些弯路,包括: 缺少顶层…

收银系统源码-连锁店版本

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 私有化独立部署/全开源源码,系统开发语言: 核心开发语言: PHP、HTML…

【漏洞复现】某赛通电子文档安全管理系统 PolicyAjax SQL注入漏洞

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产&…

医药行业如何对内部机密数据进行加密保护?

一、医药行业加密解决方案 1、药品研发过程中加密保护重要数据,防止信息泄露 考虑到药品研发部门数据安全重要性高,且与其他部门较少业务关系往来,为防止公司研发配方泄密到其他部门或者公司外,研发部门实行权限控制。做到研发部…

JESD204B/C协议学习笔记

JESD204B基础概念 204B包含传输层,链路层,物理层。 应用层是对 JESD204B 进行配置的接口,在标准协议中是不含此层,只是为了便于理解,添加的一个层。 协议层指工程中生成的IP核JESD204B,负责处理输入的用户…

pod详解 list-watch机制 预选优选策略 如何指定节点调度pod

K8S是通过 list-watch 机制实现每个组件的协同工作 controller-manager、scheduler、kubelet 通过 list-watch 机制监听 apiserver 发出的事件,apiserver 也会监听 etcd 发出的事件 scheduler的调度策略: 预选策略(Predicates)…

JavaScript中的__setitem__方法

1、问题背景 Python中存在一个名为__setitem__的方法,该方法能够在向对象中设置值时对其进行处理。例如,以下代码演示了如何在Python中使用__setitem__方法对一个字典中的键值对进行平方处理: class CustomDict(dict):def __setitem__(self…