发布时间 : 星期日 文章FPGA Quartus_II_时钟约束更新完毕开始阅读888a8930f12d2af90242e6b6
# Creates a multiply-by-2 clock
create_generated_clock -source [get_ports clk] -multiply_by 2 [get_registers \\
Quartus II Handbook, Volume 3 6-32 虚拟时钟Virtual Clocks
虚拟时钟是一个在设计中没有真正源或者说与设计没有直接关系的一个时钟。例如,如果一个时钟不是设计中的时钟,而仅仅作为一个外部器件的时钟源,并且外部器件和该设计有输入或者输出的管脚,那么就认为这个时钟是虚拟时钟。
使用create_clock命令创造一个虚拟时钟,对源选项没有指定值。 你可以使用set_input_delay和set_output_delay约束虚拟时钟。
Figure 6–20展示了Quartus II TimeQuest Timing Analyzer若要正确的分析外部寄存器和内部设计逻辑之间的关系,在何处需要设置虚拟时钟的实例。虽然名为virt_clk的晶振没有和Altera器件直接相互作用,但是担当起了外部寄存器的源时钟的角色,所以时钟virt_clk必须申明。
Example 6–6 展示了定义一个周期10ns,名为virt_clk,50%占空比,上升沿在0ns的虚拟时钟的命令。虚拟时钟用于作为输出延时约束的时钟源。
在你产生虚拟时钟之后,你可以执行register-to-register的分析报告(在Altera器件和外部器件的寄存器之间)。
Example 6–6. 虚拟时钟Example 1 #create base clock for the design
create_clock -period 5 [get_ports system_clk] #create the virtual clock for the external register create_clock -period 10 -name virt_clk -waveform { 0 5 } #set the output delay referencing the virtual clock
set_output_delay -clock virt_clk -max 1.5 [get_ports dataout]
Example 6–7 展示了产生一个周期为10ns,占空比为50%,相移90度虚拟时钟的命令。
Example 6–7. Virtual Clock Example 2
create_clock -name virt_clk –period 10 –waveform { 2.5 7.5 }
Quartus II Handbook, Volume 3 6-33 多频时钟 Multi-Frequency Clocks
某些情况下在设计中会有很多个时钟源提供时钟信号。增加的时钟也许扮演一个低频率低功耗时钟的角色。在分析这种设计时,create_clock命令提供了–add选项让你添加多个时钟节点。
Example 6–8展示了时钟周期为10ns的节点clk,然后对同一个节点添加时钟
周期为15ns的时钟。Quartus II TimeQuest Timing Analyzer在执行时序分析时两个时钟都用到了。
Example 6–8. Multi-Frequency Example
create_clock –period 10 –name clock_primary –waveform { 0 5 } [get_ports clk] create_clock –period 15 –name clock_secondary –waveform { 0 7.5 } [get_ports clk] -add
Quartus II Handbook, Volume 3 6-34 自动时钟检测 Automatic Clock Detection
想要为你的设计中所有的时钟节点自动添加时钟约束,那么就使用derive_clocks命令。这个命令从管脚或者寄存器生成时钟以确保设计中的每个寄存器都有时钟。
Example 6–9 展示了derive_clocks命令选项。 Example 6–9. derive_clocks Command derive_clocks
[-period
Table 6–8 describes the options for the derive_clocks command.
选项 -period
derive_clocks命令相当于使用create_clock命令为每个寄存器或者管脚产生时钟。
Quartus II Handbook, Volume 3 6-35 锁相环时钟 Derive PLL Clocks
PLLs(锁相环)在Altera器件中被用于时钟管理和综合。你可以定制基于你设计需要的PLL输出时钟约束。因为所有的时钟节点应该有一个共同的时钟基准,故所有的PLL输出应该有一个关联时钟。
你可以使用create_generated_clock命令手动添加一个作为PLL输出的基准时钟,或者你也可以使用derive_pll_clocks命令自动搜寻时序网表并通过设置指定PLL输出来产生时钟。
使用derive_pll_clocks命令为PLL输出自动产生时钟的实例如下: derive_pll_clocks [-use_tan_name] Table 6–9. derive_pll_clocks Command Options
选项 -use_tan_name 描述 缺省下,时钟名为输出时钟名字。这个选项使用的网络名字类似于在Quartus II Classic Timing Analyzer中使用的。 derive_pll_clocks命令调用create_generated_clock命令以产生PLL输出的生成时钟。
create_generated_clock命令的source是PLL的输入时钟。derive_pll_clocks命令的前后已固定,你必须手动为PLL生成一个输入时钟节点。如果PLL的输入时钟节点未被定义好,报告中不会出现PLL输出的时钟。取而代之的,当时序网表更新后,Quartus II TimeQuest Timing Analyzer发出一个类似于Figure 6–10的警告信息。
Example 6–10. Warning Message
Warning: The master clock for this clock assignment could not be derived. Clock:
你可以把derive_pll_clocks命令添加到你的SDC文件中,以使得derive_pll_clocks命令可以自动检测PLL的任何变化。derive_pll_clocks在你的SDC文件中,每次读取该文件,PLL输出时钟脚的create_generated_clock命令就将生成。如果在derive_pll_clock命令后使用write_sdc命令,新的SDC文件包含了独