0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA学习-IO延迟的约束方法

FPGA设计论坛 来源:未知 2023-01-01 11:50 次阅读

为了对设计外部的时序情况进行精确建模,设计者必须设定输入和输出端口的时序信息。Vivado只能识别出FPGA器件范围内的时序,因此必须使用set_input_delay和set_output_delay命令来设置FPGA范围外的延迟值。两者在含义、约束命令等方面有很多地方是相似的,只不过一个是输入,一个是输出,本文还是分开对两者进行讲述;

输入延迟

set_input_delay命令设定FPGA的输入端口上相对于上游芯片接口时钟边沿的输入路径延迟(不包括FPGA输入端口到第一个触发器数据输入端的延时);输入延迟既指数据从外部芯片经过板级传输到FPGA输入管脚间的相位差,也指相对参考板级时钟间的相位差;输入延迟值可以是正的,也可以是负的,由时钟和数据在FPGA接口处的相对相位决定;

约束时的相对时钟可以是一个设计时钟,也可以是一个虚拟时钟;输入延迟命令的选项包括:

-min和-max:-min设定的值用于最小延迟分析(保持时间、移除时间);-max设定的值用于最大延迟分析(建立时间、恢复时间);如果约束命令中没有使用这两个选项,输入延迟值会同时应用于min和max;

-clock_fall:用于指定由相对时钟的下降沿启动的时序路径上的输入延迟约束;如果没有这个选项,Vivado只假定使用相对时钟的上升沿;

-add_delay:该选项通常用于约束与多个时钟沿相关的输入端口(比如DDR接口),而且必须已经存在一个最大或最小输入延迟约束,设计者使用该命令为同一端口设置其它相对时钟沿的最大或最小输入延迟约束;

输入延迟约束只能应用于输入端口或双向端口(不包括时钟输入端口),不能用于设计内部的管脚,下面给出几个使用输入延迟约束的典型例子:

1.示例一

create_clock -name sysClk -period 10 [get_ports CLK0]

set_input_delay -clock sysClk 2 [get_ports DIN]

定义一个主时钟sysClk作为输入延迟的相对时钟,设定的值同时作为最小值(min)分析和最大值(max)分析;

2.示例二

create_clock -name clk_port_virt -period 10

set_input_delay -clock clk_port_virt 2 [get_ports DIN]

该例子约束目的与上例相同,只是相对时钟换为一个虚拟时钟;使用虚拟时钟的好处是可以在不改变内部设计时钟的情况下,设定任意的抖动和延迟 ;

3.示例三

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.示例四

create_clock -name sysClk -period 10 [get_ports CLK0]

set_input_delay -clock sysClk 4 [get_ports DIN]

set_output_delay -clock sysClk 1 [get_ports DOUT]

如果两个I/O端口之间仅有组合逻辑路径,没有任何时序单元,必须相对于虚拟时钟为I/O端口定义输入与输出延迟。上例中DIN和DOUT之间的组合逻辑路径约束为5ns(10-1-4);

5.示例五

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

这里相对时钟为DDR的时钟,最小值分析和最大值分析采用不同的输入延迟值;约束的一端是器件外部时钟的上升沿和下降沿启动的数据,另一端是器件内部同时对上升沿和下降沿敏感的触发器的输入数据;

输出延迟

set_output_delay命令设定数据从FPGA输出端口上(都是相对于数据源的时钟来说)到下一级芯片输入端口的输出路径延迟;输出延迟既指数据从FPGA的输出管脚通过板级传输到另一个器件间的相位差,也指相对参考板级时钟间的相位差;输出延迟值同样也可以是正的或负的,由时钟和数据在FPGA器件外的相对相位决定;

约束时的相对时钟可以是一个设计时钟,也可以是一个虚拟时钟;输出延迟命令的选项基本与输入延迟约束相同,还是陈列如下:

同样,输出延迟约束只能应用于输出端口或双向端口,不能用于设计内部的管脚;下面给出几个使用输出延迟约束的典型例子:

-min和-max:-min设定的值用于最小延迟分析(保持时间、移除时间);-max设定的值用于最大延迟分析(建立时间、恢复时间);如果约束命令中没有使用这两个选项,输入延迟值会同时应用于min和max;

-clock_fall:用于指定由相对时钟的下降沿捕获的时序路径上的输出延迟约束;如果没有这个选项,Vivado只假定使用相对时钟的上升沿;

-add_delay:该选项通常用于约束与多个时钟沿相关的输出端口(比如DDR接口同时使用上升沿和下降沿,或者输出端口与几个使用不同时钟的器件相连),而且必须已经存在一个最大或最小输入延迟约束,设计者使用该命令为同一端口设置其它相对时钟沿的最大或最小输入延迟约束;

1.示例一

create_clock -name sysClk -period 10 [get_ports CLK0]

set_output_delay -clock sysClk 6 [get_ports DOUT]

定义一个主时钟sysClk作为输出延迟的相对时钟,设定的值同时作为最小值(min)分析和最大值(max)分析;

2.示例二

create_clock -name clk_port_virt -period 10

set_output_delay -clock clk_port_virt 6 [get_ports DOUT]

该例子约束目的与上例相同,只是相对时钟换为一个虚拟时钟;使用虚拟时钟的好处是可以在不改变内部设计时钟的情况下,设定任意的抖动和延迟;

3.示例三

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

这里相对时钟为DDR的时钟,最小值分析和最大值分析采用不同的输出延迟值;约束的一端是器件外部时钟的上升沿和下降沿启动的数据,另一端是器件内部同时对上升沿和下降沿敏感的触发器的输出数据 ;




精彩推荐



