對于異步時鐘有四種方法進行約束。本文介紹了每種方法的優(yōu)缺點:
1、set_false_path
這是最原始的方法,在時序分析設計早期比較流行。
這種方法有兩個缺點:
a.兩個方向都需要約束:clock1->clock2 以及 clock2->clock1
b.該路徑?jīng)]有時序要求,因此理論上路徑延遲完全依賴于所使用的工具。而且這兩種路徑可能導向不同的節(jié)點,因為我們沒有辦法規(guī)范它們來滿足任何具體的要求。
2、set_clock_groups
該方法已被引入 SDC 中,與方法 1 相比有以下三個主要優(yōu)點:
a.只需要指定源時鐘與目的時鐘,盡量減少 XDC/SDC 文件的長度
b.與set_false_path方法相同,這里的路徑也沒有時序要求。但是它考慮到了信號完整性方面的問題,而set_false_path方法并沒有
c.在基于 FPGA 設計領(lǐng)域,可以說這是不重要的,因為在設計 FPGA 器件時信號完整性方面已經(jīng)被考慮到了
d.這種方法帶點哲學思辯的方法論
e.當我們使用set_false_path方法時,只是指定了這條路徑是錯誤的,但是并沒有明確的解釋路徑錯誤的原因
f.拿異步時鐘來舉例,在實際情況下,路徑并不是錯誤,所以時鐘信號會通過這條路徑,set_false_path則可作為一種機制來告知工具,時鐘信號不約束走這條路徑。
在set_clock_groups這種方法中,我們指定了準確的原因,即為什么每個時鐘信號組是不同的。實際上它們不能進行時序約束的原因完全是由你的意圖決定的。因此這也可以作為一個注意事項,可以更加容易理解具體約束設計的原因。
通常情況下方法 2 要優(yōu)于方法 1,主要是因為以上的 b 和 c 因素,其次 a 因素也是比較重要的。
3、set_multicycle_path
大約在21世紀中期的時候,設計者開始從set_false_path方法轉(zhuǎn)向set_multicycle_path方法。方法 1 和方法 2 并沒有約束一個路徑 —— 每條路徑的延遲是任意的。這種方法提供了跨越某個節(jié)點的路徑的延遲上限規(guī)定。
4、set_max_delay
這種方法的效果與方法 3 相同。Vivado工具里面有‘-datapath_only’選項,這讓設計者操作起來更簡單,不用擔心時鐘偏移情況的發(fā)生。同時與set_multicycle_path方法相比,set_max_delay方法更能表現(xiàn)出設計者的意圖。
如果你想選一種方法,我建議的順序是:4>2>3>1,有時我更傾向于選擇方法 2。
舉個例子,如果我正在進行一個局部的模塊設計,這個模塊還可以用于其他不同的應用,而且我不清楚這個部分會在什么外部設備或者器件上實現(xiàn)。這種情況下我也不確定max_delay值具體是多少合適,那么處于安全起見我會選擇方法2而不是方法4。
如果使用 Xilinx 提供的工具,我們可以借助 Vivado 來設置時鐘周期,在這個例子中我會根據(jù)時鐘周期來設置具體的延遲,因此我可能更希望采用方法 4。
然而,根據(jù)個人的選擇/需求/熟悉程度,不同的人可能有不同的選擇。
關(guān)于作者:Sanjay Churiwala
賽靈思公司工具與方法學應用專家,1993年畢業(yè)于印度理工學院電子工程專業(yè),一直從事 VLSI 和 EDA 相關(guān)領(lǐng)域的工作。2011年加入賽靈思公司,專攻庫特性描述與建模,HDL,仿真與綜合,靜態(tài)時序分析以及跨時鐘域(CDC)與同步相關(guān)內(nèi)容。
-
賽靈思
+關(guān)注
關(guān)注
32文章
1794瀏覽量
131126 -
約束
+關(guān)注
關(guān)注
0文章
82瀏覽量
12708 -
異步時鐘
+關(guān)注
關(guān)注
0文章
17瀏覽量
9399
發(fā)布評論請先 登錄
相關(guān)推薦
評論