(FPGA时序约束)set_max_delay/set_min_delay详解

这篇具有很好参考价值的文章主要介绍了(FPGA时序约束)set_max_delay/set_min_delay详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.定义

       属于时序例外的一种。(时序例外是:某条路径在默认参数下没有被正确地分析时序,在这种情况下,需要告知时序分析工具这条路径是一个例外,需要按照我地特殊指示来执行这条路径地时序分析。举例:一个数据被一个寄存器同步采样,但不是每个时钟沿都采,而是每隔一个时钟 沿采一次,这时候就需要采用多周期路径时序例外进行约束,否则这条路径就会按照默认的单周期进行分析,可能不会产生时序违例,但是较紧的要求(没必要)会占用额外的时序收敛资源)

        set_max_delay/set_min_delay定义的是一条路径的最大和最小延迟,这个延迟对应的路径就是从路径源(端口、时钟、时序元件时钟端)到目的(时序元件数据端)的延迟。

2.语法

        常用形式(其他选项还有很多,可以参考手册):

        set_max_delay <delay> [-datapath_only] [-from <node_list>] [-to <node_list>] [-through <node_list>]

        set_min_delay <delay> [-from <node_list>] [-to <node_list>] [-through <node_list>]

3.实际意义

        set_max_delay/set_min_delay覆盖了时序路径上setup/hold分析中的requirement(set_max_delay对应setup,set_min_delay对应hold),啥是reruirement,可以参考其他博客中的介绍,这是Xilinx时序分析的基础概念。

        这里做一个对比方便记忆,set_false_path和set_clock_group是忽略路径时序分析,本质是把该路径的require变为∞(无穷),所以slack变成了无穷大,如下图所示我把一条路径设置为false path之后的requirement的变化。max delay 为什么和 setup 相关,fpga开发        而set_max_delay/set_min_delay是什么呢,是把requirement按照我说的来,我给你赋个值,综合工具按照我设定的这个延迟去布局布线以及时序分析。

4.特殊选项分析

        注意看语法可以发现,set_max_delay比set_min_delay多了一个命令选项-datapath_only,这个选项的意思就是,这条路径我不仅用户规定一个最大延迟(通过覆盖原有requirement实现),而且在这条路径的时序分析中,忽略时钟skew和jitter,只考虑数据通路。我们知道,针对时序余量分析,不仅要考虑数据路径延迟,也要考虑时钟路径延迟(skew=目的时钟延迟-源时钟延迟,jitter是时钟抖动),设置了datapath_only之后,计算slack时候skew和jitter就不考虑了。为啥要不考虑这两个东西,主要是因为在源时钟和目的时钟异步的情况下,这个skew可能会很大,但是在这种情况下还不能直接把这个路径设置为false path(例如格雷码异步跨时钟域传输问题,要考虑格雷码所有数据位在CDC路径上的延迟,如果延迟差别过大会造成采样错误)。

  • set_max_delay可以用来约束任何有效起点(时钟、输入端口)到有效终点(时序元件D端、输出端口)之间的路径:

max delay 为什么和 setup 相关,fpga开发

  • set_max_delay -datapath_only就是用来约束异步信号时序路径;
  • -datapath_only只有在set_max_delay中才能用(为啥看下一条括号中);
  • set_max_delay -datapath_only之后会忽略该路径的hold分析(大多数hold requirement为0,那么hold分析主要是比较clock skew和data path之间的差异,如果使用datapath_only忽略clock skew,hold分析也就没有了意义);
  • set_max_delay -datapath_only命令中必须得有-from选项;
  • -datapath_only选项只能用在异步跨时钟域上(两个时钟没有已知的相位关系)。
  • -datapath_only可以用来保证cdc路径尽可能短

5.典型例子

        文章来源地址https://www.toymoban.com/news/detail-858438.html

max delay 为什么和 setup 相关,fpga开发

         clk0、clk1异步。他们之间有两条路径,一条为1位数据同步,另一条为多位格雷码总线同步。这样的结构在异步fifo中十分常见,那么这里不能直接对两个时钟set_false_path或者set_clock_groups,这样会隐藏格雷码同步路径中的问题,如果多位格雷码数据间在GCB0到GCB1a的路径延迟差距过大,超过了目的端时钟频率,那么有可能采样段就会采到错误的数据,或者如果多位格雷码的延迟过大,即使没有很大的bit间skew,接收端也需要更长的时间才能接收到正确的值,会造成异步fifo的性能下降。所以此时的约束应该为:

        set_max_delay [expr $period_fast_clk] -from [get_pins GCB0[*]/clk] -to [get_pins GCB1a[*]/D] -datapath_only 

        set_false_path -from [get_cells REG0] -to [get_cells REG1a]

6.其他用法

        (1)通过收紧setup/hold的requirement,来对设计中一些路径进行过约束

        (2)在某些情况下替代多周期路径:这种方法是唯一能够以单个时钟周期几分之一的幅度对多周期路径进行过约束,以达到时序收敛目的的方法。例如:clk=5ns,多周期路径为3的路径有200ps的建立时间违例,则可以使用如下约束代替多周期路径:    

                set_max_delay -from [...] -to [...] 14.5

                这样,能达到时序收敛的目的。

        (3)约束input port到output port路径延迟

