vivado 路径分段

路径分段

与其他XDC约束不同,set_max_delay命令和set_min_delay在-from和-to选项的情况下,命令可以接受无效起始点列表或端点。当指定了无效的起始点时,正时发动机停止正时的传播通过该节点,使该节点成为有效的起点。

在以下示例中,唯一有效的起点是FD1/C:

set_max_delay 5 -from [get_pins FD1/C]

如果约束应用于FD1/Q,则正时引擎停止通过圆弧C的传播->Q,使引脚Q成为有效的起始点:

set_max_delay 5 -from [get_pins FD1/Q]

停止时间传播以创建有效起点的过程称为路径细分。路径分割同时影响最大和最小延迟分析。路径分段也影响通过这些节点(FD1/C和FD1/Q)的任何定时约束。

路径分割后,路径上没有默认的保持要求。假设-尚未指定datapath_only选项,请使用set_min_delay命令设置如有必要,保持路径上的要求。由于存在风险,当路径分段发生时会发出严重警告。如果您将输出FD1/Q作为起始点,以避免将时钟偏移带入帐户,AMD建议使用-datapath_only选项。相反,请参见以下内容示例:

set_max_delay 5 -from [get_pins FD1/C] -datapath_only

同样,当指定了无效的端点时,计时引擎会停止传播以便该节点成为有效端点。在以下示例中,最大延迟是在LUTA/O上指定的,它不是有效的端点:

set_max_delay 5 -from [get_pins LUTA/O]
如下图所示。

为了使LUTA/O成为有效的端点,定时在LUTA/O之后停止传播。因此,所有通过LUTA/O的时序路径对于设置和保持都受到影响。对于开始的路径在REGA/C和LUTA/O上结束时,只考虑启动时钟的插入延迟账户这可能会导致非常大的偏斜。因为路径分割停止了通过定时弧的传播,所以它可以意想不到的后果。所有通过这些节点的定时路径都会受到影响。在以下示例中,在LUTA/O和REGB/D之间设置了最大延迟:

set_max_delay 6 -from [get_pins LUTA/O] -to [get_pins REGB/D]
如下图所示。

由于引脚LUTA/O不是有效的起始点,因此会出现路径分割和定时弧来自LUTA/I*和LUTA/O的数据被破坏。即使设置了set_max_delay约束仅在LUTA/O和REGB/D之间,其他路径,如REGA/C和之间的路径REGC/D也被破坏。

路径分割和时序异常

路径分割可能导致时间异常之间的优先级为事实并非如此。set_max_delay约束是否被set_clock_groups约束。考虑以下两种情况。

场景1

set_max_delay <ns> -datapath_only -from <instance> -to <instance>

在这个场景中,为-from/-to提供了实例名称。set_max_delay约束为总是被set_clock_groups覆盖-异步,因为Vivado总是选择提供实例时的有效起点。

场景2

set_max_delay <ns> -datapath_only -from <pin> -to <pin | instance>

在这种情况下,如果-from提供的引脚名称导致路径分割,那么特定的set_max_delay约束不会被set_clock_groups覆盖-异步。背后的原因是路径分割迫使路径从pin名称不再被认为是由第一个时钟域启动的。因此,这条路径不再受set_clock_groups约束和set_max_delay的覆盖应用约束。

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cckkppll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值