当前位置:   article > 正文

FPGA时序分析和约束(15)——多周期路径_fpga 时序约束 多周期路径

fpga 时序约束 多周期路径

系列文章目录:

FPGA时序分析与约束(0)——目录与传送门icon-default.png?t=N7T8https://ztzhang.blog.csdn.net/article/details/134893857

一、概述

        在前文中,我们知道了时序异常可以分成3种类型,分别是虚假路径、多周期路径、最小延迟和最大延迟,我们已经详细介绍过来虚假路径,本文中,我们来介绍多周期路径。

        默认情况下,时序工具都是以单周期为单位进行时序路径分析。但是在实际的设计中,单周期对于某些逻辑可能不太准确,导致对它们的时序要求过高,最终造成布线资源的浪费。

        这种情况下,就需要设计人员进行一些额外的约束(设置为多个周期)来放宽对这些路径的约束,这样的路径就称为多周期路径。

二、多周期路径的SDC命令

        用于将路径声明为多周期路径的SDC命令如下:

  1. set_multicycle_path [-setup]
  2. [-hold]
  3. [-rise][-fall]
  4. [-start][-end]
  5. [-from from_list]
  6. [-to to_list][-through through_list]
  7. [-rise_from rise_from_list]
  8. [-rise_to rise_to_list]
  9. [-rise_through rise_through_list]
  10. [-fall_from fall_from_list]
  11. [-fall_to fall_to_list]
  12. [-fall_through fall_through_list]
  13. path_multiplier
  14. [-comment comment_string]
  • path_multiplier 参数是必须指定的,它就是多周期约束中最重要的“多”的体现,即用于设置修改约束路径分析的时钟周期数,该参数的取值必须是大于0的整数。
  • -setup和-hold选项用于指定约束命令所针对的是路径的建立时间分析(-setup)还是保持时间分析(-hold)。
  • -start和-end选项用于指定约束命令的<path_multiplier>参数是以源时钟(-start)还是以目标时钟(-end)作为参考时钟。
  • -from指定约束路径的起始节点
  • -to指定约束路径的终止节点
  • -through指定约束路径所经过的节点

        其中-through是可选项,-from和-to可以同时指定,也可以只指定其中一个,例如当约束语法中只有-from,就意味着约束将覆盖所有从当前指定起始节点开始的路径。

三、建立/保持规格

        我们首先设定一个大前提,那就是启动元器件和捕获元器件由同一个时钟触发。在默认情况下,setup/recovery分析时的默认的<path_multiplier>参数为1,hold/removal分析时的默认的<path_multiplier>参数为0。使用set_multiplier进行多周期约束,就是要改变时序工具默认的1和0的<path_multiplier>参数。

        需要特别说明的是,保持(hold)时间关系和建立(setup)时间关系是紧密相连的,大多数情况下,可以用以下公式进行计算:

保持时间的时钟周期数 = 建立时间的<path_multiplier>参数  -1 - 保持时间的<path_multiplier>参数

        我们考虑如下的情况:

        在未进行多周期约束之前,时序工具假设启动触发器在A沿启动数据。对于建立分析,考虑在B沿获取数据,因此,在A沿和B沿之间分析建立关系。

        在进行多周期约束时,使用-setup可以使建立分析的捕获沿根据指定的周期数进一步远离A向右移动到C/D等。我们假设进建立的捕获沿通过-setup移动到D沿。出于保持分析的目的,时序分析工具会立即考虑捕获触发器的前一个沿(启动时钟和捕获时钟相同时)。因此,为例捕获保持分析考虑使用C沿。为了保持分析使用-hold开关将捕获沿向左移到B/A,这取决于指定的周期数。一般的做法是,将保持检查恢复到A沿。如果保持检查没有回到A沿,则可能导致路径中插入缓冲器来确保有一定的延迟,这些缓存器会占用硅片的面积和功率。

        基于上述的假设,我们将建立沿移动了3个周期(使其到达D沿)。保持沿自动移动到C沿(前一个沿)。现在,为了恢复它,必须将其移动到两个周期。这可以通过使用-hold开关来实现。

        为了将保持沿移回到A,我们将其移动了两个周期(C->A)。现在它与启动沿处于同一个沿,即在第0个沿(启动沿认为是原点)。

        需要特别注意的是,-setup开关指定周期到(不是“通过”)建立捕获沿将向右移动的周期;-hold开关指定周期通过(不是“到”)保持捕获沿向左移动的周期。如果建立沿移动到第N个沿,则保持沿自动移动到第N-1个沿。为了将其恢复到原始位置,保持检查需要向后移动N-1个周期,使其回到“0”沿。多周期路径规格通常可以在成对的-setup和-hold中找到。如果没有给出-hold规格,则由于建立沿的移动,保持沿保持在其已经移动到的位置。

四、小结

        多周期路径为指定的路径提供了额外的宽松。在指定多周期路径时,我们应该注意:(1)不可预知的路径不能称为多周期路径(2)允许的额外时间量应该与预期的一致。如果路径受限于(即多周期规格允许信号达到更宽的范围)设计的路径,则元器件可能无法以所需的频率运行。

        当我们通过多周期路径规格移动建立沿时,保持沿也会移动。我们需要检查保持沿是否需要恢复到初始位置。在大多数情况下,应该恢复。如果没有恢复保持沿,则设计可能在数据路径中有额外的缓冲器,以增加延迟来满足增加的保持要求。这将导致硅片面积和功耗的增加。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/676143
推荐阅读
相关标签
  

闽ICP备14008679号