特权同学

Clock Specification—— Derive Clock Uncertainty

0
阅读(4234)

Quartus II Handbook, Volume 3  6-41

获得时钟不确定时间      Derive Clock Uncertainty

使用derive_clock_uncertainty命令应用于交互时钟(inter-clock)、内部时钟(intra-clock)和I/O接口的不确定时间的自 动检测。建立和保持不确定时间都适合于时钟到时钟的传输。Example 6–16展示了derive_clock_uncertainty命令选项。

Example 6–16. derive_clock_uncertainty Command

derive_clock_uncertainty

[-overwrite]

[-dtw]

Quartus II TimeQuest Timing Analyzer自动的添加设计中时钟到 时钟传输的时钟不确定时间。随着set_clock_uncertainty命令已被应用于源和目 的时钟对中的任何时钟不确定时间约束,比起由derive_clock_uncertainty命令约束的时钟不确定 时间具有更高的优先权。例如,如果set_clock_uncertainty命令先指定了源时钟CLKA和目的时钟CLKB之间的时钟网络延时。 那么derive_clock_uncertainty命令次之,由derive_clock_uncertainty命令计算出的由源时钟CLKA到目的时钟CLKB的不确定时间将被忽 略。

你可以使用-overwrite命令覆盖原先的时钟不确定时间分配,后者手动添加remove_clock_uncertainty命令进行移除。

在以下的时钟到时钟传输 类型中,时钟必然能够出现,它们被derive_clock_uncertainty命令自动归类。

■Inter-clock

■Intra-clock

■I/O Interface

 

交互时钟传输    Inter-Clock Transfers

交互时钟传输(Inter-clock transfers)发生在FPGA核和来自内部PLL输出节点或管脚的源与目的时钟的寄存器到寄存器传输。Figure 6–22展示了一个交互时钟传输的例子。

 

 

内部时钟传输    Intra-Clock Transfers

内部时钟传输(Intra-clock transfers)发生在FPGA核和来自内部PLL输出节点或管脚的源与目的时钟的寄存器到寄存器传输。Figure 6–22展示了一个内部时钟传输的例子。

 

I/O接口时钟传输      I/O Interface Clock Transfers

I/O接口时钟传输发生在数据从I/O端口到FPGA核(input)或者从FPGA核到I/O端口(output)时的时钟传输。Figure 6–24展示了一个I/O端口时钟传输的例子。

 

约束I/O总线不确定时间,你必须生成一个虚拟时钟来约束输入和输出管脚(使用以虚拟 时钟作为参考的set_input_delay和set_output_delay命令)。当set_input_delay或者set_output_delay命令以PLL输出作为参考时钟管脚时,虚拟时钟需阻止derive_clock_uncertainty命令应用于交互或者内部 时钟传输在I/O总线时钟传输的确定时 钟。

产生的虚拟时钟应该和驱 动I/O端口的源时钟具有相同的属性。例如,Figure 6–25展示了一个典型的具有时钟说明的输入I/O接口。


Example 6–17展示了用SDC命令来约束Figure 6–25中的I/O接口。

Example 6–17. SDC Commands to Constrain the I/O Interface

# Create the base clock for the clock port

create_clock –period 10 –name clk_in [get_ports clk_in]

# Create a virtual clock with the same properties of the base clock driving

# the source register

create_clock –period 10 –name virt_clk_in

# Create the input delay referencing the virtual clock and not the base

# clock

# DO NOT use set_input_delay –clock clk_in <delay_value>

# [get_ports data_in]

set_input_delay –clock virt_clk_in <delay value> [get_ports data_in]