关于set_output_delay与set_input_delay概念与用法
一、 这两条约束语句都是针对板级延时而言的。
语句中必须的有是,时钟与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概念与用法的更多相关文章
- (转载)OC学习篇之---协议的概念和用法
在前一篇文章中我们介绍了OC中类的延展,这一篇文章我们在来看一下OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Jav ...
- OC中协议的概念以及用法
OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习 ...
- scrapy之基础概念与用法
scrapy之基础概念与用法 框架 所谓的框架就是一个项目的半成品.也可以说成是一个已经被集成了各种功能(高性能异步下载.队列.分布式.解析.持久化等)的具有很强通用性的项目模板. 安装 Linux: ...
- Android中Cursor类的概念和用法[转]
首页 > 程序开发 > 移动开发 > Android > 正文 Android中Cursor类的概念和用法 2011-09-07 0个评论 收藏 ...
- Python yield 的基本概念和用法
之前解析MQTT协议时,需要做一个等分字节流的操作,其中用到了yield关键字,如下: def get_var_length(hstring): m = 1 v = 0 for element in ...
- (4.5)DBCC的概念与用法(DBCC TRACEON、DBCC IND、DBCC PAGE)
转自:http://www.cnblogs.com/huangxincheng/p/4249248.html DBCC的概念与用法 一:DBCC 1:什么是DBCC 我不是教学老师,我也说不到没有任何 ...
- OC学习篇之---协议的概念和用法
这一篇文章我们在来看一下OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字 ...
- JAVA中数组的基本概念与用法
JAVA中数组的基本概念与用法 1. 数组的定义与特点 数组的一种引用数据类型 数组中可以同时存放多个数据,但是数据的类型必须统一 数组的长度在开始时就需要确定,在程序运行期间是不可改变的 虽然可以使 ...
- 了解PHP中Stream(流)的概念与用法(转)
Stream是PHP开发里最容易被忽视的函数系列(SPL系列,Stream系列,pack函数,封装协议)之一,但其是个很有用也很重要的函数.Stream可以翻译为“流”,在Java里,流是一个很重要的 ...
随机推荐
- linux 开关机指令
shutdown -h now 现在关机 shutdown -h 1 1分钟后电脑关机 su 切换 用户 halt 关机 reboot 重启 sync :保存
- 最详细安装Esxi
https://www.vmware.com/cn/products/vsphere-hypervisor.html Exsi 是一款虚拟化系统,与VMware,VirtualBox不同,它不需要安装 ...
- BBS-文章详情页、评论、评论树
1.简单的实现评论功能 article_detail.html,拿到数据 由路--给视图函数--写入数据库 <p>评论内容:</p> <textarea name=&q ...
- 微服务-dubbo学习
什么是微服务: 由于业务发展迅速,为了减少代码和功能重复,方便扩展,部署,维护等因素,将系统业务组件化和服务化拆分,拆分为一个个独立的服务,由服务治理系统统一管理,每个微服务为一个进程,之间的通讯方式 ...
- Nginx缓存配置以及nginx ngx_cache_purge模块的使用
web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输 ...
- RabbitMQ系列教程之二:工作队列(Work Queues)(转载)
RabbitMQ系列教程之二:工作队列(Work Queues) 今天开始RabbitMQ教程的第二讲,废话不多说,直接进入话题. (使用.NET 客户端 进行事例演示) ...
- 树莓派上的软件安装和卸载命令汇总 [ZT]
转自:http://www.eeboard.com/bbs/thread-40823-1-1.html基础命令 安装软件 apt-get install softname1 softname2 sof ...
- Python自动化运维开发实战 二、Python基本用法
导语: Python编程博大精深,知识点众多,需要先整体上了解python的一些基本用法之后再去对每一个知识点细细研究,这样学习的速度会快很多.所以下面就先看一些python事先需要知道的基本知识. ...
- kotlin集合操作
1.1 总数操作 方法作用: any--判断集合中是否有满足条件 的元素: all--判断集合中的元素是否都满足条件: count--查询集合中满足条件的元素个数: fold--在给定初始值的基础上, ...
- 部署Java的运行环境
1.先去官网下载最新的jdk 网址:http://www.oracle.com/technetwork/java/javase/downloads/ 2.用tar zxvf解压相应的文档到相应的路径 ...