至芯科技12年不忘初心、再度起航12月17日北京中心FPGA工程师就业班开课、线上线下多维教学、欢迎咨询!
AXI DMA收发数据过程和时序关系
Xilinx FPGA中的基础逻辑单元
扫码加微信邀请您加入FPGA学习交流群




欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!






原文标题:FPGA学习-IO延迟的约束方法

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1606

    文章

    21345

    浏览量

    594226

原文标题:FPGA学习-IO延迟的约束方法

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Xilinx FPGA约束设置基础

    LOC约束FPGA设计中最基本的布局约束和综合约束,能够定义基本设计单元在FPGA芯片中的位置,可实现绝对定位、范围定位以及区域定位。
    发表于 04-26 17:05 153次阅读
    Xilinx <b class='flag-5'>FPGA</b>的<b class='flag-5'>约束</b>设置基础

    FPGA时序约束--基础理论篇

    FPGA开发过程中,离不开时序约束,那么时序约束是什么?简单点说,FPGA芯片中的逻辑电路,从输入到输出所需要的时间,这个时间必须在设定的时钟周期内完成,更详细一点,即需要满足建立和保
    发表于 11-15 17:41

    #共建FPGA开发者技术社区,为FPGA生态点赞#+2023.11.8+FPGA设计的实践与经验分享

    一:理解FPGA FPGA由逻辑单元,(LUT)和存情单元(FF) 组成,可以通过VHDL或Verlo等硬件描述语言进行代码编写,初学者需要堂握FPGA的基本结构和使用方法,从而理解如
    发表于 11-08 15:25

    FPGA约束设计和时序分析

    在进行FPGA的设计时,经常会需要在综合、实现的阶段添加约束,以便能够控制综合、实现过程,使设计满足我们需要的运行速度、引脚位置等要求。通常的做法是设计编写约束文件并导入到综合实现工具,在进行
    发表于 09-21 07:45

    #FPGA学习 MDY进阶专题系列(10)时序约束(设计能力)

    fpga时序约束
    明德扬助教小易老师
    发布于 :2023年09月12日 08:02:22

    FPGA I/O口时序约束讲解

    前面讲解了时序约束的理论知识FPGA时序约束理论篇,本章讲解时序约束实际使用。
    发表于 08-14 18:22 1010次阅读
    <b class='flag-5'>FPGA</b> I/O口时序<b class='flag-5'>约束</b>讲解

    FPGA时序约束之建立时间和保持时间

    FPGA中时序约束是设计的关键点之一,准确的时钟约束有利于代码功能的完整呈现。进行时序约束,让软件布局布线后的电路能够满足使用的要求。
    发表于 08-14 17:49 910次阅读
    <b class='flag-5'>FPGA</b>时序<b class='flag-5'>约束</b>之建立时间和保持时间

    FPGA设计衍生时钟约束和时钟分组约束设置

    FPGA设计中,时序约束对于电路性能和可靠性非常重要。
    发表于 06-26 14:53 1039次阅读
    <b class='flag-5'>FPGA</b>设计衍生时钟<b class='flag-5'>约束</b>和时钟分组<b class='flag-5'>约束</b>设置

    在Vivado中如何写入FPGA设计主时钟约束

    FPGA设计中,时序约束的设置对于电路性能和可靠性都至关重要。
    发表于 06-26 14:47 1100次阅读
    在Vivado中如何写入<b class='flag-5'>FPGA</b>设计主时钟<b class='flag-5'>约束</b>?

    FPGA时序约束的原理是什么?

    FPGA开发过程中,离不开时序约束,那么时序约束是什么?简单点说,FPGA芯片中的逻辑电路,从输入到输出所需要的时间,这个时间必须在设定的时钟周期内完成,更详细一点,即需要满足建立和保
    发表于 06-26 14:42 403次阅读
    <b class='flag-5'>FPGA</b>时序<b class='flag-5'>约束</b>的原理是什么?

    如何在Vivado中添加时序约束

    前面几篇文章已经详细介绍了FPGA时序约束基础知识以及常用的时序约束命令,相信大家已经基本掌握了时序约束方法
    的头像 发表于 06-23 17:44 1494次阅读
    如何在Vivado中添加时序<b class='flag-5'>约束</b>

    FPGA时序约束之伪路径和多周期路径

    前面几篇FPGA时序约束进阶篇,介绍了常用主时钟约束、衍生时钟约束、时钟分组约束的设置,接下来介绍一下常用的另外两个时序
    发表于 06-12 17:33 1105次阅读

    FPGA时序约束之衍生时钟约束和时钟分组约束

    FPGA设计中,时序约束对于电路性能和可靠性非常重要。在上一篇的文章中,已经详细介绍了FPGA时序约束的主时钟约束
    发表于 06-12 17:29 1539次阅读

    FPGA主时钟约束详解 Vivado添加时序约束方法

    FPGA设计中,时序约束的设置对于电路性能和可靠性都至关重要。在上一篇的文章中,已经详细介绍了FPGA时序约束的基础知识。
    发表于 06-06 18:27 7570次阅读
    <b class='flag-5'>FPGA</b>主时钟<b class='flag-5'>约束</b>详解 Vivado添加时序<b class='flag-5'>约束</b><b class='flag-5'>方法</b>

    FPGA时序约束的基础知识

    FPGA开发过程中,离不开时序约束,那么时序约束是什么?简单点说,FPGA芯片中的逻辑电路,从输入到输出所需要的时间,这个时间必须在设定的时钟周期内完成,更详细一点,即需要满足建立和保
    发表于 06-06 17:53 944次阅读
    <b class='flag-5'>FPGA</b>时序<b class='flag-5'>约束</b>的基础知识