FPGA时序分析与约束(8)——时序引擎

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

一、概述

        要想进行时序分析和约束,我们需要理解时序引擎究竟是如何进行时序分析的,包括时序引擎如何进行建立分析(setup),保持分析(hold),恢复时间分析(recovery)和移除时间分析(removal)。

二、时序引擎进行建立时间分析

1、确定建立时间要求(建立时间的捕获沿-建立时间的发起沿)

        发起沿(launch edge,源时钟产生数据的有效时钟沿),捕获沿(capture edge,目的时钟捕获数据的有效时钟沿)。

        时序引擎会找出发起时钟和捕获时钟的最小公共周期,然后在最小公共周期内找到所有发起时钟沿和捕获时钟沿的所有可能的情况,并在所有可能的情况中挑选出最小的建立时间需求(大于0),从而确定了Launch edge和Capture edge。

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束

 2、计算数据的需求时间

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束

         数据的建立要求时间 = 捕获沿 + 目的时钟路径延迟 - 时钟不确定性 - 建立时间

3、计算数据的到达时间

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束

        数据到达时间 = 产生沿 + 源时钟路径延迟 + 数据路径延迟 

4、计算Setup的裕度(Slack)

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束

        建立时间裕度 = 数据建立要求 - 最后一个到达的信号 

5、建立裕度的影响因素 

  • Setup Slack = (Capture edge – Launch edge)+ (destination clk delay – source clk delay)- Setup time - clk uncertainty – datapath delay  
  • Setup Slack =  Setup Requirement(一定大于0) + clk skew – Tsu – Tclk uncertainty – Tlogic – Tnet - Tco 

        会导致Setup Slack为负数的影响因素如下:

 5.1 Setup Requirement 与实际情况不符

        建立时间需求过小,这种情况通常会在同步跨时钟域路径中出现,在同步跨时钟域路径中的源时钟频率与目的时钟频率的相位关系虽然是已知的,但是时序引擎默认选择的捕获沿通常都是错误的,需要用户通过多周期路径约束的方式手动修正建立时间需求。比如下图中,两个同频不同相的同步时钟,时序引擎默认选择的捕获沿是目的时钟第二个上升沿,导致建立时间需求非常小,最终肯定会导致时序违例。 

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束

5.2 clk skew为负值,且很大

        通常情况下,同一个时钟下的时钟歪斜不应该超过300ps,同步跨时钟域路径的时钟歪斜不应该超过500ps,异步跨时钟域路径的时钟歪斜一般比较大,因为它们的时钟源不同。

        当出现时钟歪斜大的情况时:

  1. 检查源时钟路径和目的时钟路径上是否干净,时钟路径上是否引入了组合逻辑,时钟路径是否使用了过多的BUFGCE,时钟路径上是否级联了多个BUFGCE导致时钟延时变大。
  2. 检查源时钟路径和目的时钟路径所经过的模块是否相同,比如源时钟路径上经过全局缓冲,PMMCM,但是目的时钟路径上只经过了全局缓冲。如下图所示,第一条路径的源时钟路径上有BUFGCE/MMCM/BUFGCE,而目的时钟路径上只有BUFGCE,所以源时钟路径和目的时钟路径的延时不同,导致时钟歪斜较大,应该尽量避免此类路径。第二条路径的源时钟和目的时钟都是来源于MMCM的不同的时钟,所以时钟歪斜较小。

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束

5.3 Tsu/Tco大 

        当设计中使用Block(DSP/Block RAM等)时,应该要注意以下问题。对于以这些Block为时序路径的起点或终点的时序路径,这些BlockTsu/Th/Tco都比普通的寄存器大,而且这些Block的布线延时和时钟歪斜比较大。

        所以当使用这些Block作为时序路径的终点时,它的起点一定要是触发器,比如说一个Block RAM的写数据信号,输入进 Block 前最好打一拍。当使用这些 Block 作为时序路径的起点时,应该使用 Block 内部的输出寄存器,比如使用由 Block RAM 组成的FIFO时,尽量不要使用首字置出的,而使用打一拍后输出的,使用后者可以显著降低Tco。当时序路径为从一个 Block 到另一个Block 时,中间需要进行打拍操作。当使用这些Block的控制端口时,应该保证这些控制信号的低扇出,如使用由Block RAM组成的FIFO时,应该尽量降低读/写能信/地址信号的扇出。

