vivado 时钟组

时钟组

本节讨论时钟组,包括:

•关于时钟组

•时钟类别

•异步时钟组

•专用时钟组

关于时钟组

Vivado IDE默认情况下会对设计中所有时钟之间的路径进行计时,除非通过使用时钟组或错误路径约束以其他方式指定。set_clock_groups命令禁用您标识的时钟组之间的计时分析,而不是在同一组中的时钟。与set_false_path约束不同,计时被忽略在时钟之间的两个方向上。可以多次使用-group选项指定多组时钟。如果没有时钟在一个组中存在于设计中,该组变为空。set_clock_groups只有当至少有两个组有效且不为空时,约束才保持有效。如果只有一组保持有效,并且所有其他组都为空,则set_clock_groups约束无效应用并生成错误消息。

使用原理图查看器或时钟网络报告来可视化时钟的拓扑结构树,并确定哪些时钟不能一起计时。您也可以使用时钟交互报告,用于审查两个时钟之间的现有约束,并确定它们是否共享相同的主时钟——也就是说,它们具有已知的相位关系——或者识别没有公共周期的时钟(不可扩展)。

时钟类别

本节讨论同步、异步和不可扩展的时钟。

同步时钟

当两个时钟的相对相位可预测时,它们是同步的。通常情况是这样的当它们的树源自网表中的同一根时,以及当它们具有公共时期例如,周期比为2的生成时钟及其主时钟是同步的因为它们通过相同的网表资源传播到生成的时钟源点,并且具有2个循环的公共周期。它们可以安全地定时在一起。

异步时钟

当无法确定它们的相对相位时,两个时钟是异步的。例如,两个时钟由板上的独立振荡器生成并进入FPGA通过不同的输入端口没有已知的相位关系。因此,它们必须被视为异步。如果它们是由板上的同一振荡器产生的,这将不是真的。在大多数情况下,主时钟可以被视为异步时钟。当与他们的各自生成的时钟。

无法使用的时钟

当正时引擎无法确定它们的公共周期时,两个时钟无法扩展超过1000个循环。在这种情况下,在正时分析,但正时引擎不能确保这是最悲观的情况。这通常是在具有奇数分数周期比的两个时钟之间的情况。例如考虑两个时钟clk0和clk1,这两个时钟由共享同一主时钟的两个MMCM生成时钟:

•clk0的周期为5.125 ns。

•clk1的周期为6.666 ns。

它们的上升时钟边沿不会在1000个周期内重新排列。正时发动机使用设置路径在两个时钟之间的定时路径上需要0.01ns。即使这两个时钟在它们的时钟树根处存在已知的相位关系,它们的波形不允许安全计时他们之间的分析。与异步时钟一样,松弛计算正常显示,但值不能为值得信赖。由于这个原因,不可扩展的时钟通常被同化为异步时钟。二者都时钟类别必须以与约束和时钟域交叉相同的方式处理电路。

异步时钟组

异步时钟和不可扩展的时钟无法安全计时。之间的定时路径在分析过程中,可以使用set_clock_groups命令忽略它们。异步时钟组示例

•主时钟clk0在输入端口上定义,并到达MMCM,MMCM生成时钟usrclk和itfclk。

•第二个主时钟clk1是在GTP实例的输出上定义的恢复时钟并且到达产生时钟gtclkrx和gtclktx的第二MMCM。

创建异步时钟组

使用-asynchronous选项创建异步组。

set_clock_groups -name async_clk0_clk1 -asynchronous -group {clk0 usrclk
itfclk} \
-group {clk1 gtclkrx gtclktx}

如果无法提前预测生成的时钟的名称,请使用get_clocks-include_generated_clocks以动态检索它们。的-include_generated_clocks选项是SDC扩展。前面的例子也可以是写成:

set_clock_groups -name async_clk0_clk1 -asynchronous \
-group [get_clocks -include_generated_clocks clk0] \
-group [get_clocks -include_generated_clocks clk1]

专用时钟组

一些设计具有几种需要使用不同时钟的操作模式。这个时钟之间的选择通常由诸如BUFFMUX的时钟多路复用器来完成,并且BUFGTRL或LUT。因为这些单元是组合单元,Vivado IDE将所有传入时钟传播到输出使用Vivado IDE可以在时钟树上同时存在多个定时时钟,这便于同时报告所有操作模式,但在硬件。

这种时钟被称为专用时钟。通过使用的选项对其进行约束

set_clock_groups :
-logically_exclusive
-physically_exclusive

独占时钟组示例

MMCM实例生成连接到BUFGMUX实例的clk0和clk1clkmux。clkmux的输出驱动设计时钟树。默认情况下,Vivado IDE会分析clk0和clk1之间的路径,即使这两个时钟共享相同的时钟树,并且不能同时存在。必须输入以下约束才能禁用两个时钟之间的分析

set_clock_groups -name exclusive_clk0_clk1 -physically_exclusive \
-group clk0 -group clk1
以下选项在AMD FPGA的上下文中是等效的:
-logically_exclusive
-physically_exclusive

物理和逻辑标签指的是中的各种信号完整性分析(串扰)模式

AMD FPGA不需要的ASIC技术。

你可能感兴趣的:(fpga开发)