FPGA Quartus - II - 时钟约束

发布时间 : 星期一 文章FPGA Quartus - II - 时钟约束更新完毕开始阅读

立的PLL输出时钟管脚的create_generated_clock命令,并且不是derive_pll_clocks命令。任何PLL属性的变化不会自动的反应到新的SDC文件中。你必须通过写入derive_pll_clocks命令手动更新新的SDC文件中的create_generated_clock命令(反映PLL的变化)。

通过添加适当的multicycle约束计算不确定因素,derive_pll_clocks将约束设计中的任何LVDS传送和LVDS接收。

例如,Figure 6–21展示了一个寄存器到寄存器路径的单一PLL设计。

使用derive_pll_clocks命令自动约束PLL。当Figure 6–21的设计中使用到这个命令,将产生Example 6–11的信息。

Example 6–11. derive_pll_clocks Generated Messages Info:

Info: Deriving PLL Clocks:

Info: create_generated_clock -source pll_inst|altpll_component|pll|inclk[0] -divide_by 2 -name

pll_inst|altpll_component|pll|CLK[0] pll_inst|altpll_component|pll|clk[0] Info:

名为pll_inst|altpll_component|pll|inclk[0]的节点用于作为PLL输入时钟脚的源参考选项。此外,PLL输出时钟的名字是PLL输出时钟节点pll_inst|altpll_component|pll|clk[0]。

如果PLL处于时钟替换模式,PLL输出时钟将产生多时钟;一个是主要输入时钟(例如inclk[0]),另一个是次要输入时钟(例如inclk[1])。假若那样的话,你可以使用set_cock_groups命令加上-exclusive选项以削减主要和次要输出时钟。在你可以为这个设计产生任何报告之前,你必须为PLL输入时钟管脚产生一

个基本时钟,使用类似下面的命令:

create_clock -period 5 [get_ports pll_inclk]

你不用在PLL的输入时钟管脚pll_inst|altpll_component|pll|inclk[0]上产生基本时钟。PLL输入时钟管脚产生所有的扇出时钟管脚,包括PLL输入时钟管脚。

Quartus II Handbook, Volume 3 6-37 缺省时钟约束 Default Clock Constraints

为了提供彻底的时钟分析,如果你的设计中没有基本时钟约束,Quartus II TimeQuest Timing Analyzer在缺省时会自动的检测所有未被约束的时钟节点。Quartus II TimeQuest Timing Analyzer使用以下命令产生1GHz的时钟约束你的未约束时钟:

derive_clocks -period 1

独立的时钟约束(例如,create_clock, create_generated_clock)可能会出现在设计中。这将导致不切实际的分析设计中的时序要求。derive_clocks的使用应该避免出现在最终的时序里。

缺省时钟约束仅仅被用于Quartus II TimeQuest Timing Analyzer检测所有没有时钟连接的同步单元。例如,如果一个设计约束两个时钟,而仅有一个时钟已经约束了,这将不会使用缺省时钟约束。然而,如果两个时钟都未被约束,那么将会启动缺省时钟约束。

Quartus II Handbook, Volume 3 6-37 Clock Groups

设计中存在着许多时钟,然而,并非所有时钟都相互关联,况且某些时钟间相互关联是没有必要的。异步时钟就是不相关时钟(异步时钟有不同的理想时钟源)。专用时钟也不一定在同一时刻激活(例如,多元时钟)。必须向Quartus II TimeQuest Timing Analyzer指明相互排斥的时钟,从而阻止其把这些时钟作为关联时钟进行分析。

使用set_clock_groups命令指明相互排斥或者异步的时钟。Example 6–12 展示了set_clock_groups命令及选项。

Example 6–12. set_clock_groups Command set_clock_groups

[-asynchronous | -exclusive] -group [-group ] [-group ] ...

Table 6–10 describes the options for the set_clock_groups command.

选项 -asynchronous 描述 异步时钟——两个时钟没有相位关系并且不在同一时刻激活 -exclusive 专有时钟——两个时钟中仅有一个在特定时间激活。2选1时钟就是专有时钟的一个实例 -group

Example 6–13展示了set_clock_groups命令和等价命令set_false_path的用法。 Example 6–13. set_clock_groups Example

# Clocks A and C are never active when clocks B and D are active set_clock_groups -exclusive -group {A C} -group {B D} # Equivalent specification using false paths

set_false_path -from [get_clocks A] -to [get_clocks B] set_false_path -from [get_clocks A] -to [get_clocks D] set_false_path -from [get_clocks C] -to [get_clocks B] set_false_path -from [get_clocks C] -to [get_clocks D] set_false_path -from [get_clocks B] -to [get_clocks A] set_false_path -from [get_clocks B] -to [get_clocks C] set_false_path -from [get_clocks D] -to [get_clocks A]

指定相互独有的时钟名。用于指定时钟名 set_false_path -from [get_clocks D] -to [get_clocks C]

Quartus II Handbook, Volume 3 6-39 影响时钟特性 Clock Effect Characteristics

create_clock和create_generated_clock命令产生不涉及板级影响的理想时钟。这个章节描述如何计算影响时钟特性的时钟延时(clock latency)和时钟不确定时间(clock uncertainty)。

时钟延时

Clock Latency

时钟延时(clock latency)由两部分组成:源(source)和网络(network)。源延时(Source latency),是指从源时钟到目的时钟端的传播延时(例如,一个时钟端口),而网络延时(network latency)是指从一个定义点时钟到一个寄存器时钟端口的传播延时。寄存器时钟节点总的延时是时钟路径上源和网络延时之和。

set_clock_latency命令仅仅支持源延时。当使用该命令时,-source选项需指定。 使用set_clock_latency命令指定设计中的任意时钟端口的源延时Example 6–14展示了set_clock_latency命令选项。

Example 6–14. set_clock_latency Command set_clock_latency -source

[-clock ] [-rise | -fall] [-late | -early]

Quartus II TimeQuest Timing Analyzer自动计算网络延时;因此,set_clock_latency命令仅仅指定源延时。

联系合同范文客服:xxxxx#qq.com(#替换为@)