建立保持时间及违例解决方法

这篇具有很好参考价值的文章主要介绍了建立保持时间及违例解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

建立保持时间概念

为什么要有建立保持时间?参考:为什么会有建立时间(setup time)和保持时间(hold time)要求 - 知乎 (zhihu.com)

答:简单来说,DFF可以由两个latch构成,每个latch是通过传输门组成的mux组成。如果不满足建立时间,mux反馈端口的左右两侧就会出现不相等情况。如果不满足保持时间,在clk关断mux之前,新的数据还是会进入dff冲毁数据。

  • 建立时间(setup time):触发器在时钟沿到来之前,其数据的输入端的数据必须保持不变的时间;

    • 建立时间决定了该触发器之间的组合逻辑的最大延迟maxdelays
  • 保持时间(hold time)触发器在时钟沿到来之后,其数据输入端的数据必须保持不变的时间;

    • 关于保持时间的理解就是,在触发器D2的输入信号还处在保持时间的时候,如果触发器D1的输出已经通过组合逻辑到达D2的输入端的话,将会破坏D2本来应该保持的数据。
    • 保持时间决定了该触发器之间的组合逻辑的最小延迟mindelays
    • Hold time violation的原因是前面输出变化太快,后端综合工具很容易自动解决这个问题(例如自动插入几个buffer)。

建立保持时间分析

参考:FPGA基础学习(5) – 时序约束(实践篇) - 肉娃娃 - 博客园 (cnblogs.com)

  • 电路模型:
    建立时间和保持时间违例,硬件,fpga开发,芯片
    上图是典型的同步时序模型及,由发起寄存器(rega)、组合逻辑、捕获寄存器(regb)及其中间的走线组成。源时钟clk到达rega的时钟端口时,会有一定的延迟,从而形成clka。同理,时钟延迟到达regb的时钟端口,形成clkb。Tco为有效数据出现在发起寄存器Q端口所需时间。Tcomb为数据延迟,包括组合逻辑延迟和走线延迟。Tsu表示捕获寄存器建立时间要求。Th表示捕获寄存器保持时间要求。其中Tco、Tsu和Th是由FPGA的芯片工艺决定的。所以,我们所谓的时序约束,实际上就是对时钟延迟和Tcomb做一定的要求或者干预,其中Tcomb由组合逻辑(代码)及布局布线决定,这也决定了系统最高的工作频率。

  • 裕量Time Slack:

    时间裕量包括建立时间裕量和保持时间裕量(setup slack和hold slack)。从字面上理解,所谓“裕量”即富余的、多出的。什么意思呢?即保持最低要求的建立时间或保持时间所多出的时间,那么“裕量”越多就意味着时序约束越宽松呢。

    • 如果Times Slack > 0 , 则电路能够正常被采样,否则不可以!

    • 整个电路中,时钟频率由最差的一条时序路径决定!

    • Setup Time公式:Tclka + Tco + Tcomb + Tsetupslack = Tcycle + Tclkb + Tsetup,即Tsetupslack = Tcycle + (Tclkb-Tclka) + Tsetup - Tco - Tcomb。

      其中Tclka和Tclkb是两个时钟偏斜,Tco是D->Q的传输延迟,Tcomb是组合逻辑延迟,Tcycle是时钟周期,Tsetup是建立时间,Tsetupslack是建立时间裕量。

    • Hold Time公式:Tclka + Tco + Tcomb = Tclkb +Thold + Tholdslack,即Tholdslack = Tco + Tcomb - (Tclkb - Tclka) - Thold.

      其中Tclka和Tclkb是两个时钟偏斜,Tco是D->Q的传输延迟,Tcomb是组合逻辑延迟,Thold是建立时间,Tholdslack是保持时间裕量。
      建立时间和保持时间违例,硬件,fpga开发,芯片
      通俗的讲,一个FPGA工程在综合实现后,是否满足时序约束,其实就是看所有的捕获寄存器是否能正确稳定捕获到发起寄存器发出的数据。如上图所示,也就是说到达捕获寄存器的数据输入端口D(regb/D)的数据要满足建立和保持时间要求,也就是说在Tsu之前,current data valid就要准备就绪,而在Th之后呢,current data valid还要多维持一段时间。换言之,在Tsu之前以及Th之后多出的这部分时间,我们就称之为“裕量”,裕量越大,时序越宽松。裕量的大小与时钟频率、代码设计以及布局布线有着紧密的联系。一个设计的时序报告中,裕量为负数时,表示时序约束出现违例,虽然个别违例不代表你的工程就有致命的问题,但是这是一个风险(时序报告是按照工艺、电压以及温度的上下限给出的结果)。当违例数较多,也就意味着设计在实际环境中出现问题的概率也会越大。

  • 最大延迟和最小延迟:

    如下图所示,“数据有效窗口”表示捕获的数据满足建立时间和保持时间,在此窗口中要捕获的数据不能发生变化,否则将引起不稳定的结果。
    建立时间和保持时间违例,硬件,fpga开发,芯片
    我们来看1、2、3三种情况,在分析之前,首先要明确Data的持续时间长度一定是一个时钟周期(多周期打拍另说)。1:当延迟时间大于T-Tsu时,Data在建立时间区域内才到达regb,所以不满足建立时间要求,这就是说数据来的“太晚了”;2:当Data延迟了很小一段时间(<Th),Data在保持时间内就变化了,所以不满足保持时间,这就是说数据来的“太早了”。3:当Data延迟了Th,Data则满足建立时间要求又刚好满足保持时间要求,这就是说数据来的“正巧”。

    综上所述,数据的最大延迟是T-Tsu,最小延迟是Th

    一般而言,在综合之后,**我们需要特别关注的是建立时间的时序违例,因为可以通过增加布线长度来保证保持时间。**大多数保持时间违例在实现之后自然会被优化掉。

