Chapter 4 :Constraining I/O Delay(ug903)

4.1 About Constraining I/O Delay
        要在设计中准确地建模外部时序上下文,必须为输入和输出端口提供时序信息。由于Xilinx®Vivado®集成设计环境(IDE)只能识别FPGA边界内的时序,因此必须使用以下命令来指定超出这些边界的延迟值:
        • set_input_delay
        • set_output_delay

4.2 Input Delay
set_input_delay命令指定输入端口上相对于设计接口处的时钟边沿的输入路径延迟。
当考虑应用板时,输入延迟表示以下各项之间的相位差:
        1.从外部芯片通过板传播到FPGA的输入封装引脚的数据,以及
        2.相对基准板时钟。
        因此,输入延迟值可以是正的或负的,这取决于设备接口处的时钟和数据相对相位
注意:还可以在内部数据引脚上设置输入延迟,如STARTUPE3/data_IN[0:3](UltraScale+™ 设备)。
4.2.1Using Input Delay Options
        尽管在Synopsys设计约束(SDC)标准中,clock选项是可选的,但Vivado IDE需要它。
相对时钟可以是设计时钟,也可以是虚拟时钟
        建议:使用虚拟时钟时,使用与设计内部输入端口相关的设计时钟相同的波形。通过这种方式,时序路径要求是现实的。使用虚拟时钟可以方便地对不同的抖动或源延迟场景进行建模,而无需修改设计时钟。
输入延迟命令选项包括:
4.2.1.1Min and Max Input Delay Command Options(最小和最大输入延迟命令选项)
-min和-max选项为以下项指定不同的值:
        •最小延迟分析(保持/移除)
        •最大延迟分析(设置/恢复)
如果两者都不使用,则输入延迟值同时适用于最小值和最大值。
4.2.1.2Clock Fall Input Delay Command Option(时钟下降沿输入延迟命令选项)
        -clock_fall选项指定输入延迟约束应用于由相对时钟的下降时钟沿启动的时序路径。如果没有此选项,Vivado IDE只假设相对时钟的上升沿。
        不要将-clock_fall选项与-rise和-fall选项混淆。这些选项指的是数据边沿,而不是时钟边沿。
4.2.1.3 Add Delay Input Delay Command Option(添加延迟输入延迟命令选项)
在以下情况下,必须使用-add_delay选项:
        •存在最大(或最小)输入延迟约束,以及
        •希望在同一端口上指定第二个最大(或最小)输入延迟约束。
此选项通常用于相对于多个时钟边沿约束输入端口,例如DDR接口。
        可以仅将输入延迟约束应用于输入或双向端口,不包括自动忽略的时钟输入端口。不能将输入延迟约束应用于内部引脚。

4.2.2 Use of set_input_delay Command Options
        
以下示例介绍了set_input_delay命令选项的典型用法。有关输入延迟约束方法的更多信息,请参阅UltraFast Design Methodology Guide for FPGAs and SOCs(UG949)中的此链接。
4.2.2.1Input Delay Example One
      
  此示例定义了相对于先前定义的最小和最大分析的sysClk的输入延迟。

> create_clock -name sysClk -period 10 [get_ports CLK0]
> set_input_delay -clock sysClk 2 [get_ports DIN]

4.2.2.2 Input Delay Example Two
这个例子定义了相对于先前定义的虚拟时钟的输入延迟。

> create_clock -name clk_port_virt -period 10
> set_input_delay -clock clk_port_virt 2 [get_ports DIN]

4.2.2.3 Input Delay Example Three
此示例定义了相对于sysClk的最小分析和最大分析的不同输入延迟值。

> create_clock -name sysClk -period 10 [get_ports CLK0]
> set_input_delay -clock sysClk -max 4 [get_ports DIN]
> set_input_delay -clock sysClk -min 1 [get_ports DIN]

4.2.2.4 Input Delay Example Four
        为了约束I/O端口之间的纯组合路径,必须在I/O端口上相对于先前定义的虚拟时钟定义输入和输出延迟。以下示例在端口DIN和DOUT之间的组合路径上设置了5 ns(10 ns-4 ns-1 ns)约束:

> create_clock -name sysClk -period 10
> set_input_delay -clock sysClk 4 [get_ports DIN]
> set_output_delay -clock sysClk 1 [get_ports DOUT]

