set_input_delay/ set_output_delay

TimeQuest出现以后,随之 set input delay 与 set output delay 也跟着出现,该约束命令用“外包资料”的方式,不仅可以将时钟抖动也包装进去,而且也能将外部ic的寄存器特性也包裹进去

  在与时钟选项定义的时钟相关的输入port上定义data arrival time,可将输入延时定义与上升沿或下降沿相关。

  如果输入延时与简单的生成时钟相关,到生成时钟的clock arrival time要加到data arrival time上。

  输入延时可以定义与时钟网络中的port相关,到参考port的clock arrival time要加到data arrival time上。

  输入延时可以包含时钟源延时,默认条件下,相关的时钟源延时加到输入延时上;但是,当定义-source_latency_included选项时,时钟源延时不要相加,因为它并没有用作为input delay value的时序因素。

max用在时钟建立时间或恢复(recovery)校验上,min用于时钟保持时钟或移除(removal)校验上。

  以上内容摘自Quartus help,基本定义edn上很多仁兄已经讲的很清楚了。

看下面简单的例子,两级触发器,来自

  http://www.altera.com.cn/support/examples/timequest/exm-timequest.html

很简单的例子,仅仅加时钟周期约束的条件下,

create_clock -period 10.000-name clk_in [get_ports {clk_in}]

用TimeQuest分析仅会得到一路path的分析,reg1 to reg2,时序图如下:

clock arrival time=latch edge+clock network delay to destination register

11.110=10+1.110

data required time =clock arrival time -u/tsu

11.125=11.110-(-0.015)

data arrival time=launch edge +clock network delay source register +u/tco+register-to-register delay

1.438=0+1.148+0.199+0.091

clock setup slack =data required time -data arrival time

9.687 = 11.125-1.438

set_input_delay -clock { clk_in } -add_delay 1.200 [get_ports {data_in}]

set_output_delay -clock { clk_in } -add_delay 2.000 [get_ports data_out]

重新运行TimeQuest,可以看到3个path分析

  1) data_in to reg1

2) reg1 to reg2

3) reg2 to data_out

 可以看到,输入路径在data arrival time上加上了input delay;输出路径在data required time上减去了output delay;分别表现为对setup和hold时间的影响。

timequest 中set input delay set output delay 的使用的更多相关文章

  1. 关于fpga优化的set input delay 和 set output delay

    set input delay 和set output delay 首先必须明确的是指的外部delay,而非input或output的内部delay,那么这外部delay包含什么呢?包含1,外部路径延 ...

  2. FPGA静态时序分析——IO口时序(Input Delay /output Delay)

    1.1  概述 在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛.因此,FPGA时序约束中IO口时序约束也是一个重点.只有约束正确 ...

  3. FPGA静态时序分析——IO口时序(Input Delay /output Delay)(转载)

    转载地址:http://www.cnblogs.com/linjie-swust/archive/2012/03/01/FPGA.html 1.1  概述 在高速系统中FPGA时序约束不止包括内部时钟 ...

  4. FPGA静态时序分析——IO口时序(Input Delay /output Delay)

    1.1  概述 在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛.因此,FPGA时序约束中IO口时序约束也是一个重点.只有约束正确 ...

  5. 每天进步一点点------时序分析基础与时钟约束实例(四)IO口时序(Input Delay /output Delay)

    1.1  概述 在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛.因此,FPGA时序约束中IO口时序约束也是一个重点.只有约束正确 ...

  6. 深入比特币原理(三)——交易的输入(input)与输出(output)

    本节内容非常重要,如果你不能很好的掌握本节内容,你无法真正理解比特币的运行原理,请务必要学习清楚. 比特币的交易模型为UTXO(unspend transaction output),即只记录未花费的 ...

  7. python 中的input

    渣渣之路. 一. 在python编程初学者指南中的第六章.使用参数和返回值的例子中: # -*- coding: utf-8 -*- def display(message): print messa ...

  8. view视图文件中的input等输入框必须含有name属性,不然控制器里的动作formCollection是没有值的

    view视图文件中的input等输入框必须含有name属性,不然控制器里的动作formCollection是没有值的,就是没有name属性,后台获取不到值

  9. 数组乘积--满足result[i] = input数组中除了input[i]之外所有数的乘积(假设不会溢出

    数组乘积(15分) 输入:一个长度为n的整数数组input 输出:一个长度为n的整数数组result,满足result[i] = input数组中除了input[i]之外所有数的乘积(假设不会溢出). ...

随机推荐

  1. double int char long 等数据类型所占的字节数-----待整理

  2. python脚本6_打印菱形

    #输入菱形最宽的行所在的行数,打印菱形 m = int(input(">>>")) for n in range(m): print(" "* ...

  3. mvc框架详解

    mvc全称:Model View Controller,分别为Model(模型),View(视图),Controller(控制器). 这张图就很好的解释了MVC框架的基本工作原理,Modal通常为后台 ...

  4. python环境配置

    有个chatserver.py文件写的服务器代码,mac下终端执行python  chatserver.py 总是报上面的错,求解 ImportError: No module named twist ...

  5. Day14 js高级部分

    JS中文学习文档 http://jquery.cuishifeng.cn/ 一.函数变量的作用域: 变量的作用域是在声明时决定的而不是调用执行时决定 作用域链: 二.词法分析: 函数执行前,会进行预编 ...

  6. CentOS上部署Django+Nginx+Uwsgi环境

    在CentOS上部署Django+Nginx+Uwsgi环境 奇谭  2016-09-01 评论  Linux  python django nginx uwsgi VirtualEnv的作用:创建隔 ...

  7. vuejs绑定img 的src

    1.显示本地图片: <img src="../../common/images/auth-icon.png" />   2.绑定变量: <img class=&q ...

  8. hdu3829

    题解: 对于每一个孩子裂点+建边 如果i孩子讨厌的和j孩子喜欢的相同,那么建边 然后跑最大独立集 代码: #include<cstdio> #include<cstring> ...

  9. LeetCode OJ:Ugly Number II(丑数II)

    Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...

  10. AOP的Advice

    @Before 方法执行之前执行 @AfterReturning 方法正常执行完成后执行 @AfterThrowing 抛出任何异常之后执行 @After  就是相当于finally,它会将你的方法t ...