本文參考自高亞軍老師的《AMD FPGA設(shè)計(jì)優(yōu)化寶典》
首先哪些因此會(huì)導(dǎo)致時(shí)鐘skew過(guò)大呢?
不合理的時(shí)鐘結(jié)構(gòu)
時(shí)鐘同時(shí)驅(qū)動(dòng)I/O資源和Slice資源
時(shí)鐘跨die
在時(shí)序報(bào)告中,會(huì)顯示出clock path skew,如果時(shí)鐘偏移超過(guò)0.5ns,就需要額外關(guān)注了。
書(shū)中列舉了幾個(gè)優(yōu)化skew的方法:
移除時(shí)鐘路徑上多余的時(shí)鐘buffer,如果出現(xiàn)了級(jí)聯(lián)時(shí)鐘Buffer,勢(shì)必會(huì)導(dǎo)致時(shí)鐘路徑上的延遲增大。
移除時(shí)鐘路徑上的組合邏輯,一旦時(shí)鐘路徑上出現(xiàn)了組合邏輯,就意味著時(shí)鐘布線采用了“常規(guī)布線資源+專用布線資源”的組合形式,從而顯著增大了時(shí)鐘延遲且時(shí)鐘skew無(wú)法預(yù)測(cè)。同時(shí),相比于專用時(shí)鐘布線資源,常規(guī)布線資源對(duì)噪聲更加敏感,這會(huì)使時(shí)鐘質(zhì)量下降。
輸入時(shí)鐘從clock capable的管腳輸入,否則還是會(huì)出現(xiàn)“常規(guī)布線資源+專用布線資源”的組合形式。
如果設(shè)計(jì)中出現(xiàn)并行的MMCM/PLL時(shí),應(yīng)合理設(shè)置CLOCK_DEDICATED_ROUTE的值。
如果BUFGCE和兩個(gè)MMCM位于同列相鄰的時(shí)鐘區(qū)域,那么應(yīng)為約束為SAME_CMT_COLUMN或BACKBONE,同時(shí)將MMCM的位置固定下來(lái):
#FORUltraScale/UltraScale+ set_propertyCLOCK_DEDICATED_ROUTESAME_CMT_COLUMN[get_nets-of[get_pinsBUFG_inst/O]] #FOR7series set_propertyCLOCK_DEDICATED_ROUTEBACKBONE[get_nets-of[get_pinsBUFG_inst/O]] set_propertyLOCMMCM3_ADV_X1Y2[get_cellsMMCM3_ADV_inst_0] set_propertyLOCMMCM3_ADV_X1Y0[get_cellsMMCM3_ADV_inst_1]
![2f916100-e0d5-11ee-a297-92fbcf53809c.png](https://file1.elecfans.com/web2/M00/C4/0F/wKgZomXw_IGAOcGzAAHvUcKtYwc227.png)
如果BUFGCE和兩個(gè)MMCM位于不同列但相鄰的時(shí)鐘區(qū)域,那么應(yīng)該設(shè)為ANY_CMT_COLUMN和FALSE。
#FORUltraScale/UltraScale+ set_propertyCLOCK_DEDICATED_ROUTEANY_CMT_COLUMN[get_nets-of[get_pinsBUFG_inst/O]] #FOR7series set_propertyCLOCK_DEDICATED_ROUTEFALSE[get_nets-of[get_pinsBUFG_inst/O]] set_propertyLOCMMCM3_ADV_X1Y2[get_cellsMMCM3_ADV_inst_0] set_propertyLOCMMCM3_ADV_X1Y0[get_cellsMMCM3_ADV_inst_1]
![2fa77c74-e0d5-11ee-a297-92fbcf53809c.png](https://file1.elecfans.com/web2/M00/C4/0F/wKgZomXw_IGAKckTAAJulG43uv8152.png)
對(duì)于7系列FPGA,避免使用BUFIO/BUFR/BUFH來(lái)驅(qū)動(dòng)分散在不同時(shí)鐘域內(nèi)的邏輯。要評(píng)估設(shè)計(jì)中區(qū)域時(shí)鐘緩沖器負(fù)載的個(gè)數(shù),以保證這些負(fù)載可以被放置在一個(gè)時(shí)鐘區(qū)域內(nèi)。
對(duì)于UltraScale/UltraScale+和Versal的FPGA,避免使用MMCM/PLL對(duì)來(lái)自BUFG_GT的輸出時(shí)鐘執(zhí)行簡(jiǎn)單的分頻,可以使用BUFGCE_DIV、MBUFG這些帶有分頻功能的時(shí)鐘BUFFER來(lái)代替。
對(duì)于UltraScale/UltraScale+和Versal的FPGA,對(duì)關(guān)鍵的同步跨時(shí)鐘域路徑添加CLOCK_DELAY_GROUP約束。什么是同步跨時(shí)鐘域路徑呢,比如MMCM輸出的兩個(gè)同步時(shí)鐘。
對(duì)于UltraScale/UltraScale+的FPGA,修改時(shí)鐘根節(jié)點(diǎn)的位置。Vivado在布局階段會(huì)自動(dòng)給每個(gè)時(shí)鐘分配根節(jié)點(diǎn)的位置,以獲取最佳的時(shí)序性能。通常情況下,時(shí)鐘根節(jié)點(diǎn)位于其驅(qū)動(dòng)負(fù)載的中心位置,如果不是,可以使用USER_CLOCK_ROOT調(diào)整。
避免關(guān)鍵路徑穿越SLR或輸入輸出列。
對(duì)于UltraScale/UltraScale+的FPGA,使用CLOCK_LOW_FANOUT屬性使時(shí)鐘網(wǎng)線驅(qū)動(dòng)的負(fù)載位于同一個(gè)時(shí)鐘區(qū)域內(nèi)。
-
FPGA
+關(guān)注
關(guān)注
1630文章
21800瀏覽量
606272 -
時(shí)鐘緩沖器
+關(guān)注
關(guān)注
2文章
96瀏覽量
50915 -
Vivado
+關(guān)注
關(guān)注
19文章
815瀏覽量
66915
原文標(biāo)題:FPGA中降低時(shí)鐘skew的幾種方法
文章出處:【微信號(hào):傅里葉的貓,微信公眾號(hào):傅里葉的貓】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
FPGA的設(shè)計(jì)中的時(shí)鐘使能電路
![<b class='flag-5'>FPGA</b>的設(shè)計(jì)<b class='flag-5'>中</b>的<b class='flag-5'>時(shí)鐘</b>使能電路](https://file.elecfans.com/web1/M00/CE/B2/o4YBAF-qKimAXTdDAAHiGSBDjNU417.png)
時(shí)鐘使能電路的設(shè)計(jì)
如何減小clock skew?
時(shí)鐘偏差的定義以及它對(duì)現(xiàn)代系統(tǒng)的影響
Skew definitions
Skew Correction Using Delay Li
![<b class='flag-5'>Skew</b> Correction Using Delay Li](https://file1.elecfans.com//web2/M00/A4/CA/wKgZomUMNbWAWfXCAABba2U0drI054.gif)
時(shí)序分析之useful skew的作用分析
![時(shí)序分析之useful <b class='flag-5'>skew</b>的作用分析](https://file.elecfans.com/web1/M00/58/23/o4YBAFtVnP-APp7DAAAU-hNG-QE542.jpg)
同步電路設(shè)計(jì)中CLOCK SKEW的分析說(shuō)明
![同步電路設(shè)計(jì)<b class='flag-5'>中</b>CLOCK <b class='flag-5'>SKEW</b>的分析說(shuō)明](https://file.elecfans.com/web1/M00/DA/C9/pIYBAGAAA0KAXKGHAABdU0zGaFU438.png)
verilog的時(shí)鐘分頻與時(shí)鐘使能
詳解數(shù)字設(shè)計(jì)中的時(shí)鐘與約束
![詳解數(shù)字設(shè)計(jì)<b class='flag-5'>中</b>的<b class='flag-5'>時(shí)鐘</b>與約束](https://file.elecfans.com/web2/M00/8B/6C/pYYBAGPFHyaAUan4AABRLCUKZaQ718.png)
評(píng)論