7.注意事项

        时序例外的使用有严格的优先级,高优先级的会覆盖低优先级的设置,优先级规则如下:

        1.约束越明确,优先级越高,比如:

                set_max_delay -from [get_clocks clkA] -to [get_pins inst0/D] 12

                set_max_delay -from [get_clocks clkA] -to [get_clocks clkB] 10

                第一个set_max_delay的优先级就更高,应为-to选项的参数pin比clock更加明确

        2.时序例外优先级排序:

                (1)set_case_analysis(最高优先级)

                (2)set_false_path

                (3)set_max_delay/set_min_delay

                (4)set_multicycle_path

        

到了这里,关于(FPGA时序约束)set_max_delay/set_min_delay详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA设计时序约束三、设置时钟组set_clock_groups

    目录 一、背景 二、时钟间关系 2.1 时钟关系分类 2.2 时钟关系查看 三、异步时钟组 3.1 优先级 3.2 使用格式 3.3 asynchronous和exclusive 3.4 结果示例 四、参考资料     Vivado中时序分析工具默认会分析设计中所有时钟相关的时序路径,除非时序约束中设置了时钟组或false路径。使

    2024年02月02日
    浏览(46)
  • 浅谈时序:set_input_delay

    1、set_input_delay的本质 set_input_delay是对模块input信号在模块外部延迟的约束,本质上EDA工具会根据约束调整设计内部的器件类型,摆放的位置以及优化内部组合逻辑保证满足约束要求。 约束指导原则:尽量照顾设计外部逻辑延时 set_input_delay -max delay_vaule 中delay_vaule 数值尽量大

    2024年02月12日
    浏览(39)
  • FPGA时序分析与时序约束(四)——时序例外约束

    目录 一、时序例外约束 1.1 为什么需要时序例外约束 1.2 时序例外约束分类 二、多周期约束 2.1 多周期约束语法 2.2 同频同相时钟的多周期约束 2.3 同频异相时钟的多周期约束 2.4 慢时钟域到快时钟域的多周期约束 2.5 快时钟域到慢时钟域的多周期约束 三、虚假路径约束 四、最

    2024年01月20日
    浏览(44)
  • FPGA时序约束与分析(1) --- 时序约束概述

    本系列参考文献 — FPGA时序与约束分析-吴厚航 FPGA从综合到实现需要的过程如下:synth_design - opt_design - place-design - phys_opt_design - route_design 1、时序约束的理解 2、时序约束的基本路径 3、时序约束的步骤 4、时序约束的主要方法 5、查看相关时序信息 FPGA的设计约束分为物理约束

    2024年02月16日
    浏览(33)
  • FPGA时序分析与时序约束(二)——时钟约束

    目录 一、时序约束的步骤 二、时序网表和路径 2.1 时序网表 2.2 时序路径  三、时序约束的方式 三、时钟约束 3.1 主时钟约束 3.2 虚拟时钟约束 3.3 衍生时钟约束 3.4 时钟组约束 3.5 时钟特性约束 3.6 时钟延时约束         上一章了解了时序分析和约束的很多基本概念(FP

    2024年02月03日
    浏览(71)
  • FPGA时序约束--实战篇(Vivado添加时序约束)

    前面几篇文章已经详细介绍了FPGA时序约束基础知识以及常用的时序约束命令,相信大家已经基本掌握了时序约束的方法。 今天介绍一下,如何在Vivado中添加时序约束,Vivado添加约束的方法有3种:xdc文件、时序约束向导(Constraints Wizard)、时序约束编辑器(Edit Timing Constrain

    2024年02月10日
    浏览(50)
  • FPGA时序分析与约束(2)——时序电路时序

            在之前的内容中,我们介绍了组合电路的时序问题和可能导致的毛刺,强烈推荐在阅读前文的基础上再继续阅读本文, 前文链接:FPGA时序分析与约束(1)——组合电路时序         这篇文章中,我们将继续介绍FPGA时序分析相关内容,本文介绍的是时序电路的时序

    2024年02月10日
    浏览(42)
  • FPGA时序约束(二)利用Quartus18对Altera进行时序约束

    FPGA时序约束(一)基本概念入门及简单语法 最近由于不懂时序约束,在高速信号采集上面吃了很多亏,不知道系统工作异常的原因是什么。记录一下查到的资料,有些许自己的理解,可能有误。(主要是小梅哥及《FPGA时序约束与分析(吴厚航)》) 在程序编译之后,会出现

    2024年02月05日
    浏览(43)
  • 静态时序分析:SDC约束命令set_drive详解

    相关阅读 静态时序分析 https://blog.csdn.net/weixin_45791458/category_12567571.html         本章将讨论使用set_drive命令,它用于对输入端口的驱动能力建模。首先需要说明的是,默认情况下,DC在STA时默认输入端口的转换时间是0,这对于大多数情况来说过于理想。         set_drive命令设

    2024年02月22日
    浏览(50)
  • FPGA时序约束--进阶篇(主时钟约束)

    在FPGA设计中,时序约束的设置对于电路性能和可靠性都至关重要。在上一篇的文章中,已经详细介绍了FPGA时序约束的基础知识。 本文将重点讲解主时钟约束设置,给出详细的约束命令,并介绍了在Vivado中如何写入主时钟约束。 主时钟是FPGA电路中最基础的时钟,其稳定性和

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包