set_output_delay与set_input_delay介绍

2024-06-07 06:58
文章标签 介绍 input set output delay

本文主要是介绍set_output_delay与set_input_delay介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于set_output_delay与set_input_delay概念与用法

可以参考https://wenku.baidu.com/view/9135e34efe4733687e21aa2e.html?rec_flag=default或者如下:

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

          语句中必须的有是,时钟与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介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1038461

相关文章

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

golang实现延迟队列(delay queue)的两种实现

《golang实现延迟队列(delayqueue)的两种实现》本文主要介绍了golang实现延迟队列(delayqueue)的两种实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录1 延迟队列:邮件提醒、订单自动取消2 实现2.1 simplChina编程e简单版:go自带的time

JSR-107缓存规范介绍

《JSR-107缓存规范介绍》JSR是JavaSpecificationRequests的缩写,意思是Java规范提案,下面给大家介绍JSR-107缓存规范的相关知识,感兴趣的朋友一起看看吧... 目录1.什么是jsR-1072.应用调用缓存图示3.JSR-107规范使用4.Spring 缓存机制缓存是每一

Java中 instanceof 的用法详细介绍

《Java中instanceof的用法详细介绍》在Java中,instanceof是一个二元运算符(类型比较操作符),用于检查一个对象是否是某个特定类、接口的实例,或者是否是其子类的实例,这篇文章... 目录引言基本语法基本作用1. 检查对象是否是指定类的实例2. 检查对象是否是子类的实例3. 检查对象是否

什么是ReFS 文件系统? ntfs和refs的优缺点区别介绍

《什么是ReFS文件系统?ntfs和refs的优缺点区别介绍》最近有用户在Win11Insider的安装界面中发现,可以使用ReFS来格式化硬盘,这是不是意味着,ReFS有望在未来成为W... 数十年以来,Windows 系统一直将 NTFS 作为「内置硬盘」的默认文件系统。不过近些年来,微软还在研发一款名