在 Xilinx CDC 設(shè)計(jì)中, 我們一般用到以下幾種時(shí)序約束:
set_clock_groups -asynchronous
set_false_path
set_max_delay -datapath_only
set_bus_skew
set_clock_groups -asynchronous
這個(gè)命令指定clock之間是異步關(guān)系,時(shí)序分析時(shí)會(huì)完全ignore這些clock之間的path。
值得注意的是,set_clock_groups 相比于其他的 timing exceptions 有更高的優(yōu)先級(jí)。如果你還是需要約束或者報(bào)告某些CDC path,是不能用 set_clock_groups 的。
set_false_path
這個(gè)命令指定相應(yīng)的path在時(shí)序分析時(shí)可以被ignore。經(jīng)過(guò)同步器同步的CDC path一般可以施加set_false_path約束。更general一些,我們認(rèn)為不需要時(shí)序約束的path都可以用這個(gè)命令。
set_max_delay -datapath_only
set_max_delay可以約束一條path的最大delay。-datapath_only可以指定在分析該path的timing slack時(shí)不考慮clock skew。因?yàn)楫惒?a href="http://www.wenjunhu.com/tags/時(shí)鐘/" target="_blank">時(shí)鐘是無(wú)法知道準(zhǔn)確的clock skew的,所以我們用 set_max_delay 來(lái)約束cdc path時(shí)一般要加 -datapath_only。Setup time仍然是會(huì)被考慮的,所以 required time = max_delay + setup_time。
值得注意的是,當(dāng)我們加了 -datapath_only,該path的hold time檢查會(huì)被ignore。另外set_min_delay 是不支持 -datapath_only的。
set_bus_skew
這個(gè)命令用來(lái)約束多條cdc path之間最大的time difference,這里的bus指的是多條cdc path而不是我們常說(shuō)的總線。
set_bus_skew應(yīng)用的一個(gè)典型例子是異步FIFO中的格雷碼。在異步FIFO的設(shè)計(jì)中用到格雷碼,是為了使得跨時(shí)鐘域時(shí)只有一個(gè)bit發(fā)生跳變。但是如果多位格雷碼信號(hào)的cdc path之間的skew很大,則可能出現(xiàn)在跨時(shí)鐘域時(shí)多位bit跳變的情況。比如我們使用格雷碼00->01->11->10,假入bit 0的delay比bit 1的delay大過(guò)一個(gè)dest clock 時(shí)鐘周期,那么在dest clock 端,可能會(huì)看到00直接跳變到11。因此我們希望通過(guò)set_bus_skew來(lái)約束多位格雷碼信號(hào),使其skew小于一個(gè) dest clock period。
審核編輯:湯梓紅
-
Xilinx
+關(guān)注
關(guān)注
71文章
2169瀏覽量
121799 -
CDC
+關(guān)注
關(guān)注
0文章
57瀏覽量
17830 -
時(shí)序約束
+關(guān)注
關(guān)注
1文章
115瀏覽量
13433
原文標(biāo)題:Xilinx 跨時(shí)鐘域時(shí)序約束
文章出處:【微信號(hào):FPGA開(kāi)發(fā)之路,微信公眾號(hào):FPGA開(kāi)發(fā)之路】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論