在時(shí)序分析時(shí),我們常會(huì)碰到的一類(lèi)現(xiàn)象是:關(guān)鍵路徑上的邏輯單元過(guò)于分散,導(dǎo)致布線(xiàn)延遲過(guò)大,從而造成時(shí)序違例。對(duì)此,我們可以通過(guò)相對(duì)位置約束或絕對(duì)位置約束來(lái)限定相關(guān)邏輯的位置關(guān)系。就相對(duì)位置約束而言,即使芯片型號(hào)發(fā)生了改變也依然可以繼承原有約束;而對(duì)于絕對(duì)位置約束,一旦芯片型號(hào)發(fā)生改變就要確認(rèn)是否要調(diào)整相應(yīng)位置。此外,如果時(shí)序違例路徑較多,這種方法的有效性將大大降低。
我們還可以采用手工布局的方式,這對(duì)于時(shí)序違例路徑集中在某一個(gè)模塊或某一個(gè)層次內(nèi)的情形較為適用。使用此方法時(shí)需要注意Pblock的大小。Pblock不能太小,否則會(huì)增加布局布線(xiàn)的壓力;Pblock也不能太大,否則會(huì)浪費(fèi)資源。實(shí)際上,Vivado針對(duì)Pblock的資源利用率也提供了指導(dǎo)值,該指導(dǎo)值跟整個(gè)芯片的資源利用率指導(dǎo)值一致,可通過(guò)命令report_failfast查看。Pblock的形狀也是一個(gè)重要的因素。通常建議為標(biāo)準(zhǔn)的矩形。不規(guī)則的形狀如在矩形框中挖掉一個(gè)小的矩形形成“回”字形狀會(huì)嚴(yán)重危害時(shí)序性能且導(dǎo)致編譯時(shí)間增長(zhǎng)。Pblock的位置也是一個(gè)重要因素。可以先讓工具自動(dòng)布局,在此基礎(chǔ)上觀(guān)察關(guān)鍵模塊的分布情況,然后參考此位置確定Pblock的位置??梢钥吹?,使用Pblock要求工程師有一定的工程經(jīng)驗(yàn),需要考慮的因素也較多。如果Pblock的位置不合理,可能會(huì)出現(xiàn)顧此失彼的情形(Pblock內(nèi)的模塊時(shí)序改善了,而其他模塊的時(shí)序又惡化了)。Pblock的另一弊端是缺乏靈活性。當(dāng)芯片型號(hào)發(fā)生改變時(shí)很有可能重新確定Pblock的大小或位置。
好在Vivado提供了一個(gè)新的約束屬性USER_CLUSTER(要求Vivado版本為2022.2或之后)。該屬性的作用是指導(dǎo)工具在布局時(shí)將指定層次/模塊下的邏輯單元放得更緊湊一些。為便于說(shuō)明,我們看一個(gè)例子。在沒(méi)有使用該屬性時(shí),布局結(jié)果如下圖所示??梢钥吹秸麄€(gè)設(shè)計(jì)的資源利用率并不高,但卻比較分散。
接下來(lái)我們使用屬性約束USER_CLUSTER。該屬性的屬性值為用戶(hù)定義的組名,屬性施加的對(duì)象為get_cells的返回值,也就是用戶(hù)通過(guò)get_cells指定的模塊,如下圖所示。
使用此約束之后,最終的布局結(jié)果如下圖所示??梢钥吹?,相關(guān)資源已經(jīng)非常緊湊了。
相比于手工布局,USER_CLUSTER更為靈活,更為易用。只是需要用戶(hù)確認(rèn)哪些模塊下的邏輯單元需要放置得緊湊些。
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
453文章
50262瀏覽量
421176 -
模塊
+關(guān)注
關(guān)注
7文章
2659瀏覽量
47298 -
時(shí)序分析
+關(guān)注
關(guān)注
2文章
127瀏覽量
22543 -
Vivado
+關(guān)注
關(guān)注
19文章
806瀏覽量
66246
原文標(biāo)題:如何讓同一層次的模塊在布局時(shí)更緊湊一些
文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論