set_multicycle_path语法说明【转载】
(转载)
(其实多看手册就知道原因了)
Q:多周期路径中的检查保持时间时刻,为什么默认是在建立时间检查的前一个cycle?请大家谈谈自己的理解。 如:Set_multicycle_path -setup 7 -to [whatever] 那么hold time 应该在7-1这个cycle检查,为什么?
A:
多周期路径中检查保持时间,如果你对建立时间设置多周期,那么保持时间检查就默认在前一建立时间,比如:
楼主所设定:
set_multicycle_path -setup 7 -to [whatever]
若一个周期为10ns,则此时数据到达触发器的时间范围应该是:[60+Th,70-Ts]
而至于为什么,一方面就是primetime等的默认,另外就是在检查单周期时,通常也是要求如此的,即要求数据在[Th,10-Ts]时间范围内到达。(Th表示保持时间,Ts表示建立时间)
但倘若你同时设定建立时间和保持时间都为多周期路径约束,那么延时范围就可以变大,如:
set_multicycle_path -setup 7 -to [clk]
set_multicycle_path -hold 6 -to [get_pins C_reg /D]
那么此时的保持时间检查就在Th时,而不是在60+Th时,而此时的arrival time的范围就变大了
是:[Th,70-Ts]
所以一般采用后者设定,这样多周期路径部分电路的优化范围就变大了。
重申一点:采用
set_multicycle_path -setup 7 -to [clk]
set_multicycle_path -hold 6 -to [get_pins C_reg/D]
这样多周期路径部分电路的优化范围确实变大了,但是会有亚稳态的潜在危险,所以要小心!
而只用:
set_multicycle_path -setup 7 -to [clk]
你又必须保证path_delay足够大,不会产生hold-time violation,DC几乎不可能做到这一点。
加register-enabling logic解决亚稳态
首先:
无论是单周期还是多周期,hold检查都默认为setup的前一个时钟。
你写了set_multicycle_path -setup 7 -to [clk]之后,dc何pt默认set_multicycle_path -hold 0 -to [get_pins C_reg/D],如果你不写set_multicycle_path -hold 6 -to [get_pins C_reg/D]
其他的Harva 说得很详细了。
其次:
如richardhuang1 所说,加使能,在该采的时钟周期采数据。
set_multicycle_path and hold checks
-----------------------------------
Question:
I have a path that is set as multicycle path for the setup check. For some
reason, PrimeTime seems to be treating it as a multicycle path for hold time
checking as well. I'm using:
set_multicycle_path -setup 7 -to [whatever]
Why are the hold time checks multicycle?
Answer:
By default, if you specify 'set_multicycle_path -setup X', PrimeTime and
Design Compiler assume the datapath could change during any clock before
clock edge number X. To deal with this situation, PrimeTime and Design
Compiler implicitly add 'set_multicycle_path -hold 0 -to [whatever]'. This
positions the hold check one clock cycle before the setup check, effectively
constraining the path delay to be between X-1 and X clock cycles, or in
equation form:
X-1 cycles + T_hold < path delay (min)
path delay (max) < X cycles - T_setup
So by default the tools assume you want the path buffered up so that the
minimum change is > X-1 cycles.
This may not be the desired behavior. You can move the hold check back
towards the start of the multicycle period by specifying:
set_multicycle_path -hold X-1 -to [whatever]
In the above example, add
set_multicycle_path -hold 6 -to [whatever]
to the constraints and the hold check should occur on the desired edge. Note
that moving this check back requires the designer to handle possible
metastability. If the endpoint is a multi-bit signal, then you may need
to generate register-enabling logic to avoid clocking data before all of
it is valid.
set_multicycle_path语法说明【转载】的更多相关文章
- Linux记录-AWK语法(转载)
1.原理 awk,一个行文本处理工具,逐行处理文件中的数据 语法:awk 'pattern + {action}' 说明:(1)单引号''是为了和shell命令区分开:(2)大括号{}表示一个命令分组 ...
- sql基础语法大全 转载过来的,出处忘了!
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...
- Django框架之模板语法【转载】
Django框架之模板语法 一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 一.模板语法之变量:语法为 {{ }}: 在 Django ...
- wireshark过滤语法总结 (转载)
做应用识别这一块经常要对应用产生的数据流量进行分析. 抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后 ...
- Selenium2+python自动化9-CSS定位语法【转载】
前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css ...
- linux下sh语法(转载)
介绍: 1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序. 在这个例子中我们使用/bin/sh来执行程序. 当编写 ...
- Markdown 语法 (转载)
Markdown 语法整理大集合2017 1.标题 代码 注:# 后面保持空格 # h1 ## h2 ### h3 #### h4 ##### h5 ###### h6 ####### h7 // ...
- ELK:kibana使用的lucene查询语法【转载】
kibana在ELK阵营中用来查询展示数据 elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 全文搜索 在搜索栏输入login,会返回所有字段值中包含login的文档 使 ...
- SQL Server编程(04)基本语法【转载】
一.定义变量 --简单赋值 declare @a int set @a=5 print @a --使用select语句赋值 declare @user1 nvarchar(50) select @ ...
随机推荐
- Hadoop_30_MapReduce_多job串联
一个稍复杂点的处理逻辑往往需要多个mapreduce程序串联处理,多job的串联可以借助mapreduce框架的JobControl实现 示例代码: 每个job装配完成才可以进行下面代码: Cont ...
- 反编译DLL并修改DLL中的内容
使用场景:针对当前用户因不愿意进行软件版本升级,但又希望可以解决当前问题,此时可以考虑通过反编辑DLL进行修改内容,然后重新生成新的DLL 操作步骤: 1.首先使用ILSpy.exe反编译DLL,查看 ...
- centos7 安装vnc远程服务
避免一些系统方面的意外错误,最好更新yum到最新,生产环境有业务在运行不建议更新 yum update 安装GNOME Desktop图形桌面服务 yum groupinstall "GNO ...
- 面试题——SSM面试题
树木丛生红火火 树木丛生红火火 微信公众号:Java全栈开发大联盟 原文地址:https://note.youdao.com/ynoteshare1/index.html?id=3f81baea7 ...
- Caffe---Pycaffe 绘制loss和accuracy曲线
Caffe---Pycaffe 绘制loss和accuracy曲线 <Caffe自带工具包---绘制loss和accuracy曲线>:可以看出使用caffe自带的工具包绘制loss曲线和a ...
- OSI七层协议和TCP/IP四层协议
1. OSI七层和TCP/IP四层的关系 1.1 OSI引入了服务.接口.协议.分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型. 1.2 OSI先有模型,后有协议,先有标准,后进行 ...
- 算法9-----输出全排列(递归)---移除K个数,剩下最小数。
1.题目:给定一个字符串,输出所有的字典序. 如: 输入字符串:'ac',输出:['ac','ca'] 输入字符串:‘abc' ,输出:['abc','acb','bac','bca','cab',' ...
- Python的安装和配置(windowns 双版本)
1.去官网上下载python,注意版本. 官网地址:https://www.python.org/downloads/windows 2.下载安装版或者zip包都可以.安装就按向导一步一步完成即可.z ...
- C#实现异步阻塞TCP(SocketAsyncEventArgs,SendAsync,ReceiveAsync,AcceptAsync,ConnectAsync)
1.类 (1)socket IO操作内存管理类 BufferManager // This class creates a single large buffer which can be divid ...
- CentOS7 内核优化 修改参数
一:内核简介 内核是操作系统最基本的部分.它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间. 内核的分类可分为单内核和 ...