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