Setup Time Violation的解决方案

  • Setup时间公式:Tclka + Tco + Tcomb + Tslack = Tcycle + Tclkb + Tsetup,即Tslack = Tcycle + Tclkb + Tsetup -Tclka - Tco - Tcomb
    其中Tclka和Tclkb是两个时钟偏斜,Tco是D->Q的传输延迟,Tcomb是组合逻辑延迟,Tcycle是时钟周期,Tsetup是建立时间,Tslack是建立时间裕量。
    如果出现了Setup Time Violation,也就是说Tsetupslack为负数了,那么可以考虑:

    • 增大时钟周期Tcycle,即降低时钟频率
    • 减小 D->Q的传输延迟Tco,即更换更快的器件,使用更先进的器件库
    • 减小 Tcomb,即减小组合逻辑延时,主要是关键路径的处理。包括插入寄存器使其流水、重定时等。
    • 增大时钟歪斜Tskew=Tclkb-Tclka。如果时钟歪斜 Tskew 为正,对setup是有利的,对hold是有害。

Hold Time Violation的解决方案

  • Hold Time公式:Tclka + Tco + Tcomb = Tclkb +Thold + Tholdslack,即Tholdslack = Tco + Tcomb - (Tclkb - Tclka) - Thold.
    其中Tclka和Tclkb是两个时钟偏斜,Tco是D->Q的传输延迟,Tcomb是组合逻辑延迟,Thold是建立时间,Tholdslack是保持时间裕量。
    如果出现了Hold Time Violation,也就是说Tholdslack为负数了,那么可以考虑:文章来源地址https://www.toymoban.com/news/detail-685380.html

    • 增加 Tcomb 延迟,增大数据的延迟具体表现为插入 Buffer,Xilinx 还提到可以插入 LUT1 增加延迟等方式来修复;
    • 增大 Tcomb,即增大组合逻辑延时,主要是关键路径的处理。可以增加Buffer,或者后端布局布线拉长布线以增加延时。
    • 减小时钟歪斜Tskew=Tclkb-Tclka。如果时钟歪斜 Tskew 为正,对setup是有利的,对hold是有害。

