set_multicycle_path

本文详细介绍了FPGA设计中多周期路径的概念和使用,包括单周期路径的建立和保持检查,以及如何通过set_multicycle_path约束修改时序分析的建立和保持关系。通过具体的例子展示了在不同时钟域转换中的应用,帮助理解如何在时序分析中调整路径以满足设计需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多周期路径

利用这一约束可以修改STA时序分析的建立和保持关系。

单周期路径

默认情况下Vivado执行单周期的检查。

  • setup 一个周期
  • hold零个周期

如下图所示:

在这里插入图片描述

建立

  • 建立关系是发送沿和捕获沿的关系。
  • 建立要求 = 捕获沿 - 发送沿

STA实际会找到所有的建立要求,在图中仅画出最严苛的情况,因为STA时序只计算最严苛的情况,也就是建立要求的最小值,我们知道正常情况下,setup是正数才对,而正得越多建立的松弛(建立后的余量,越容易达到建立条件)越多,对应数值越大,所以这里要选择小的,即建立松弛小的。

保持

这里有两个保持要求:

  • hold1
    • 保持关系的发送沿==(默认就是上图的发送沿)发的数据不能被到达沿(默认是上图捕获沿的前一个周期)==捕获。
    • 保持要求 = 到达沿 - 保持关系发送沿。
    • 保持关系是到达沿与保持关系发送沿的关系。
    • 因为保持关系发送沿可以根据约束移动,所以不一定保持关系发送沿的下一个周期就是源时钟的下一个发送沿。
  • hold2
    • 保持关系的发送沿的下一个发送沿==(默认就是发送沿的下一个周期即上图的下一个发送沿)==发送的数据不能被捕获沿捕获。
    • 保持要求 = 捕获沿 - 保持关系的发送沿的下一个发送沿。
    • 保持关系是到达沿下一个周期==(默认是捕获沿)与保持关系的发送沿的下一个发送沿(默认就是发送沿的下一个周期即上图的下一个发送沿)==关系。
    • 因为到达沿可以根据约束移动,所以不一定到达沿下一个周期就是目的时钟捕获沿。

STA时序只计算最严苛的情况,也就是两个保持要求的最大值,我们知道正常情况下,hold1和hold2都是负数才对,因此而负得越多保持的松弛(保持后的余量,越容易达到保持条件)越多,而对应数值越小,所以这里要选择大的,即保持松弛小的。实际上第二个保持关系与第一个保持关系是同一个意思,发送沿当作下个发送沿,则到达沿就是捕获沿。每个建立条件都有两个保持关系,而建立条件的最严苛不一定对应于保持关系的最严苛,STA是单独计算的。换句话就是STA会找一个公共周期(在0位置对齐的相位开始,还有相同的对齐相位)内的所有建立关系,并选择最小的为关注点,每一个建立关系都有两个保持关系,STA会选择最大的为关注点,最大关注点保持关系不一定对应于最小关注点的建立关系。

建立保持检查

默认的STA将执行以下的建立与保持关系检查。

  • 建立检查

    • TDatapath(max) < TCLK(t=Period) - TSetup
  • 保持检查

    • TDatapath(min) > TCLK(t=0) + THold

对于其他情况下,可能需要多个周期或者为了让终端接收到稳定的数据,需要多个时钟周期才能将数据稳定。

用法

set_multicycle_path <path_multiplier> [-setup|-hold] [-start|-end] [-from <startpoints>] [-to <endpoints>] [-through <pins|cells|nets>]

保持关系在大多数情况下跟着建立关系走,且有下面的公式,默认情况下 setup path multiplier = 1,hold path multiplier = 0
h o l d _ c y c l e s = < s e t u p p a t h m u l t i p l i e r > − 1 − < h o l d p a t h m u l t i p l i e r > = 1 − 1 − 0 = 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值