(转载)

(其实多看手册就知道原因了)

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 所说,加使能,在该采的时钟周期采数据。

Harva 和handsome说得很精彩,我帖一个synopsys的解释,大家共同学习.
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语法说明【转载】的更多相关文章

  1. Linux记录-AWK语法(转载)

    1.原理 awk,一个行文本处理工具,逐行处理文件中的数据 语法:awk 'pattern + {action}' 说明:(1)单引号''是为了和shell命令区分开:(2)大括号{}表示一个命令分组 ...

  2. sql基础语法大全 转载过来的,出处忘了!

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...

  3. Django框架之模板语法【转载】

    Django框架之模板语法 一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 一.模板语法之变量:语法为 {{ }}: 在 Django ...

  4. wireshark过滤语法总结 (转载)

    做应用识别这一块经常要对应用产生的数据流量进行分析. 抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后 ...

  5. Selenium2+python自动化9-CSS定位语法【转载】

    前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css ...

  6. linux下sh语法(转载)

    介绍: 1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序. 在这个例子中我们使用/bin/sh来执行程序. 当编写 ...

  7. Markdown 语法 (转载)

    Markdown 语法整理大集合2017   1.标题 代码 注:# 后面保持空格 # h1 ## h2 ### h3 #### h4 ##### h5 ###### h6 ####### h7 // ...

  8. ELK:kibana使用的lucene查询语法【转载】

    kibana在ELK阵营中用来查询展示数据 elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 全文搜索 在搜索栏输入login,会返回所有字段值中包含login的文档 使 ...

  9. SQL Server编程(04)基本语法【转载】

    一.定义变量 --简单赋值 declare @a int set @a=5 print @a   --使用select语句赋值 declare @user1 nvarchar(50) select @ ...

随机推荐

  1. Ubuntu系统---WeChat安装

    Ubuntu安装微信教程 工具/原料 ubuntu 14.04 x86 方法/步骤 这次我用的系统是Ubuntu 14.04 x86,在网上先去下载electronic-wechat-linux ht ...

  2. 求 无向图的割点和桥,Tarjan模板

    /* 求 无向图的割点和桥 可以找出割点和桥,求删掉每个点后增加的连通块. 需要注意重边的处理,可以先用矩阵存,再转邻接表,或者进行判重 */ const int MAXN = 10010; cons ...

  3. xgboost&lightgbm调参指南

    本文重点阐述了xgboost和lightgbm的主要参数和调参技巧,其理论部分可见集成学习,以下内容主要来自xgboost和LightGBM的官方文档. xgboost Xgboost参数主要分为三大 ...

  4. CSP2019 退役记

    本来想写"退役在即"的,考完 Day2 后直接改成"退役记"了 Day 0 在 ssf 的机房里继续变弱,自己写了一遍 splay 板子,居然写对了,开心 非常 ...

  5. bzoj1711[USACO07OPEN]吃饭Dining

    题意 有F种食物和D种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料.现在有n头牛,每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享用到自己喜欢的食物和饮 ...

  6. Qt QMutexLocker_自动解锁的机制

    QMutexLocker 是一个便利类,它可以自动对QMutex加锁与解锁.因为QMutexLocker 申请的这个lock变量在这个函数退出时,自动的调用析构函数来解锁.这样可以防止在程序编写的过程 ...

  7. Android控件_RecycleView+CarView+Palette联合应用

    最终效果 表格布局 垂直布局 横向布局 添加引用 build.gradle implementation 'com.android.support:recyclerview-v7:28.0.0' im ...

  8. MSMQ介绍

    最近的项目中用到了MSMQ,简单的使用到了它,现总结下.有些是网上的资料有些是自己的笔记. MSMQ理解 Message Queue(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式 ...

  9. use potato

  10. topcoder13444

    CountTables TopCoder - 13444 sol:题意和题解都丢在上面了,自己XJByy了一下 先保证行不同,然后对列容斥,dp[i]表示i列的答案 行不同时i列的答案显然是C(c^i ...