Chapter 4 :Constraining I/O Delay(ug903)

news/2024/4/26 6:02:30/文章来源:https://blog.csdn.net/qq_33300585/article/details/130372798

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[*]]





 

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

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

相关文章

数据库系统工程师——第五章 网络基础知识

文章目录 📂 第五章、网络基础知识 📁 5.1 计算机网络概述 📖 5.1.1 计算机网络的概念 📖 5.1.2 计算机网络的分类 📖 5.1.3 网络的拓扑结构 📁 5.2 网络硬件基础 📖 5.2.1 网络设备 &…

【k8s】ruoyi微服务迁移到k8s

书接上回【传统方式部署Ruoyi微服务】,此刻要迁移至k8s。 环境说明 31 master , 32 node1 , 33 node2迁移思路 交付思路: 其实和交付到Linux主机上是一样的,无外乎将这些微服务都做成了Docker镜像; 1、微服务数据层: MySQL、 R…

“井电双控”地下水远程计量设施-实现地下水资源合理利用

“井电双控”地下水远程计量设施(MGTR-W4122C)是针对取水计量控制系统开发智能终端产品。集预收费、流量监测、电量监测、余额提醒、欠费停机、无线传输、远程控制等多种功能于一体,并可根据项目需求选择实体IC卡和APP电子卡取水两种方式。其…

换肤实现及LayoutInflater原理

文章目录 背景实现换肤步骤解析插件 apk 的包信息获取插件 apk 的 Resources 对象替换资源 简单的插件化换肤实现和存在的问题换肤如何动态刷新?控件换肤刷新的性能考虑如何降低 xml 布局中 View 的替换成本LayoutInflater 原理LayoutInflater.Factory2 替换 View 小…

David Silver Reinforcement Learning -- Markov process

1 Introduction 这个章节介绍关键的理论概念。 马尔科夫过程的作用: 1)马尔科夫过程描述强化学习环境的方法,环境是完全能观测的; 2)几乎所有的RL问题可以转换成MDP的形式; 2 Markov Processes 2.1 Mark…

从源码全面解析LinkedBlockingQueue的来龙去脉

👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主📕系列专栏:Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙…

mall-swarm微服务商城系统

mall-swarm是一套微服务商城系统,采用了 Spring Cloud 2021 & Alibaba、Spring Boot 2.7、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心…

【Excel统计分析插件】上海道宁为您提供统计分析、数据可视化和建模软件——Analyse-it

Analyse-it是Microsoft Excel中的 统计分析插件 它为Microsoft Excel带来了 易于使用的统计软件 Analyse-it在软件中 引入了一些新的创新统计分析 Analyse-it与 许多Excel加载项开发人员不同 使用完善的软件开发和QA实践 包括单元/集成/系统测试 敏捷开发、代码审查 …

HCIA-RS实验-ENSP搭建一个基础的IP网络

HCIA-RS是华为认证网络工程师(Routing & Switching)的缩写。通过考取HCIA-RS证书,可以证明自己有能力设计、实现和维护小型网络。而HCIA-RS实验则是考试的一部分,是考生必须要完成的实践环节。这将是第一篇文章,后…

【Android Framework (八) 】- Service

文章目录 知识回顾启动第一个流程initZygote的流程system_serverServiceManagerBinderLauncher的启动AMS 前言源码分析1.startService2.bindService 拓展知识1:Service的两种启动方式对Service生命周期有什么影响?2:Service的启动流程3:Service的onStartCommand返回…

紧密联结玩家 | 2023 Google 游戏开发者峰会

玩家的选择是对游戏莫大的认可,重视玩家反馈并和他们建立联系是您的游戏取得成功的关键。我们也在努力创造更多机会,让您的游戏从琳琅满目的列表中脱颖而出,帮助您吸引更多用户。 上篇内容我们介绍了帮助您优化游戏性能的几大功能更新&#x…

❀五一劳动节来啦❀

今年“五一”,4月29日至5月3日放假调休,共5天。 如果你在5月4日到5月6日请假3天,加上5月7日周日,就可以形成9天的假期。 一,五一劳动节的由来⭐ 国际劳动节又称“五一国际劳动节”“国际示威游行日”(英语…

GPT详细安装教程-GPT软件国内也能使用

GPT (Generative Pre-trained Transformer) 是一种基于 Transformer 模型的自然语言处理模型,由 OpenAI 提出,可以应用于各种任务,如对话系统、文本生成、机器翻译等。GPT-3 是目前最大的语言模型之一,其预训练参数超过了 13 亿个…

python+vue 健康体检预约管理系统

该专门体检预约管理系统包括会员和管理员。其主要功能包括个人中心、会员管理、体检服务管理、类型管理、订单信息管理、取消订单管理、 体检报告管理、通知信息管理、交流论坛、系统管理等功能。 目 录 一、绪论 1 1.1研发背景和意义 2 1.2 国内研究动态 3 1.3论文主…

Cookies和Session案例-注册

1. 注册功能改进 1.1 service 将之前的注册案例的代码进行优化,将获取sqlsession工厂对象、获取sqlsession、获取mapper等操作从servlet中分离出来转变为三层架构的形式 在service目录下创建UserService public class UserService {SqlSessionFactory sqlSessionFa…

Docker compose-实现多服务、nginx负载均衡、--scale参数解决端口冲突问题

Docker compose-实现多服务、nginx负载均衡、--scale参数解决端口冲突问题 问题:scale参数端口冲突解决方法:nginx实现多服务、负载均衡修改docker-compose.yml配置新增nginx本地配置文件验证启动容器查看容器状态访问web应用 问题:scale参数…

Linux中的YUM源仓库和NFS文件共享服务(うたかたの夢)

YUM仓库源的介绍和相关信息 简介 yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。 yum由仓库和客户端组成,也就是整个yum由两部分组成&#xff0…

Python小姿势 - 知识点:

知识点: Python的字符串格式化 标题: Python字符串格式化实例解析 顺便介绍一下我的另一篇专栏, 《100天精通Python - 快速入门到黑科技》专栏,是由 CSDN 内容合伙人丨全站排名 Top 4 的硬核博主 不吃西红柿 倾力打造。 基础知识…

Docker的实际应用

一、 数据持久化 我们什么情况下要做数据持久化呢? 一定是在做容器之前先预判好哪些文件是要永久存储的, 而不会跟着它容器的一个生命周期而消失。 比如说配置文件、 日志文件、 缓存文件或者应用数据等等。 数据初始化有三种类型。 第一种 volumes&…

什么是分库分表?为什么需要分表?什么时候分库分表

不急于上手实战 ShardingSphere 框架,先来复习下分库分表的基础概念,技术名词大多晦涩难懂,不要死记硬背理解最重要,当你捅破那层窗户纸,发现其实它也就那么回事。 什么是分库分表 分库分表是在海量数据下&#xff0…