Intel® Quartus® Prime Standard Edition用户指南: Timing Analyzer

ID 683068
日期 9/24/2018
Public
文档目录

2.3.1.4. Set Clock Groups (set_clock_groups)

Set Clock Groups (set_clock_groups)约束使您能够指定设计中的哪些时钟是不相关的。默认情况下,Timing Analyzer假设所有具有公共基本(common base)或父时钟(parent clock)的时钟都相关,并且这些时钟域之间的所有传输都适用于时序分析。您可以通过切割时钟组(cutting clock groups)来排除时序分析中特定时钟域之间的传输。

相反,没有公共父时钟或基本时钟的时钟总是不相关的,但是时序分析包括这些时钟之间的传输,除非这些时钟在不同的时钟组中(或者如果它们的所有路径都被假路径约束切断)。

您可以定义时钟信号组,然后定义每个组之间的关系。您可以定义时钟信号包括在每个Group (-group)中,然后指定组是否是Logically exclusive (-logically_exclusive),Physically exclusive (-physically_exclusive或者Asynchronous ( -asynchronous)。

set_clock_groups -asynchronous -group {<clock1>...<clockn>} ... \
    -group {<clocka>...<clockn>}
  • -logically_exclusive—定义逻辑上独占并且同时又不活动的时钟,例如多路复用时钟。
  • -physically_exclusive—定义物理上独占并且同时又不活动的时钟。
  • -asynchronous—定义完全不相关的时钟,这些时钟具有不同的理想时钟源。标志(flag)表示时钟都在切换,但不能同步传递数据。

例如,如果在8ns时钟与10ns时钟之间存在路径,那么即使时钟完全异步,Timing Analyzer也会尝试在这些时钟之间满足2ns设置关系,除非您指定它们是不相关的。

尽管Set Clock Groups对话框只允许两个时钟组,但您也可以在.sdc文件中指定任意数量的-group {<group of clocks>}选项。如果从assignment中省略了不相关的时钟,那么Timing Analyzer会保守地执行操作,并根据与该时钟连接的所有其他域的关系对该时钟进行分析。

Timing Analyzer当前没有明确地对串扰进行分析。相反,时序模型使用额外的保护频带来解决任何潜在的串扰引起的延迟。Timing Analyzer将-asynchronous-exclusive选项视为相同。

在单一assignment中,一个时钟不能在多个组(-group)内;但是可以有多个set_clock_groups assignments。

另一种缩短时钟之间时序的方法是使用set_false_path。要缩短sys_clkdsp_clk之间的时序,可以使用:

set_false_path -from [get_clocks sys_clk] -to [get_clocks dsp_clk]
set_false_path -from [get_clocks dsp_clk] -to [sys_clk]

如果只有几个时钟,这种技术是有效的,但是在大量约束下可能变得无法管理。在具有三个包含多输出的PLL的简单设计中,set_clock_groups命令可以在十行内显示哪些时钟是的相关的,而使用set_false_path命令能够使用多于50行。