5.4 Tlogic大

        一般情况下,逻辑延时与时序路径的逻辑层级数息息相关,逻辑层级是指时序路径的起点和终点之间组合逻辑单元(LUT)的个数,而逻辑层级多一级意味着多1LUT的延时加1条连接LUT的网线延时。通常一级逻辑层级的延时标准是1LUT1根网线的总延迟为0.5ns,如果某条路径的逻辑级数大于时钟周期/0.5ns,那么这条路径就被称为长路径。常用的处理长路径的方案有两种:第一种,修改rtl代码,在长路径的逻辑中插入流水线,将长路径打破分为多条短路径;第二种,使用综合工具的retiming优化方式,retiming实际上是寄存器重定向,原理是当某条长路径的相邻路径的建立时间裕量较大,那么它可以调整中间寄存器的位置,来调整布线延迟,通过适当增加相邻路径的布线延迟而减少长路径的布线延迟,使得那些时序违例较小的长路径通过这种微调实现时序收敛。需要强调的是,这种方式优化的力度非常有限,它只适合时序违例较小的长路径,对于一些延时特别大的长路径而言,也是无力回天。

5.5 Tnet大 

        一般情况下,布线延迟与设计整体或局部模块的资源利用率以及拥塞程度息息相关。

        在正常情况下,一条网线的延时小于1ns,在发生拥塞的区域,网线的延时可能达到若干ns,导致布线延时显著增加。为了解决布线延迟大,需要从降低资源利用率和降低拥塞程度下手,比如某个模块使用了大量的寄存器堆,占用了大量的资源,此时应该考虑使用Block RAM代替这些寄存器堆;某个模块使用了大量的数据选择器,此时应该考虑如何优化这些数据选择器;某个模块的控制信号扇出比较大,与其他模块的互联很重,此时应该考虑如何降低这些信号的扇出;某条时序路径的起点或终点是Block,由于Block的位置比较固定,所以Block的布线延迟会大一些。最后需要强调的是,一定要额外关注高扇出的网线也会对布线延时产生影响。

三、时序引擎进行保持时间分析

 1、确定保持时间要求(保持时间的捕获沿-保持时间的发起沿)

        保持时间要求是以建立时间要求为基础的

        保持时间要求有两种:

  • 当前建立时间的发起沿产生的数据不能被当前建立时间的捕获沿的前一个有效沿捕
  • 当前建立时间发起沿的下一个有效沿产生的数据不能被当前建立时间的捕获沿捕获

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束

        根据所有的建立时间需求找到所有的保持时间需求,并从保持时间需求(可正可负)中找到最大的保持时间需求。

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束

2、计算数据的需求时间 

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束

        数据的保持要求时间 = 捕获沿 + 目的时钟路径延迟 + 时钟不确定性 + 保持时间

3、计算数据的到达时间

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束

         数据到达时间 = 源时钟捕获沿 + 源时钟路径 + 数据通道延时

4、计算hold的裕度(Slack)

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束

         保持裕度 = 最早达到的信号 - 数据稳定要求

5、保持裕度的影响因素