有关使用Timing Constraints wizard约束组合路径的更多信息,请参阅Combinatorial Delays 。
4.2.2.5 input Delay Example Five
        此示例指定相对于DDR时钟的输入延迟值。

> create_clock -name clk_ddr -period 6 [get_ports DDR_CLK_IN]
> set_input_delay -clock clk_ddr -max 2.1 [get_ports DDR_IN]
> set_input_delay -clock clk_ddr -max 1.9 [get_ports DDR_IN] -clock_fall -
add_delay
> set_input_delay -clock clk_ddr -min 0.9 [get_ports DDR_IN]
> set_input_delay -clock clk_ddr -min 1.1 [get_ports DDR_IN] -clock_fall -
add_delay

        该示例创建了从设备外部的clk_ddr时钟的上升沿和下降沿启动的数据到对上升沿和上升沿都敏感的内部触发器的数据输入的约束。
4.2.2.6 Input Delay Example Six
        此示例指定STARTUPE3内部引脚(UltraScale+设备)上的时钟和输入延迟,以对从STARTUPE2到结构的路径进行计时。

> create_generated_clock -name clk_sck -source [get_pins -
hierarchical*axi_quad_spi_0/ext_spi_clk] [get_pins STARTUP/CCLK] -edges {3
5 7}
> set_input_delay -clock clk_sck -max 7 [get_pins STARTUP/DATA_IN[*]] -
clock_fall
> set_input_delay -clock clk_sck -min 1 [get_pins STARTUP/DATA_IN[*]] -
clock_fall

4.3 Output Delay
    
    set_output_delay命令指定输出端口相对于设计接口处的时钟边沿的输出路径延迟
当考虑应用板时,此延迟表示以下各项之间的相位差:
1.从FPGA的输出封装引脚通过板传播到另一个设备的数据,以及
2.相对基准板时钟。
输出延迟值可以是正的或负的,这取决于FPGA外部的时钟和数据相对相位
注意:也可以在内部数据引脚上设置输出延迟,如STARTUPE3/data_OUT[0:3](UltraScale+设备)。
4.3.1 Using Output Delay Options
        尽管-clock选项在SDC标准中是可选的,但Vivado Design Suite工具需要它。相对时钟可以是设计时钟,也可以是虚拟时钟
        推荐:使用虚拟时钟时,请使用与设计内部输出端口相关的设计时钟相同的波形。通过这种方式,时序路径要求是现实的。使用虚拟时钟可以方便地对抖动或源延迟场景进行建模,而无需修改设计时钟。
4.3.1.1 Min and Max Output Delay Command Options
        -min和-max选项为最小延迟分析(hold/removal)和最大延迟分析(setup/recovery)指定不同的值。如果两者都不使用,则输出延迟值同时适用于最小值和最大值。
4.3.1.2 Clock Fall Output Delay Command Option
        
clock_fall选项指定输出延迟约束应用于由相对时钟的下降时钟沿捕获的时序路径。如果没有此选项,Vivado IDE默认情况下只假设相对时钟的上升沿(设备外部)。不要将-clock_fall选项与-rise和-fall选项混淆。这些选项指的是数据边沿,而不是时钟边沿。
4.3.1.3 Add Delay Output Delay Command Option
在以下情况下,必须使用-add_delay选项:
        •最大输出延迟约束已经存在,并且
        •您希望在同一端口上指定第二个最大输出延迟约束。
        对于最小输出延迟约束也是如此。此选项通常用于相对于多个时钟边沿约束输出端口,例如DDR中的上升沿和下降沿接口,或者当输出端口连接到使用不同时钟的几个设备时。
        重要提示!您可以仅将输出延迟约束应用于输出或双向端口。不能将输出延迟约束应用于内部引脚。

4.3.2 Use of set_output_delay Command Options
        以下示例介绍了set_output_delay命令选项的典型用法。有关输出延迟约束方法的更多信息,请参阅UltraFast Design Methodology Guide (UG949)中的此链接。
4.3.2.1 Output Delay Example One
此示例定义了相对于先前定义的最小和最大分析的sysClk的输出延迟。

> create_clock -name sysClk -period 10 [get_ports CLK0]
> set_output_delay -clock sysClk 6 [get_ports DOUT]

