在 Xilinx CDC 設(shè)計中, 我們一般用到以下幾種時序約束:
set_clock_groups -asynchronous
set_false_path
set_max_delay -datapath_only
set_bus_skew
set_clock_groups -asynchronous
這個命令指定clock之間是異步關(guān)系,時序分析時會完全ignore這些clock之間的path。
值得注意的是,set_clock_groups 相比于其他的 timing exceptions 有更高的優(yōu)先級。如果你還是需要約束或者報告某些CDC path,是不能用 set_clock_groups 的。
set_false_path
這個命令指定相應(yīng)的path在時序分析時可以被ignore。經(jīng)過同步器同步的CDC path一般可以施加set_false_path約束。更general一些,我們認(rèn)為不需要時序約束的path都可以用這個命令。
set_max_delay -datapath_only
set_max_delay可以約束一條path的最大delay。-datapath_only可以指定在分析該path的timing slack時不考慮clock skew。因為異步時鐘是無法知道準(zhǔn)確的clock skew的,所以我們用 set_max_delay 來約束cdc path時一般要加 -datapath_only。Setup time仍然是會被考慮的,所以 required time = max_delay + setup_time。
值得注意的是,當(dāng)我們加了 -datapath_only,該path的hold time檢查會被ignore。另外set_min_delay 是不支持 -datapath_only的。
set_bus_skew
這個命令用來約束多條cdc path之間最大的time difference,這里的bus指的是多條cdc path而不是我們常說的總線。
set_bus_skew應(yīng)用的一個典型例子是異步FIFO中的格雷碼。在異步FIFO的設(shè)計中用到格雷碼,是為了使得跨時鐘域時只有一個bit發(fā)生跳變。但是如果多位格雷碼信號的cdc path之間的skew很大,則可能出現(xiàn)在跨時鐘域時多位bit跳變的情況。比如我們使用格雷碼00->01->11->10,假入bit 0的delay比bit 1的delay大過一個dest clock 時鐘周期,那么在dest clock 端,可能會看到00直接跳變到11。因此我們希望通過set_bus_skew來約束多位格雷碼信號,使其skew小于一個 dest clock period。
審核編輯:湯梓紅
-
Xilinx
+關(guān)注
關(guān)注
71文章
2171瀏覽量
122205 -
CDC
+關(guān)注
關(guān)注
0文章
57瀏覽量
17863 -
時序約束
+關(guān)注
關(guān)注
1文章
115瀏覽量
13462
原文標(biāo)題:Xilinx 跨時鐘域時序約束
文章出處:【微信號:FPGA開發(fā)之路,微信公眾號:FPGA開發(fā)之路】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
FPGA時序約束之衍生時鐘約束和時鐘分組約束
Xilinx FPGA編程技巧之常用時序約束詳解
跨時鐘域的時鐘約束介紹
時序約束之時鐘組約束
調(diào)試FPGA跨時鐘域信號的經(jīng)驗總結(jié)
跨時鐘域信號的幾種同步方法研究
![<b class='flag-5'>跨</b><b class='flag-5'>時鐘</b><b class='flag-5'>域</b>信號的幾種同步方法研究](https://file.elecfans.com/web2/M00/49/5B/pYYBAGKhtEiAM5-vAAAR1iblgpQ540.jpg)
評論