摘要:本文介紹了一種適用于高宏數(shù),、難時(shí)序設(shè)計(jì)的快速平面布局方法,。微捷碼 Talus 可基于邏輯組產(chǎn)生所有宏和標(biāo)準(zhǔn)單元的快速布局。我們可通過(guò)利用這種布局信息來(lái)突出并劃分適合的“宏組”,,對(duì)于高宏數(shù)設(shè)計(jì)來(lái)說(shuō),,這種方法要較一般的分組方法更快速更合理。對(duì)于時(shí)序關(guān)鍵設(shè)計(jì),,我們可使用積極的“宏布局”方法來(lái)顯示關(guān)鍵邏輯組,,然后再通過(guò)增量(incremental)的“宏布局”來(lái)調(diào)整布局形狀(無(wú)宏或其它邏輯組阻塞的前提下將關(guān)鍵邏輯聚集在一起),;這種方法可為我們常規(guī)設(shè)計(jì)帶好更好時(shí)序(包括 WNS/TNS)和更好布線結(jié)果(總線長(zhǎng))。
關(guān)鍵詞:平面布局;宏(macro cell);宏布局;邏輯組;粗布局
1. 介紹
一般來(lái)說(shuō),,邏輯塊級(jí)設(shè)計(jì)平面布局的主要工作就是宏布局,。傳統(tǒng)上,我們初始宏布局可以之前平面布局模式為基礎(chǔ),;布局時(shí)我們應(yīng)考慮到 IO 連接,,需要先了解宏與 IO 間邏輯關(guān)系,然后再將宏設(shè)置于相關(guān) IO 的旁邊,;我們傾向于將宏設(shè)置于邊界周圍,;我們想要將名稱模式相似的宏設(shè)置在一起;我們會(huì)先運(yùn)行布局(fix_cell)功能,,然后再基于關(guān)鍵時(shí)序路徑或擁塞來(lái)調(diào)整宏布局,,而且我們還可以通過(guò)顯示往返宏的飛線來(lái)觀察宏和 STD(標(biāo)準(zhǔn))單元的布局是否合理。
對(duì)于傳統(tǒng)平面布局方法,,我們可能要花很長(zhǎng)時(shí)間來(lái)了解我們的設(shè)計(jì),,可能要與前端設(shè)計(jì)師進(jìn)行探討,可能要通過(guò)多次物理布局迭代來(lái)完成時(shí)序收斂,。對(duì)于宏數(shù)量巨大的設(shè)計(jì)來(lái)說(shuō),,這可是項(xiàng)非常恐怖的工作?,F(xiàn)在我們有了一種基于邏輯組的新平面布局方法,,它可更快速有效地完成平面布局工作。這個(gè)流程共分為 3 個(gè)步驟:
1) 同時(shí)進(jìn)行宏和 STD 單元布局(粗布局,,“run place cluster”),;
2) 劃分邏輯組(針對(duì)宏和 STD 單元同時(shí)進(jìn)行);
3) 增量布局,,調(diào)整邏輯組形狀和位置,。
2. 粗布局(Coarse placement)
我們可將整個(gè)布局工作(fix_cell)分為 2 個(gè)步驟:
1) 粗布局:執(zhí)行設(shè)計(jì)的初始布局;
2) 基于粗布局的增量?jī)?yōu)化,。
步驟 1)是取得好布局結(jié)果的關(guān)鍵點(diǎn),,我們的一切討論都將圍繞“粗布局”展開(kāi)。
在 Talus 中,,有兩個(gè)不同“粗布局”命令——“run place cluster”和“run place global”,,這兩個(gè)命令可基于邏輯組(群)進(jìn)行粗布局。“run place cluster”可同時(shí)完成宏和 STD 單元的布局,,而“run place global”則會(huì)在考慮擁塞情況的前提下進(jìn)行 STD 單元布局,。就我們所知,“fix_cell”一般是使用“place global”來(lái)完成粗布局。根據(jù)我們的測(cè)試,,若宏的
位置相同,,那么“place global”和“place cluster”布局結(jié)果也將十分接近,因此我們可基于“place cluster”結(jié)果來(lái)預(yù)測(cè)“fix_cell”粗布局結(jié)果,。
下圖顯示了設(shè)計(jì)案例 D1 的“place cluster”結(jié)果(圖 1):
我們推薦的完整命令為:“run place cluster $m –effort high –macro_style overlapping”,。由于允許宏重疊,因此我們可更輕松地劃分宏組,;若未加入選項(xiàng)“-ignore_io”,,那么系統(tǒng)會(huì)默認(rèn)為考慮 IO 連接;D1 運(yùn)行時(shí)間為 5~10 分鐘(60 萬(wàn)個(gè)單元級(jí)電路,,“place global”所需時(shí)間約為它的 2~4 倍),。
粗布局的最重要考量點(diǎn)不是時(shí)序和擁塞,而是線長(zhǎng)(圖 2),。
對(duì)于左邊布局模式,,它是先分組為 (A, B, C, D)和(E, F, G),然后再進(jìn)行布局,;對(duì)于右邊布局模式(基于布局的線長(zhǎng)),,布局器會(huì)將相互間連接多的單元設(shè)置在一起((A, B, C, E)和(D, F, G)),這樣所得總線長(zhǎng)最短,。我們不難看出右邊布局模式中橫跨這兩組的飛線要少于左邊布局模式,,這種模式用于解決擁塞問(wèn)題也很不錯(cuò)。因此我們應(yīng)像布局器一樣劃分邏輯組以取得可預(yù)測(cè)的布局結(jié)果,。
3. 劃分邏輯組
劃分邏輯組原理有:
1) 同時(shí)對(duì)宏以及與其連接的邏輯進(jìn)行分組,。就我們所知,一個(gè)宏可能有許多輸入/輸出(I/O)引腳,,與其所連接的邏輯間交流也很頻繁,,宏的位置對(duì)邏輯的布局有很大影響,因此我們應(yīng)將宏和邏輯分在一組里,,同時(shí)不應(yīng)有直接連接宏的飛線橫跨不同的邏輯組
2) 跨不同組的飛線應(yīng)盡可能少,。換句話來(lái)說(shuō),,如果你看到許多跨兩個(gè)組的飛線,,那么這兩個(gè)組應(yīng)分在一組里。
如圖 3 所示,,多數(shù)飛線是位于“暗綠色”組旁邊,。
對(duì)于那些已在 RTL 中進(jìn)行了很好層次化劃分的簡(jiǎn)單設(shè)計(jì),我們可利用 Talus 層次瀏覽器來(lái)劃分邏輯組,。
以 D1 為例,,層次命名模式為“AAA/BBB/CCC_1/…”。我們可輕松地將 D1 分為 3 個(gè)邏輯組,然后再進(jìn)行宏布局,。具體實(shí)現(xiàn)過(guò)程如下(圖 4):
我們可進(jìn)行更深層的層次樹(shù)(hierarchy tree)合并以取得更詳細(xì)的組劃分(圖 5):
對(duì)于一些名稱模式不如此友好的設(shè)計(jì),,我們不能從層次瀏覽器中獲得清晰的組信息。那么我們應(yīng)采用下列額外選項(xiàng)來(lái)改善我們的“粗布局”:“run place cluster $m –effort high –macro_style overlapping –max_util 1”,。
max_util 默認(rèn)值為 0.6,。由于 max_util 值越低,分散于可用區(qū)域上組群就越分散,;因此我們將“max_util”值設(shè)為“1”,,如此一來(lái)這個(gè)組群將更為集中,邏輯組的劃分也更容易得多,。
以另一項(xiàng)設(shè)計(jì) D2 為例,。
圖 6 顯示了“max_util”= 0.6(默認(rèn)值)的結(jié)果。我們不難發(fā)現(xiàn)它將所有 STD 單元散布于整個(gè)芯片上,。
當(dāng)我們?cè)O(shè)置 max_util = 1(圖 7)時(shí),,這個(gè)組群的布局將更為集中。芯片中有許多空白區(qū),,布局器可更靈活地完成這個(gè)組群的布局,。同時(shí),我們不難看出這個(gè)“黃色”組和“粉色”組的形狀比之前好多了,。不過(guò),,我們發(fā)現(xiàn)“綠色”組和“紅色”組仍被一些宏給分隔開(kāi)。我們應(yīng)使用更積極方法來(lái)解決這個(gè)問(wèn)題:我們可將這些宏堆棧在一起并固定,,然后再進(jìn)行“run place cluster“(它不會(huì)觸及已固定單元)(圖 8),。
現(xiàn)在“綠色”組和“紅色”組形狀看起來(lái)好多了,這證明了它們是真正的邏輯組,,應(yīng)被設(shè)置在一起,。
4. 調(diào)整邏輯組形狀和位置
當(dāng)我們有了清楚的邏輯組劃分時(shí),我們可先將宏設(shè)置于“粗布局”初始位置的旁邊,;然后再固定那些宏并運(yùn)行“place cluster”,。布局器將只進(jìn)行這一次的 STD 單元布局。根據(jù)布局結(jié)果,,我們將嘗試通過(guò)更改宏位置來(lái)調(diào)整邏輯組形狀和位置,,特別是對(duì)于時(shí)序關(guān)鍵邏輯組來(lái)說(shuō)更是如此。判斷好的邏輯組形狀的標(biāo)準(zhǔn)有:
1) 類似“餡餅 (pie)”的布局,;
2) 沒(méi)有其它邏輯組 STD 單元邏輯侵入餡餅型布局中,;
3) 在餡餅型布局旁邊沒(méi)有大型宏。
“時(shí)序關(guān)鍵組”是指有大量時(shí)序違規(guī)端點(diǎn)(觸發(fā)器)占絕大部分總時(shí)序違規(guī)的組,,而不是指有幾個(gè)時(shí)序違規(guī)端點(diǎn)且可能具有最差負(fù)余量(worst negative slack)的組,。一般來(lái)說(shuō),,這些路徑的起點(diǎn)也在這組中;它們有很深的邏輯層,,且這個(gè)起點(diǎn)還可能有高扇出終點(diǎn)(FFS),。據(jù)我們的組劃分原理,要想最大程度降低跨組的飛線數(shù)量,,這些起點(diǎn)和終點(diǎn)也應(yīng)分在一組里,。然后我們應(yīng)將這組布局為類似“餡餅”的形狀,這樣才可使得旁邊邏輯單元位置更緊湊,,還可最大程度地降低路徑延時(shí)(插入的緩沖區(qū)越少,,占用面積也就越小),。
以另一項(xiàng)設(shè)計(jì) D3 為例(圖 9),。
“暗綠色”組是時(shí)序關(guān)鍵組,在左邊平面布局圖中被布局為“倒 T 字型”形狀,。在右邊平面布局圖中,,我們調(diào)整宏布局將這個(gè)組布局調(diào)整為“餡餅型”形狀,這樣的時(shí)序?qū)?huì)好得多,。
有時(shí)為了清理出些空間以取得好的關(guān)鍵組形狀,,我們可能需要將其它非關(guān)鍵組移出相關(guān)區(qū)域。對(duì)此我們能做的一件事就是調(diào)整宏位置,。當(dāng)你將宏移出時(shí),,與這個(gè)宏相連接的邏輯也將緊隨其后移出。事實(shí)上,,它們是同一組,,因此我們可通過(guò)移動(dòng)宏來(lái)調(diào)整邏輯組的位置和形狀。
以下是一個(gè)先進(jìn)的應(yīng)用例子(圖 10),。
A 組和 B 組緊密連接在一起,,A 組中有個(gè)宏。而我們想要將 B 組從芯片左下角移到芯片右邊,。雖然在 B 組中沒(méi)有宏,,但我們可移動(dòng) A 組中的那個(gè)宏,到時(shí) A 組就會(huì)將 B 組拉到右邊,。有時(shí)我們并不能將所有宏設(shè)置于邊界周圍,,如:有大量宏占用了芯片大量面積,或者邊界引腳密度非常高且邊界附近設(shè)置宏可能導(dǎo)致嚴(yán)重?fù)砣麊?wèn)題,。事實(shí)上,,我們是可將宏散布于整個(gè)芯片上,,當(dāng)然要以一種合理方式:
如圖 11 所示,,我們將 “粉色”組的一些宏放置在組邊界,,從而盡可能地減少橫跨這些宏的飛線,同時(shí)不過(guò)多地影響“粉色”組及其它組的形狀,。你可假設(shè)每個(gè)組都是較低層分區(qū),,而且我們只沿著分區(qū)邊界來(lái)放置宏。
就我們所知,,如果我們將一個(gè)宏設(shè)置在邏輯組中心位置,,那么這組中會(huì)有許多橫跨這個(gè)宏的飛線,如左圖所示,,有垂直的也有水平的,。甚至更糟糕的是,這個(gè)宏將占用“好”位置,,使得這個(gè)邏輯組中 STD 單元的布局不僅不緊湊,,而且還添加了額外的繞障路徑延時(shí)(detour path delay)。當(dāng)我們將這個(gè)宏設(shè)置在組邊界時(shí),,如右圖所示,,由于很少有橫跨不同組的飛線,因此將只在垂直方向會(huì)有橫跨這個(gè)宏的飛線,,水平方向則沒(méi)有,;而且它對(duì) B 組中 STD 單元布局影響更小,;當(dāng)然所付出的代價(jià)就是 B 組的那個(gè)宏會(huì)入侵到 A 組空間中,。因此你應(yīng)先做出選擇,選擇哪個(gè)組有較高優(yōu)先權(quán),。
所有這些調(diào)整試驗(yàn)均可通過(guò)“place cluster”命來(lái)快速輕松地得以應(yīng)用,。你可以先移動(dòng)并固定一些宏(“place cluster”并不觸及已固定單元),然后再運(yùn)行粗布局來(lái)觀察這個(gè)組的形狀和位置是如何變化的,、哪些看起來(lái)像“大陸漂移”,。由于無(wú)需運(yùn)行完整 fix_cell 試驗(yàn),它將節(jié)省大量時(shí)間,。
5. 總結(jié)
通過(guò)“run place cluster”快速實(shí)現(xiàn)的基于邏輯組的宏布局是處理我們常規(guī)平面布局工作的一種快速有效方法,。總線長(zhǎng),、布線擁塞,、面積和時(shí)序(WNS/TNS)這些目標(biāo)與好的宏布局不再存在沖突。
我們可在開(kāi)始時(shí)使用“place cluster”來(lái)進(jìn)行大部分試驗(yàn),,在結(jié)尾時(shí)使用“place global”來(lái)取得更精確布局結(jié)果,。
就我們看來(lái),一個(gè)設(shè)計(jì)就像是一座房子:邏輯組是不同房間(臥室,、廚房,、客廳…),,我們希望這些房間能擁有很好的格局劃分和規(guī)則的形狀;每個(gè)房間都有其單獨(dú)功能,,當(dāng)我們?cè)诳蛷d招待大量客人時(shí),,客人不能太經(jīng)常地走到我們的臥室或廚房(最大程度降低十字切割);宏是房間里的家具,,我們通常應(yīng)將家具靠墻放置,,這樣我們就不會(huì)妨礙我們走動(dòng);我們不應(yīng)將它們放置在靠窗戶位置(高引腳密度),,因?yàn)檫@樣的話陽(yáng)光就被它們給擋住了,。
本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。