4.3.2.2 Output Delay Example Two
此示例定义了相对于先前定义的虚拟时钟的输出延迟。

> create_clock -name clk_port_virt -period 10
> set_output_delay -clock clk_port_virt 6 [get_ports DOUT]

4.3.2.3 Output Delay Example Three
此示例指定了相对于DDR时钟的输出延迟值,其中min(hold)和max(setup)分析的值不同。

> create_clock -name clk_ddr -period 6 [get_ports DDR_CLK_IN]
> set_output_delay -clock clk_ddr -max 2.1 [get_ports DDR_OUT]
> set_output_delay -clock clk_ddr -max 1.9 [get_ports DDR_OUT] -clock_fall -
add_delay
> set_output_delay -clock clk_ddr -min 0.9 [get_ports DDR_OUT]
> set_output_delay -clock clk_ddr -min 1.1 [get_ports DDR_OUT] -clock_fall -
add_delay

        此示例创建了从设备外部的clk_ddr时钟的上升沿和下降沿启动的数据到对上升沿和下降沿都敏感的内部触发器的数据输出的约束。

4.2.3.4 Output Delay Example Four
        此示例指定STARTUPE3内部引脚(UltraScale+设备)上的时钟和输出延迟,以对从结构到STARTUPE2的路径进行计时。

> create_generated_clock -name clk_sck -source [get_pins -hierarchical
*axi_quad_spi_0/ext_spi_clk] [get_pins STARTUP/CCLK] -edges {3 5 7}
> set_output_delay -clock clk_sck -max 6 [get_pins STARTUP/DATA_OUT[*]]
> set_output_delay -clock clk_sck -min 1 [get_pins STARTUP/DATA_OUT[*]]





 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/15253.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

200人 500人 园区网设计

实验要求: ① 设置合理的STP优先级、边缘端口、Eth-trunk ② 企业内网划分多个vlan ,减少广播域大小,提高网络稳定性 ③ 所有设备,在任何位置都可以telnet远程管理 ④ 出口配置NAT ⑤ 所有用户均为自动获取ip地址 ⑥ 在企业…

Matlab高光谱遥感、数据处理与混合像元分解及典型案例

站在学员的角度去理解“高光谱”,用大家能听的懂的语言去讲述高光谱的基本概念和理论,帮助学员深入理解这项技术的底层科学机理。方法篇,将高光谱技术与MATLAB工具结合起来,采用MATLAB丰富的工具箱,快速复现高光谱数据…

Java 重写(Override)与重载(Overload)

重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不…

【MySQL自学之路】第4天——模式、表、视图、索引(数据定义详细版)

