转自:http://www.cnblogs.com/freshair_cnblog/archive/2012/09/12/2681060.html

一、存在背景分析

文档的说法是,set_input_delay和set_output_delay描述的是数据在端口处与某时钟的时序关系。这样的说法是很表面的。input/output其实是模拟数据在端口外的延时,实际上这是端口的一个外部约束条件,目的是为了约束FPGA输入端口到内部寄存器数据输入端或者内部寄存器输出端到FPGA输出端口之间允许的延时(因为这中间可能有组合逻辑),理解这一点非常重要。

既然模拟的是数据在外部的情况,那么弄清楚这个延时是相对于哪个时钟而言的就很重要(这里也是泛泛而谈,后面有详细一点的分析)。很显然,这里的对象时钟是虚拟时钟virtual clock。

对于任何一种情况,有一点必须要保证:必须保证接收端能接收到数据。在推导过程中,这一条是隐含的前提。

二、set_input_delay的推导

对于set_input_delay,虚拟时钟是Launch,为保证FPGA能采样到数据,对源寄存器与目的寄存器之间的路径延时是有限制的。假如延时太大,FPGA端的建立时间可能不满足;延时太小,FPGA端的保持时间可能不满足。因此,计算max时考虑的是建立时间的情况,计算min时考虑的是保持时间的情况。

考虑保持时间时,可得如下关系:

Launch + Tco_ext + Td_ext + Td_in + uTsu = Latch

假如Td_in为Td_in_max,如果时钟周期不变,外界最糟糕的情况是,(Tco_ext + Td_ext)的值也为最大。SDC对输入时max的定义如下:

set_input_delay –max {Tco_ext + Td_max}

实际上这并不是FPGA内部的延时,这只是FPGA内部延时的相关量,因为很明显内部的延时是Td_in。为什么不直接使用内部延时呢?因为那样的话涉及到的变量太多,而这两个参数,在板卡和板卡环境确定之后,几乎是不会变化的。这个相关量的意义是,Td_in想往上增大是要受到这个相关量的约束的。

考虑建立时间时,可得:

Launch + Tco_ext + Td_in + Td_ext + Tsrc = Latch + uThd

假如Td_in为Td_in_min,外界最糟糕的情况是(Tco_ext + Td_ext)的值也为最小。SDC对输入是min的定义如下:

set_input_delay –min  {Tco_ext + Td_min}

当然这也是相对量。

有一点应该说明,-max和-min不会同时达到极限值,因为Td不会同时既为max又为min。因此,假如su或者hd有一个时序不收敛,内部的路径延时是有调整空间的。

三、set_output_delay的推导

对于set_output_delay,虚拟时钟是Latch。

考虑外部寄存器的建立时间,可得:

Launch + uTco + Td_in + Td_ext + Tsu_ext = Latch

假如Td_in为Td_in_max,最糟糕的情况是(Td_ext + Tsu_ext)也为最大。SDC对输出时max的定义如下:

set_output_delay –max {Td_max + Tsu_ext}

考虑外部寄存器的保持时间,可得:

Launch + uTco + Td_in + Td_ext + Tsrc = Latch + Thd_ext

假如Td_in为Td_in_min,最糟糕的情况是Td_ext亦为最小。SDC对输出是min的定义如下:

set_output_delay –min {-Thd_ext + Td_ext_min}

至于为什么不写成(Thd_ext – Td_ext_min),是为了计算时与max一致。在验证建立时间是否满足时,在Latch确定了的情况下,需要Latch减去max得到Data Required Time。在验证保持时间时,为了计算一致,希望也用Latch减去min来得到Data Required Time,而这时Required的计算应写为

Latch + Thd_ext – Td_ext_min

变换一下可得

Latch – (-Thd_ext + Td_ext_min)

min就是这样得来的。

