2013-07-03 25 views
1

在FPGA编程中,在XDC(或UCF)文件中使用create_clock命令有什么意义?假设我有一个时钟端口CLK,它分配给XDC(或UCF)文件中的物理引脚(这是我的时钟)。为什么我不能继续在顶层HDL中使用这个CLK引脚?为什么我需要补充的东西是这样的:FPGA设计中“create_clock”命令的要点是什么?

create_clock -name sys_clk_pin -period "XXX" [get_ports "CLK"] 

此外,假设我有一个主时钟“CLK”和我在HDL生成一些其它时钟。对于XDC中的所有小时钟,我是否还必须使用“create_clock”?

我不明白这个“create_clock”的全部内容。任何帮助或方向非常感谢。

感谢

回答

8

设计的限制,顾名思义,是为了定义你的设计,不能从HDL描述捕获的附加约束使用。

让我们以create_clock命令为例。你在你的HDL描述中指定了时钟管脚,为什么不够?原因是时钟信号不是通常的信号 - 它被同步逻辑(触发器)用作参考信号。

我想你对“传播延迟”(通过逻辑门)概念很熟悉。你要确保所有在一个触发器处发出并在另一个处被采样的信号能够在单个时钟周期内传播。现在,您可以在合成后立即知道总传播延迟,因为FPGA中的每个逻辑门都有相关的传播延迟(只需将这些延迟相加)。但是,您的分析工具如何知道什么是最大允许传播延迟?你不用HDL指定这些约束,对吧?这是使用create_clock命令指定的频率将被使用的情况之一 - 将被转换为句点,如果设计中的任何组合路径比时钟周期花费更长的时间传播,则分析工具会警告您。

以上示例描述了采用“设计约束”的静态时序分析(STA)工具执行的操作之一。

另一种广泛使用设计约束的工具是时钟域交叉(CDC)工具。这些工具在包含多个时钟的设计中使用。 CDC概念被精彩地描述here

如果您需要一个时钟并从中生成另一个时钟(例如时钟分频器),您希望使CDC工具意识到这一点,因为这些时钟相关的事实非常重要。通知CDC工具时钟相关的方法是使用create_generated_clock约束条件。

注意:上面的例子是基本的,并不全面。

+0

非常感谢!很好的解释。 – Arash