TIMING-47
:
同步时钟之间的伪路径、异步时钟组或仅最
大延迟数据路径约束
在
<clock_group>
与
<clock_group>
这两个时钟之间设置了
<message_string>
时序约束
(
请参阅
VivadoIDE 的“
Timing Constraint
”窗口中的约束位置
<message_string>
)
。使用
set_false_path
、
set_clock_groups
或
set_max_delay -datapath_only
屏蔽整个同步时钟域可能导致硬件故障。
描述
在同步时钟域交汇上不应存在
false_path
、
set_clock_group -asynchronous
或
set_max_delay -
datapath_only
约束。如果存在此类约束
,
将无法正确完成路径定时
,
验收时间将不准确
,
并且设计在硬件中可能失败。
解决方案
移除同步时钟之间应用的
false_path
、
set_clock_group -asynchronous
或
set_max_delay -
datapath_only
约束。如果时钟应为异步时钟
,
请添加具有适当同步电路的异步时钟约束
,
用于异步时钟域交汇。要了解哪个时钟域交汇属于同步或异步,
请参阅时钟交互报告。
示例
在以下示例中
,
使用
2
项
MMCM
输出来生成时钟。
BUFGCE_DIV
输出具有可分频时钟
clk1
,
它具有来自
CLKOUT0 的主时钟。CLKOUT1
具有生成时钟
clk2
。如果添加诸如
set_clock_groups -asynchronous -group [get_clocks clk1] -group [get_clocks clk2] 之类的约束
,
那么其中将包含
TIMING-47
警告。
由于
clk1
和
clk2
都来自相同
MMCM
,
因此被视为彼此同步。跨这些域的数据也被视为位于同步
CDC
下。因此
,无需添加 set_clock_groups -asynchronous
。
TIMING-48
:
在锁存器输入上存在“仅最大延迟数据路
径”约束
在锁存器
<pin_name>
的输入上检测到“仅最大延迟数据路径”约束
(
请参阅
Vivado IDE
的“
Timing Constraint
” (时序约束
)
窗口中的约束位置
<position>
)
。此约束通常用于异步时钟域交汇
,
可能触发不现实的锁存器时间借用,
从而影响下游时序路径的
QoR
。
描述
最大延迟约束不应应用于锁存器的输入
,
因为约束会更改路径的要求
,
可能导致不现实的锁存器时间借用
,
与硬件中的行为不符。这将导致的硬件故障。
解决方案
对照硬件行为验证时序约束
,
如果锁存器输入上应用的仅最大延迟数据路径与硬件行为不匹配
,
则将其移除。
TIMING-49
:
来自并行
BUFGCE_DIV
的使能或复位拓扑
结构不安全
如果并行
BUFGCE_DIV
单元的
BUFGCE_DIVIDE
属性均设为大于
1
的值
,
并且这两个单元共同驱动时钟
,
那么为了确保此类时钟路径上的时序安全,
缓冲器
<buffer>
和
<buffer>
必须使用相同使能信号
(
CE
)
和相同清除信号
(
CLR
)
。 清除信号不得连接到电源,
也不得接地。否则
,
硬件中的分频时钟之间可能出现相移。建议使用安全时钟启动复位电路来同时复位这两个 BUFGCE_DIV
缓冲器。
描述
如果时钟拓扑结构包含并行
BUFGCE_DIV
缓冲器
,
并且这些缓冲器的
BUFGCE_DIVIDE>1
,
那么这些时钟拓扑结构必须采用公用的控制信号来防止 BUFGCE_DIV
内部状态中发生相位不明确。此类情况可能导致在不同时钟周期内发生时钟缓冲器复位,
且
BUFGCE_DIV
输出存在未知的时钟关系。此设置在硬件中可能失败。下图显示了电路的正确实现。
解决方案
各并行
BUFGCE_DIV
缓冲器的
CLR
管脚都应绑定到相同信号或者由相同信号驱动。使用安全的时钟启动复位电路在硬件上执行无缝操作。在 Clocking Wizard IP
中可启用该操作。