到了这里,关于建立保持时间及违例解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • FPGA的时序分析、约束和收敛(8)----关于时序路径、时钟悲观度和建立时间/保持时间的一些问题

    目录 写在前面 1、为什么同一条时序路径在报表里的值不一样?

    2024年02月12日
    浏览(57)
  • 时序违例在FPGA开发流程的分析及解决,结合实际工程

    时序违例的解决可以分为几个阶段,布局前,布线前,布线后。我们从这几个阶段对时序违例进行分析以及提出解决方法。(参考ug1292和ug949)。时序违例包括建立时间违例和保持时间为例,主要关注建立时间违例,保持时间违例是由于组合逻辑太短和时钟偏移造成的,可以

    2024年02月12日
    浏览(47)
  • 简述建立时间(setup time) 和 保持时间(hold time)

    本文是根据参考了网上多篇帖子和书籍,对于有关建立时间和保持时间知识点讲解的基础上进行归纳总结,如有错误敬请批评指正! 一、概念         建立时间和保持时间都是基于触发器而言,所以在了解建立时间和保持时间之前,需要对触发器进行分析,本文从D触发器

    2024年01月16日
    浏览(47)
  • 一文弄懂Verilog静态时序分析中的建立时间和保持时间

           在对Verilog代码进行静态时序分析的时候,建立时间和保持时间是需要我们重点关注的指标。 建立时间(Setup Time): 指采样时钟边沿到来之前,数据需要保持稳定的时间。如果数据在采样时钟的边沿到来之前的建立时间内这段时间变化,可能会造成时钟采样的数据在

    2024年01月16日
    浏览(44)
  • 传输门、D 锁存器、D触发器、建立时间与保持时间

    在了解setup time和hold time之前,我们应该了解D锁存器 D latch 和 D触发器 DFF 。D锁存器和DFF是由传输门 transmission gate 和反相器 inverters 组成。 The transmission gate is consists of a parallel connection of PMOS NMOS. Two gate voltage of PMOS and NMOS are the complement of each other. The effective resistance of the trans

    2023年04月16日
    浏览(44)
  • 【FPGA中时序违例的处理方法】——详解

    【FPGA中时序违例的处理方法】——详解 FPGA作为一种可编程逻辑器件,被广泛应用于数字电路设计和验证中。然而,在实际应用中,由于各种因素的干扰,可能会出现时序违例问题。时序违例是指由于时钟信号传输延迟等原因,导致数据信号无法按照预期的时序到达目标寄存

    2024年01月23日
    浏览(90)
  • 静态时序分析Static Timing Analysis2——建立时间和保持时间的时序检查

    2023.4.11 继续学习STA,前面听的感觉好迷糊,先接着看,到时候回头再看一遍理解 2023.4.12 打卡 Tlaunch + Tcq + Tdp = Tclk + Tcapture - Tsetup 时钟的发射和捕获延迟时间是很小的,Tcq和Tsu是工艺库决定的,是固定值。要想等式成立,要取左边的最大值来进行判断 建立时间违例的解决方法

    2023年04月12日
    浏览(34)
  • 时序分析、时序约束和时序收敛(8)--关于时序路径、时钟悲观度和建立时间/保持时间的一些问题

    目录 写在前面 1、为什么同一条时序路径在报表里的值不一样?

    2024年02月08日
    浏览(49)
  • 时钟抖动(jitter)和时钟偏移(skew)的理解和建立/保持时间slack的计算

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 在一次笔试题中遇到了带时钟抖动(jitter)的建立/保持时间计算的问题,当时对时钟抖动概念不是很清晰,然后没写出来,笔试结束后去网上搜索发现只有时钟抖动的概念,并无相关计算(也可能自己

    2024年02月01日
    浏览(81)
  • FPGA设计时序分析二、建立/恢复时间

    目录 一、背景知识 1.1 理想时序模型 1.2 实际时序模型     1.2.1 时钟不确定性     1.2.2 触发器特性 二、时序分析 2.1 时序模型图 ​2.2 时序定性分析     之前的章节提到,时钟对于FPGA的重要性不亚于心脏对于人的重要性,所有的逻辑运算都离开时钟的驱动。那是不是

    2024年02月14日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包