vivado 路径分段

2023-12-28 21:43:02

路径分段

与其他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的覆盖应用约束。

文章来源:https://blog.csdn.net/cckkppll/article/details/135277846
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。