Holdup Slack = (lauch edge - capture edge + TclkaTclkb + Tco + Tdata(Tlogic+Tnet) -Th

Holdup Slack =  Tco + Tdata(Tlogic+Tnet) -Th - Holdup Requirement - clk skew

        Hold up Slack为负的情况比较少见,当Setup Slack有较大裕量时,通常工具会自动插入延时来增加Hold up Slack

①保持时间需求大于0(通常由时序引擎选择错误的捕获沿导致)

②时钟歪斜大于300ps(通常由时钟路径上的组合逻辑导致)

③Th过大(通常由时序路径终点为Block导致)

四、Recovery检查

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束

五、Removal检查

FPGA时序分析与约束(8)——时序引擎,关于时序分析的那些事,fpga开发,时序约束 文章来源地址https://www.toymoban.com/news/detail-729790.html

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

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

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

相关文章

  • FPGA时序分析与约束(2)——时序电路时序

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

    2024年02月10日
    浏览(39)
  • FPGA时序分析与约束(5)——时序路径

            在之前的文章中我们分别介绍了组合电路的时序,时序电路的时序和时钟的时序问题,我们也对于时序分析,时序约束和时序收敛几个基本概念进行了区分,在这篇文章中,我们将介绍时序约束相关的最后一部分基本概念,带领大家了解什么是时序路径。       

    2024年02月09日
    浏览(39)
  • FPGA时序分析与时序约束(Vivado)

    后缀L的这个单元中,会生成锁存器 查看布线 定位线路 时间分析,还要考虑数据变化的建立时间与保持时间 经过图上计算可得公式 : Tsu裕量 = (Tskew + 时钟周期 - Tsu) - (Tco + Tdelay) Thd裕量 = Tco + Tdelay - Thd 两个时间都大于0,才能保证系统不产生亚稳态。 建立时间裕量、组

    2024年01月19日
    浏览(42)
  • FPGA时序分析与约束(1)——组合电路时序

            关于时序分析和约束的学习似乎是学习FPGA的一道分水岭,似乎只有理解了时序约束才能算是真正入门了FPGA,对于FPGA从业者或者未来想要从事FPGA开发的工程师来说,时序约束可以说是一道躲不过去的坎,所以从这篇文章开始,我们来正式进行FPGA时序分析与约束的学

    2024年02月10日
    浏览(37)
  • FPGA的时序分析、约束和收敛(1)----什么是时序分析?什么是时序约束?什么又是时序收敛?

    文章目录         写在前面         磨刀不误砍柴工         什么是时序分析?         什么是时序约束?         什么是时序收敛?         时序约束与分析是FGPA开发过程中一项必备的技能,同时也是设计开发中相对较难的部分。很多人一谈起FPGA开

    2024年02月12日
    浏览(35)
  • FPGA时序分析与时序约束(一)——基础知识

    目录 一、为什么要进行时序分析和时序约束 二、什么是时序分析和时序约束 三、时序约束的基本路径 四、时序分析与约束的基本概念 4.1 Clock Uncertainty 4.2 建立时间和保持时间 4.3 发起沿和采样沿 4.4 数据到达时间和时钟达到时间 4.5 建立时间下的数据需求时间 4.6 保持时间

    2024年02月03日
    浏览(31)
  • FPGA时序分析与约束(10)——生成时钟

            最复杂的设计往往需要多个时钟来完成相应的功能。当设计中存在多个时钟的时候,它们需要相互协作或各司其职。异步时钟是不能共享确定相位关系的时钟信号,当多个时钟域交互时,设计中只有异步时钟很难满足建立和保持要求。我们将在后面的内容中介绍这部

    2024年02月21日
    浏览(38)
  • FPGA时序分析与约束(13)——I/O接口约束

            在应用了时钟约束后,所有寄存器到寄存器的路径都能定时。为了获得更加精准的FPGA外部时序信息,设计者需要为FPGA的I/O接口指定时序信息,一般时序工具只能获取FPGA器件内部的时序信息,对于FPGA器件引脚之外的时序信息,必须由设计者约束定义。如果没有指定的

    2024年02月05日
    浏览(42)
  • FPGA时序分析和约束(15)——多周期路径

    系列文章目录: FPGA时序分析与约束(0)——目录与传送门 https://ztzhang.blog.csdn.net/article/details/134893857         在前文中,我们知道了时序异常可以分成3种类型,分别是虚假路径、多周期路径、最小延迟和最大延迟,我们已经详细介绍过来虚假路径,本文中,我们来介绍多周

    2024年02月20日
    浏览(31)
  • 快速入门系列--FPGA中的时序分析与约束

             时序分析,是所有的FPGA工程师在成长过程中都绕不开的技术,由于在一开始我们学FPGA的时候设计的系统都是低速简单的,所以就使得时序分析看起来好像并没有卵用,我不学我的系统照样可以跑起来啊,于是慢慢忽视了这一部分的学习。但是随着我们的技术的

    2024年01月20日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包