摘要:根據(jù)官方說(shuō)法,嘗試解決post route里面的擁塞問(wèn)題,參考文章在策略中一些參數(shù)細(xì)節(jié)的配置方法。參考文章中的
Vivado strategies:
針對(duì)性能:
Perfornance_ExplorePostRouteFhsopt
Perfornance_WLBlockPlacement
Perfornance_WLBlockPlacementFanoutopt
Perfornance_NetDelay_high
Perfornance_NetDelay_low
Perfornance_Retiming
Perfornance_ExtraTimingOpt
Perfornance_Refineplacement
Perfornance_SpreadSLLs
Perfornance_BalanceSLLs
針對(duì)布線擁塞:
Congestion_ SpreadLogic_high
Congestion_ SpreadLogic_medium
Congestion_ SpreadLogic_low
Congestion_ SpreadLogic_Explore
以下三個(gè)針對(duì)SSI芯片:
Congestion_ SSI_SpreadLogic_high
Congestion_ SSI_SpreadLogic_low
Congestion_ SSI_SpreadLogic_Explore
針對(duì)資源:
Area_Explore
Area_ExploreSequential
Area_ExploreWithRemap
針對(duì)功耗:
Power_DefaultOpt
Power_ExploreArea
針對(duì)運(yùn)行時(shí)間:
Flow_RunPhysOpt
Flow_RunPos tRoutePhysOpt
Flow_Runtimcoptinized
擁塞報(bào)告
第一步:打開(kāi)布局或者布線后的DCP文件
第二步:在菜單下,依次選擇Reports -> Report Design Analysis,彈出如下圖所示對(duì)話框,只選擇圖中的Congestion,即可生成擁塞報(bào)告。
這里我們要格外關(guān)注Level列對(duì)應(yīng)的數(shù)據(jù),該列數(shù)據(jù)表明了擁塞程度。
對(duì)于擁塞程度(Congestion Level),我們有如下判定標(biāo)準(zhǔn):
擁塞程度≥7:設(shè)計(jì)幾乎不太可能收斂,布線極有可能失敗;
擁塞程度≥6:設(shè)計(jì)很難實(shí)現(xiàn)時(shí)序收斂,運(yùn)行時(shí)間會(huì)很長(zhǎng),而且很有可能出現(xiàn)布線失敗;
擁塞程度=5:存在一定難度實(shí)現(xiàn)設(shè)計(jì)收斂;
擁塞程度<5:可認(rèn)為設(shè)計(jì)不存在擁塞問(wèn)題
我們?cè)倏纯床季€后生成的擁塞報(bào)告,如下圖所示。此時(shí),我們要關(guān)注Type這一列。該列表明了擁塞的類(lèi)型。
通常,有三類(lèi)擁塞類(lèi)型:Global、Long和Short。造成這三類(lèi)擁塞的原因是不同的。
Global:擁塞區(qū)域的Combined LUT過(guò)多,或者控制集過(guò)多;
Long:擁塞區(qū)域的BRAM、URAM和DSP過(guò)多,或者跨die路徑過(guò)多;
Short:擁塞區(qū)域的MUXF或Carry Chain過(guò)多;
明確了擁塞類(lèi)型,就可知道造成擁塞的原因,再結(jié)合報(bào)告中顯示的擁塞區(qū)域,進(jìn)而查找到相應(yīng)的模塊,就可以有的放矢,解決擁塞問(wèn)題。但是,在解決擁塞問(wèn)題之前要確保設(shè)計(jì)滿(mǎn)足以下幾點(diǎn):
(1)約束是合理的
(2)Pblock之間沒(méi)有重疊
(3)不存在過(guò)大的Hold違例(WHS < -0.4ns)
測(cè)試
首先看擁塞的等級(jí),可以分別采用Congestion_ SpreadLogic_high、Congestion_ SpreadLogic_medium等不同的策略去解決。
我在跑版本的時(shí)候發(fā)現(xiàn),有的版本時(shí)序還行,但是功能完全不正確,warning比功能正確的版本要多??紤]到可能是策略不同所致,所以進(jìn)行了一些關(guān)于策略測(cè)試,不是很明白策略,只是單純的跑版本進(jìn)行測(cè)試。
具體策略每項(xiàng)的介紹可以看這篇文章:【vivado UG學(xué)習(xí)】Implementation策略學(xué)習(xí)_lu-ming.xyz的博客-CSDN博客_vivado 實(shí)現(xiàn)策略(https://blog.csdn.net/lum250/article/details/119920135)
在有擁塞的時(shí)候,使用congestion_spreadlogic_high策略,但是好像很容易會(huì)造成版本的unlock,這點(diǎn)不是很確定。
以058版本為例,時(shí)序在-0.5的版本是不行的,一般要在-0.5以?xún)?nèi),-0.4的樣子
第一次修改策略,其它不變,只改HigherDelayCost
第二次修改策略,有unlock的問(wèn)題:
opt_design:Default
place_design:AtspeedLogic_high
phys_opt_design:AggressiveExplore
route_design:NoTimingRelaxation
(unenable)phys_opt_design:Explore
第三次修改策略:
opt_design:Default
place_design:AtspeedLogic_high
phys_opt_design:ExploreWithHoldFix
route_design:NoTimingRelaxation
(unenable)phys_opt_design:Explore
第四次修改策略:(無(wú)unlock問(wèn)題,功能沒(méi)太大問(wèn)題)
opt_design:Explore
place_design:AtspeedLogic_high
phys_opt_design:AggressiveExplore
route_design:NoTimingRelaxation
(unenable)phys_opt_design:Explore
058錯(cuò)誤版本,無(wú)unlock問(wèn)題,但是功能有問(wèn)題:(同策略下跑出過(guò)正常版本很奇怪)
opt_design:ExploreArea
place_design:AtspeedLogic_high
phys_opt_design:Explore
route_design:NoTimingRelaxation
(unenable)phys_opt_design:Explore
058正式版本:(無(wú)lock問(wèn)題,功能正確,時(shí)序微差)
opt_design:Default
place_design:AtspeedLogic_high
phys_opt_design:Explore
route_design:NoTimingRelaxation
(unenable)phys_opt_design:Explore
13 critical warning
354 warning
WNS:-0.429
TNS:-4010.661
057版本測(cè)試
057-0606(未通過(guò))
opt_design:Explore
place_design:AtspeedLogic_high
phys_opt_design:Explore
route_design:NoTimingRelaxation
phys_opt_design:Explore
53 critical warnings
273 warnings
WNS:-0.438ns
總結(jié)
根據(jù)測(cè)試,簡(jiǎn)單的判斷下來(lái),在高LUT使用率以及擁塞的版本下,可暫時(shí)使用如下策略,雖然同策略跑出的其他版本在prach測(cè)試時(shí)有點(diǎn)偏差,但是不能夠確定是環(huán)境問(wèn)題還是代碼問(wèn)題:
opt_design:Default
place_design:AtspeedLogic_high
phys_opt_design:Explore
route_design:NoTimingRelaxation
(unenable or ennable)phys_opt_design:Explore
在使用策略的時(shí)候可以先不用更改策略?xún)?nèi)的項(xiàng),用每個(gè)策略的默認(rèn)項(xiàng),待時(shí)序很差或者擁塞依舊不通過(guò)或者功能不正確時(shí),再考慮更改某些項(xiàng)。
目前看下來(lái),當(dāng)LUT使用過(guò)多,并且時(shí)序差的時(shí)候會(huì)有擁塞、unlock以及功能不正確的現(xiàn)象。我在使用congestion_spreadlogic_high策略的時(shí)候,很容易會(huì)有unlock的現(xiàn)象。功能不正確伴隨著的是時(shí)序竟然會(huì)好,這點(diǎn)很奇怪,感覺(jué)是由于策略過(guò)于激進(jìn)優(yōu)化掉了很多東西,造成了更多的warning(DRC警告)。
不過(guò)這三個(gè)問(wèn)題在不改代碼的前提下,可以去通過(guò)更改策略解決。
-
布線
+關(guān)注
關(guān)注
9文章
772瀏覽量
84329 -
擁塞
+關(guān)注
關(guān)注
0文章
12瀏覽量
9452 -
Vivado
+關(guān)注
關(guān)注
19文章
812瀏覽量
66523
原文標(biāo)題:解決Vivado implementation擁塞的策略方法
文章出處:【微信號(hào):Hack電子,微信公眾號(hào):Hack電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論