原创 Clock Specification—— Derive Clock Uncertainty

2009-2-17 17:15 3021 6 6 分类: FPGA/CPLD

Quartus II Handbook, Volume 3  6-41<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


获得时钟不确定时间      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展示了一个交互时钟传输的例子。


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


 0440b678-4dc5-4077-b175-3b64e480bca7.jpg


内部时钟传输    Intra-Clock Transfers


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



f2ff8602-8c4a-4d08-9085-e59cc6c8a1db.jpg 


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


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



2a7acca7-8781-42d3-8df3-02da41bcf66c.jpg 


约束I/O总线不确定时间,你必须生成一个虚拟时钟来约束输入和输出管脚(使用以虚拟时钟作为参考的set_input_delayset_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]

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条