一、  这两条约束语句都是针对板级延时而言的。

语句中必须的有是,时钟与port.

二、   set_input_delay

用于数据输入端口,调节数据输入与时钟输入到来的相位关系。

当FPGA外部送入FPGA内部寄存器数据时,会有两个时钟launch clock 与latch clock,前者负责将数据从外部寄存器中送出,后者要在setup 与hold都满足的条件下,将数据锁入FPGA内部寄存器。在这个过程中,如果launch clock已经将数据送出,并到达FPGA内部寄存器端口,而上一次的数据的hold时间还不足,就会冲掉前面这个数据,导致latch clock 锁存数据错误!方法就是用set_input_delay加在数据到达时间(data_arrival)上加延时,让数据推迟到达,让latch clock有足够的时间(一般为hold time)对数据锁存。

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

图中input delay(data arrival)将数据到达时间延时1.2ns.

set_output_delay

用于数据输出端口,调节数据输出与时钟输出的相位关系。

当FPGA内部送出数据给外部器件的时,也应该有两个时钟launch clock 与latch clock,前者负责将数据从内部寄存器中送出,后者要在setup 与hold都满足的条件下,将数据锁入外部寄存器。在这个过程中,就是要保证在时钟到来时数据准备好,并让时钟有足够的时间将数据打入外部寄存器中。但如果latch clock已经到来,由于板级延时等,数据未能如时到达,那latch clock没有足够的setup 时间对数据采样,导致采到的数据就是错误的!而解决方法就是用set_output_delay加在数据到达时间(data_arrival)上加延时(负值),或者说对latch clock 加延时(正值),表现为数据提前到达,或认为latch clock推迟到达,而其实质就是以时钟为参考,对数据进行的操作,让latch clock 有足够的时间(一般为setup time)对数据锁存。

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

图中output delay(data requared)向前推2.0ns

三、  在设置约束与分析时序过程中对launch clock 和latch clock 的选择和port的选择要注意以下问题:

set_input_delay :在用的设置约束过程中,launch clock 应当是外部器件的数据发送时钟,如果FPGA内部并无相关时钟,就设置一个虚拟时钟作为launch clock ;latch clock 应当是FPGA内部寄存器时钟,当然应为FPGA内部时钟;在时序分析约束过程中,port应当至少选取To Node.

set_output_delay :在用的设置约束过程中,launch clock 应当是FPGA内部的数据发送时钟,应当为FPGA内部时钟;latch clock 应当是FPGA外部器件数据锁存时钟,如果这个时钟FPGA内部并无相关时钟,就设置一个虚拟时钟作为latch clock ;在时序分析约束过程中,port应当至少选取From Node.

关于set_output_delay与set_input_delay概念与用法的更多相关文章

  1. (转载)OC学习篇之---协议的概念和用法

    在前一篇文章中我们介绍了OC中类的延展,这一篇文章我们在来看一下OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Jav ...

  2. OC中协议的概念以及用法

    OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习 ...

  3. scrapy之基础概念与用法

    scrapy之基础概念与用法 框架 所谓的框架就是一个项目的半成品.也可以说成是一个已经被集成了各种功能(高性能异步下载.队列.分布式.解析.持久化等)的具有很强通用性的项目模板. 安装 Linux: ...

  4. Android中Cursor类的概念和用法[转]

    首页 > 程序开发 > 移动开发 > Android > 正文   Android中Cursor类的概念和用法 2011-09-07      0个评论       收藏    ...

  5. Python yield 的基本概念和用法

    之前解析MQTT协议时,需要做一个等分字节流的操作,其中用到了yield关键字,如下: def get_var_length(hstring): m = 1 v = 0 for element in ...

  6. (4.5)DBCC的概念与用法(DBCC TRACEON、DBCC IND、DBCC PAGE)

    转自:http://www.cnblogs.com/huangxincheng/p/4249248.html DBCC的概念与用法 一:DBCC 1:什么是DBCC 我不是教学老师,我也说不到没有任何 ...

  7. OC学习篇之---协议的概念和用法

    这一篇文章我们在来看一下OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字 ...

  8. JAVA中数组的基本概念与用法

    JAVA中数组的基本概念与用法 1. 数组的定义与特点 数组的一种引用数据类型 数组中可以同时存放多个数据,但是数据的类型必须统一 数组的长度在开始时就需要确定,在程序运行期间是不可改变的 虽然可以使 ...

  9. 了解PHP中Stream(流)的概念与用法(转)

    Stream是PHP开发里最容易被忽视的函数系列(SPL系列,Stream系列,pack函数,封装协议)之一,但其是个很有用也很重要的函数.Stream可以翻译为“流”,在Java里,流是一个很重要的 ...

随机推荐

  1. PropertiesUtils

    package com.icil.elsa.subscribe.milestone.common.utils; import java.io.BufferedInputStream; import j ...

  2. C# IIS 服务器上传图片500解决办法

  3. Mapperreduce的wordCount原理

    wordcount原理: 1.mapper(Object key,Object value ,Context contex)阶段 2.从数据源读取一行数据传递给mapper函数的value 3.处理数 ...

  4. 最全的select加锁分析(Mysql)

    引言 大家在面试中有没遇到面试官问你下面六句Sql的区别呢 select * from table where id = ? select * from table where id < ? s ...

  5. MethodInfo类的一般使用

    1.MethodInfo类是在System.Reflection命名空间底下,既然是在Reflection空间底下.故名思议关于反射相关的操作,其中比较重要的方法是Invoke()方法,它 是加载相同 ...

  6. 学习笔记2:postman 的基本使用

    1.get 请求 请求接口:http://xx.xx.xx.xx/api/user/stu_info 请求参数:stu_name 请求参数是放在请求 URL 里的,点击 Params添加参数,key ...

  7. 修改window本地hosts文件,修改域名指向

    Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Host ...

  8. How to Pronounce TH after N or Z

    How to Pronounce TH after N or Z Share Tweet Share Tagged With: Linking Consonant to Consonant The T ...

  9. Structs复习 Result第一部分

    Jar包 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version=&q ...

  10. Python之路 - Socket实现QQ聊天

    Python之路 - Socket实现QQ聊天 介绍