2013-07-03 26 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