目录 前言 数据库 数据库的建立 数据库的使用 数据库的查看 数据库的删除 模式 查看所有的模式 模式和数据库之间的关系 ​编辑建立模式 删除模式 表 数据类型 查看一个数据库下面的所有表(必须进入要查看的数据库) 创建基本表 查看表结构(查看表建…

Arduino学习笔记5

一.直流电机控制实验 1.源代码 int dianJiPin9;//定义数字9接口接电机驱动IN1的控制口void setup() {pinMode(dianJiPin,OUTPUT);//定义电机驱动IN1的控制口为输出接口 } void loop() {digitalWrite(dianJiPin,LOW);//关闭电机delay(1000);//延时digitalWrite(dianJiPin,HIGH…

【Vue 基础】vue-cli初始化项目及相关说明

目录 1. 创建项目 2. 项目文件介绍 3. 项目的其它配置 3.1 项目运行时,让浏览器自动打开 3.2 关闭eslint校验功能 3.3 src文件夹简写方法 1. 创建项目 vue create 项目名 2. 项目文件介绍 创建好的项目中包含如下文件: (1&#xff09…

工具链和其他-超级好用的web调试工具whistle

目录 whistle介绍 整体结构 能力 规则 6个使用场景示例 1.修改Host 2.代理 3.替换文件(线上报错时) 4.替换UA 5.远程调试 6.JS注入 互动 whistle介绍 整体结构 安装: npm install whistle -g cli:whistle help 启动…

算法之时间复杂度---数据结构

目录 前言: 1.时间复杂度 1.1时间复杂度的理解 1.2规模与基本操作执行次数 1.3大O渐进表示法 1.4计算基本操作的次数 2.常见的时间复杂度及其优劣比较 ❤博主CSDN:啊苏要学习 ▶专栏分类:数据结构◀ 学习数据结构是一件有趣的事情&…

什么是Web1.0时代、Web2.0时代、Web3.0时代?

什么是Web1.0时代、Web2.0时代、Web3.0时代? 互联网的起源。1969年美国的阿帕网的出现标志着互联网的诞生,而1973年第一台个人电脑The Xerox Alto的出现就预示了互联网将蓬勃生长,随之而来的就是我们迈入了信息时代。短短几十年的发展&#x…

浏览器缓存策略:强缓存和协商缓存

浏览器缓存:其实就是在本地使用的计算机中开辟一个内存区,同时也开辟一个硬盘区,作为数据传输的缓冲区,然后利用这个缓冲区来暂时保护用户以前访问的信息通常浏览器的缓存策略分为两种:强缓存和协商缓存,强…

零基础学java——【基础语法】基本输入、输出语句,变量,运算符

目录 变量 数据类型 基本数据类型一览表 声明和初始化 基本的输出、输出语句 输出语句 补充“”的使用 输入语句Scanner 使用步骤 代码演示 运算符 有些内容可能会与c语言作比较 内容借鉴了韩顺平老师的java课堂笔记(b站课) 变量 数据类型 基本…

CKA证书题库-总结

CKA真题(考题总结) 文章目录 CKA真题(考题总结)证书个人考试总结申诉结果 CKA题目参考博主重点介绍 CKA模拟题库 注意事项考试概要考试注意事项: CKA题目答案设置自动补全方法一方法二 第⼀题:权限控制RBAC…

【4. ROS的主要通讯方式:Topic话题与Message消息】

【4. ROS的主要通讯方式:Topic话题与Message消息】 1. 前言1.1 王者解释结点通讯:1.2 通讯小结 2. 灵活的Topic话题图解2.1 话题注意细节2.2 外延补充 3. Message消息图解3.1 消息类型3.2 查看标准消息类型std_msgs 4. 使用C实现Publisher发布者4.1 发布…

Sametime 12.0.1 FP1发布以及Notes中的SwiftFile使用

大家好,才是真的好。 上周,HCL推出了Sametime 12.0.1FP1FP1更新包程序,包含不少新功能以及很多修复程序。虽然Sametime组件现在不需要运行在Domino服务器上,但毕竟Sametime通常会使用Domino目录或Domino中的LDAP目录服务&#xf…

Maven 如何下载依赖包的源码包

使用Maven下载依赖包的时候, 默认是不会下载源码包的,但是有时候, 需要Debug代码,或是看看依赖项的源码的写法, 就需要下载源码包了。 这里以 Apache 的 commons-text 为例, 在Maven中添加如下依赖配置&am…

HCIA-RS实验-ENSP设备的基础配置

本文主要简单地介绍ENSP设备的基础配置,帮助读者快速上手使用ENSP。可以掌握一些基础的配置方案,更改名称,系统时间,系统地区、密码登录等信息 以下是该文章的拓扑图;现将这2台设备启动;后续双击即可进入命…

Openswan安装和简单配置

Openswan安装和简单配置 安装环境: 操作系统:Ubuntu20.0.4TLS 用户权限:root下载Openswan: wget https://github.com/xelerance/Openswan/archive/refs/tags/v3.0.0.zip安装Openswan: 解压Openswan:(PS&#xff1a…

Arduino学习笔记4

一.声控灯实验 1.源代码 int led2;//定义板子上数字2口控制小灯 int flag0;//定义一个变量记录小灯是亮起还是熄灭 int shengyin3;//定义声音传感器的控制口void setup() {pinMode(led,OUTPUT);//定义小灯为输出模式pinMode(shengyin,INPUT);//定义声音控制口为输入模式 } vo…

基于天牛须(BAS)与NSGA-Ⅱ混合算法的交直流混合微电网多场景多目标优化调度(Matlab代码实现)

💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥 🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 …

SentiBank Dector上手指南

​ 官网链接:https://www.ee.columbia.edu/ln/dvmm/vso/download/sentibank.html SentiBank Detector可以抽取图片中的形容词-名词对,之前一直看到,这次复现模型才第一次用到,上手的时候有点手足无措,因为官网在如何使…