如何理解ScanDef的概念
文章目录
- 背景:reorder和repartition的概念
- DEF文件的结构
- 写出sdf文件
- 一些好文链接
Scan Def文件是在我们insert DFT之后write out出来,本篇博文对Scan Def的基本概念,以及def文件的格式进行介绍。
版权所有,请勿随意转载
作者:ciscomonkey
背景:reorder和repartition的概念
因为scan insert 会增加很多额外的路径,为了符合die的大小和时序需求,我们应该尽可能地减小这些路径,其中一种优化方式就是基于物理信息来优化。
什么是Scan Reorder
如下图所示,在一条scan chain里面,交换s’can cell的顺序,就是Scan reorder。从而解决了一些route太长的问题。
什么是Scan Repartition
如下图所示,在Scan chain与Scan chain之间,互相交换Scan cell,叫做Scan Repartition。必须要补充说明的是这里我所说的交换,是只在report里面的内容上面的交换,并是这两个cell的位置交换,记住,我们的任务是要减少routing。如下,我将继续用swap来说明,但始终注意并不是交换scan cell的物理位置,只是,交换chain 的scan element。
在Scan reordering 和repartition的时候,也不是任意可以交换的。需要考虑的因素有clock mixing, DFT partitions ,multivotage regions和 multiple test modes。所以传达这个信息的方式,我们用DEF来描述,只需要告诉Layout 工具哪些是可以reordering 哪些可以repartition,后端工具无需去理解DFT 的约束。
DEF文件的结构
def文件采用了stub chain来定义,stub chain并不等同于Scan chain,他是Scan chain 的element。另外def文件的cell并不包含所有的cell,不能优化的cell,不会出现。例子如下:
DEF文件如上图所示,总共有8条chain,列举了产生的前3条,stub chain的内容。
**START 和STOP:**指的是stub chain的边界。边界可能是I/O ports,logic gates,latch, buffer等
**FLOATING:**指的是unordered list ,可以被后端用来自由的reorder。当然是在当前这个stub chain内。
**ORDERED: ** 描述了在该组内不能reorder的scan cell,但可以整体在stub chain里面进行reorder,换句话说就是order里面的内容是捆绑在一起的,不能对捆绑的内容进行改变了,只能对整体在该stub chain内进行order。
BIST: bist的属性,这里暂不介绍,可能与LBIST测试有关,这里暂不介绍,实际工程中暂时没有找到该属性。
PARTITION: 指的是stub chain可以被repartitioned(swap)标志,只有相同partition的才能swap 斯stub chain elements,partition name是独一无二或者没有partition的 stub chain将不能够实现swap。关于,partition name, 官方的解释如下,并没有说ORDER里面的内容。
关于这个stub chain elements的表述方法,我有两个理解,一个是交换stub chain里面的元素,一个是以stub chain 为单位来交换。关于前者,我存在的疑虑是已经捆绑好的ORDER部分,能否进行SWAP, 经讨论后,如果支持后者,我又思考,如果是以stub chain为单位的话,那么如果stub chain的长度不一致怎么办?还能否做到chain length的长度一致的基本原则。所以,经过考虑后,我认为支持前者的意思,这样长度不会改变,但已经捆绑后的为什么能够交换呢?因为有相同的PARTITION的identify。
一条stub chain包含0个或多个 ordered section, 但是只会有0个或者1个floating section, 因为在一个stub chain里面多个FLOATING section是没有意义的。
所以综上所述,我形成了下面的想法:
写出sdf文件
change_names -heri -rules verilog
write_scan_def -output [formate "%s%s" ./$TOP_design _scan.def]
一些好文链接
1
2
如何理解ScanDef的概念相关推荐
- c# 添加中文描述 给enum_理解C# 核心概念 – C# 程序集本地化
在之前几讲中,老白给大家介绍了C#中module和Assembly的生成和使用.在这一篇中,老白将更加深入的介绍下Assembly其中的一个知识点--本地化(Localization). 什么是本地化 ...
- 理解 Keystone 核心概念 - 每天5分钟玩转 OpenStack(18)
作为 OpenStack 的基础支持服务,Keystone 做下面这几件事情: 管理用户及其权限 维护 OpenStack Services 的 Endpoint Authentication(认证) ...
- 十分钟带你理解Kubernetes核心概念
原文地址:http://www.dockone.io/article/932 十分钟带你理解Kubernetes核心概念 本文将会简单介绍Kubernetes的核心概念.因为这些定义可以在Kubern ...
- 从构建区块链理解区块链概念
从构建区块链理解区块链概念 import hashlib import json from datetime import time from urllib.parse import urlparse ...
- 通过插画理解kubernetes基本概念
========== 第一篇 ========== 转自:https://www.cnblogs.com/kouryoushine/articles/8007648.html 插画版Kubernete ...
- 一张图理解AOP关键概念
一张图理解AOP关键概念 Aspect(切面) Joint Point(连接点) Advice(通知) Pointcut(切入点) Weaving(织入) 这里以跟踪方法调用为例,Calculate为 ...
- 深入理解CRM的概念
深入理解CRM的概念 什么是CRM CRM(Customer Relationship Management),即客户关系管理.CRM概念最初由美国Gartner Group集团于1980年提出,而在 ...
- 用工厂流水线的方式来理解RxJava的概念
现在有很多的 RxJava 入门教程,但是大多数都是示例代码,并不能让人很快理解 RxJava 的原理和方法,这篇文章就用流水线来比喻 RxJava 的开发方式,看完这篇文章后你就能理解 RxJava ...
- [原创]理解泛函的概念和能量…
原文地址:[原创]理解泛函的概念和能量泛函的梯度下降流 作者:小腹黑zju 对本篇文章进行转载需说明出处: 1. 泛函的概念 函数y=f(x)是一个变量x∈R到y∈R的一个映射 ...
最新文章
- 重载自增++和自减--运算符
- 即将推出.NET Framework 4.7.2中的一些亮点
- Modelsim command line 传参数到 .do 文件
- AI+药物研发:人工智能赋能新药研发(人工智能应用案例)
- Unity计划放弃支持部分图形特性
- (16)System Verilog禁止类中所有变量随机化
- 力扣513. 找树左下角的值(JavaScript)
- AngularJS 技术总结
- c语言课程设计报告书通讯录,C语言课程设计学生通讯录管理系统设计
- 2021.9.8 华为笔试题第三题
- android实现QQ空间和QQ好友分享功能
- angular 脏值检测基础流程
- 雅诗兰黛公司以2019年乳腺癌防治运动团结全世界并带来希望
- 2021年scrapy一分钟内爬取笔趣阁整本小说存为txt|解决章节排序问题
- Python Flask框架-开发简单博客-认证蓝图
- 教你用单片机表白2019(文末送代码)
- 计算机网页设计布局与排版研究,计算机网页设计中的布局与排版研究
- 卡罗拉 (COROLLA) - 参数配置
- JTAG, TTL, CFE
- 如何修改文件的创建时间?