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