【转载】set_input_delay和set_output_delay的选项-max和-min的讨论的更多相关文章

  1. 集合函数AVG,SUM,MAX,MIN

    需要计算这些值的平均值.使用函数AVG(),你可以返回一个字段中所有值的平均值. 假如你对你的站点进行一次较为复杂的民意调查.访问者可以在1到10之间投票,表示他们喜欢你站点的程度.你把投票结果保存在 ...

  2. Oracle bug 使用max或min函数into到一个char类型报字符缓冲区太小的错误

    这个BUG出现会报错如下: selectto_char(max(RENEWAL_DATE)) intoM_YEAR_MONTH fromt_renewal_schedule; ORA-06502: P ...

  3. mvc 中Range中max和min值晚绑定

    对于Attribute : Range(min,max)的min和max必须在用的时候给,但是需求有时须要把这两个值存db.动态取出的.这时就须要razor帮忙了: @Html.TextBoxFor( ...

  4. SQL使用总结-like,MAX,MIN

    1. 时间索引不容许使用like 对时间索引适应like,会时间索引变成字符串操作,成为遍历动作,失去索引价值. 错误写法: EXPLAIN  SELECT AVG(data_value) AS av ...

  5. zip()函数,max()和min(),built-in function,import模块,read(),readlines(),write(),writelines(),with..as..文件处理方式

    zip()函数:将可迭代对象作为参数,将对象中的对应元素打包成一个个元组. #map()普通的输出例子 print(list(zip(('a','n','c'),(1,2,3)))) print(li ...

  6. 维护满足max(+ or -)min<=k的区间

    这是一种经典的单调栈+线段树的维护方法. 从左到右枚举右端点. 线段树维护每一个左端点的max(+ or -)min的值. 每次右端点移动的时候,把a[i]加入单调栈. 每弹栈一次,便在线段树上把对应 ...

  7. SQL中MAX()和MIN()函数的使用(比较字符串的大小)

    在SQL数据库中,最大/最小值函数—MAX()/MIN()是经常要用到的,下面就将为您分别介绍MAX()函数和MIN()函数的使用,供您参考,希望对您学习SQL数据库能有些帮助. 当需要了解一列中的最 ...

  8. Python之路Python内置函数、zip()、max()、min()

    Python之路Python内置函数.zip().max().min() 一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算, ...

  9. 页面上有3个输入框:分别为max,min,num;三个按钮:分别为生成,排序,去重;在输入框输入三个数字后,先点击生成按钮,生成一个数组长度为num,值为max到min之间的随机整数点击排序,对当前数组进行排序,点击去重,对当前数组进行去重。 每次点击之后使结果显示在控制台

    <!DOCTYPE html> <html> <head> <!-- 页面上有3个输入框:分别为max,min,num:三个按钮:分别为生成,排序,去重: 在 ...

随机推荐

  1. phonegap android3.5.1 Crosswalk

    1. your phonegap platform for android update 3.5.1 cordova platform add android@3.5 2. download cros ...

  2. b2c项目基础架构分析(一)b2c 大型站点方案简述 已补充名词解释

    我最近一直在找适合将来用于公司大型bs,b2b b2c的基础架构. 实际情况是要建立一个bs架构b2b.b2c的网站,当然还包括wap站点.手机app站点. 一.现有公司技术人员现状: 1.熟悉asp ...

  3. 对apply和call的理解

    存在的原因: call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作. call 和 apply 都是 ...

  4. 如何查找Mac上的USB存储设备使用痕迹

    最近刚好有个案子的证物主机是MBP, OS X版本为El Capitan,案况与营业秘密外泄有关,当中要找有关USB存储设备的使用痕迹. 要提醒大家的是,不同版本的OS X,各种迹证的存放文件名称及路 ...

  5. Can Live View boot up images acquired from 64bit OS evidence?

    Some said Live View could only boot up images acquired from 32bit OS evidence. I have to say that it ...

  6. sublime Text2 2.0.2 build 2221 64位 破解(已测试)

    近终于找到  sublime Text2 升级到 2.0.2 build 2221 64位 的破破解 输入注册码就成了 ----- BEGIN LICENSE ----- Andrew Weber S ...

  7. 三、第一个Struts2应用案例(编码步骤)

    第一个Struts2应用案例(编码步骤) 编写2个jsp hello.jsp <body>     <a href="${pageContext.request.conte ...

  8. oracle的表名、字段名、constraint名的长度限制分别是多少?

    文章出处:http://blog.csdn.net/haiross/article/details/38379615 Oracle:表名.字段名.constraint名的长度有限制 oracle 的命 ...

  9. Vue.js学习 Item12 – 内部响应式原理探究

    深入响应式原理 大部分的基础内容我们已经讲到了,现在讲点底层内容.Vue.js 最显著的一个功能是响应系统 —— 模型只是普通对象,修改它则更新视图.这让状态管理非常简单且直观,不过理解它的原理也很重 ...

  10. php 判断table 是否存在 根据返回值继续下一步的操作

    根据sql命令创建数据库或者数据表时候,判断库或者表是否存在比较重要. //要创建的表是否已经存在 function isHaveTable( $dbName,$tableN, $con)  //数据 ...