1

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

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

另外,假设我有一个主时钟“CLK”和我在 HDL 中生成的其他一些时钟。我是否也必须对 XDC 中的所有次要时钟使用“create_clock”?

我没有得到整个“create_clock”的东西。非常感谢任何帮助或指导。

谢谢

4

1 回答 1

9

顾名思义,设计约束用于定义设计的其他约束,这些约束无法从 HDL 描述中捕获。

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

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

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

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

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

注意:以上示例是基本的,绝不是全面的。

于 2013-07-03T20:21:05.197 回答