面向有挑戰性功能塊的時(shí)序收斂技術(shù)
摘要:
時(shí)序收斂始終是高性能處理器的一個(gè)大問(wèn)題。如測試尺寸、有用偏斜等平常技術(shù)可能不足以解決某些案例中違規行為。本文將探討以前深亞微米項目中所用的一些技術(shù),這些技術(shù)以眾所周知的功能為基礎,但卻不局限于這些功能,包括:預測塊級邊界時(shí)序問(wèn)題、增量布局迭代、時(shí)鐘門(mén)控克隆戰略選擇、采用線(xiàn)路延時(shí)最大程度降低不同時(shí)序角點(diǎn)下延時(shí)差異。.
關(guān)鍵詞索引:時(shí)序收斂、邊界時(shí)序、布局迭代、時(shí)鐘門(mén)控克隆、線(xiàn)路延時(shí)
第I章:介紹
物理設計中,時(shí)序收斂一直是個(gè)問(wèn)題,解決這個(gè)問(wèn)題的方法多式多樣。本文將探討幾種可幫助盡早檢測到可能要在非常晚期設計階段才會(huì )出現的問(wèn)題以及降低正常PR階段TNS(負余量總和)的方法。這些方法以Magma Talus現有功能為基礎,但功能的使用有經(jīng)過(guò)進(jìn)一步擴展或是重新考量。
第II章:繞障I/O密度地圖
隨著(zhù)芯片規模的日益壯大,層次化設計正逐漸成為許多芯片設計的一種常用方法。在層次化設計中,最高層設計師(top level designer)會(huì )將整個(gè)芯片劃分為多個(gè)小塊。每個(gè)小塊作為一個(gè)獨立功能塊,將貫穿整個(gè)物理設計流程,最后再由最高層設計師將這些小塊集成為完整芯片。這樣一來(lái),集成的時(shí)候塊邊界難免會(huì )有時(shí)序和布線(xiàn)問(wèn)題。通常,這些問(wèn)題的修復技術(shù)是要落實(shí)到功能塊上,將由塊設計師(block designers)應用以進(jìn)行修復工作。
在一些案例中,功能塊設計師將發(fā)現很難在布線(xiàn)后晚期階段修復這些邊界問(wèn)題,這會(huì )導致項目進(jìn)度大大延遲。
圖1是一例這種問(wèn)題。在功能塊左上角有個(gè)大型宏,它占用了許多布線(xiàn)層,在其周?chē)鷧^域造成了非常高的擁塞情況。圖中加亮線(xiàn)是貫穿這個(gè)區域的一條路徑,中間插入了幾個(gè)緩沖區。有幾點(diǎn)應多加注意:
1.這條路徑是往下走的,因為在大型宏的北面沒(méi)有足夠空間用于緩沖區、沒(méi)有足夠導軌用于布線(xiàn)。
2.線(xiàn)路中間部分由于高度擁塞布線(xiàn)而呈割階狀態(tài)。
3.很難這個(gè)宏旁邊找個(gè)位置插入新的緩沖區以修復轉換和建立違規。
上述第1點(diǎn)和第2 點(diǎn)是導致最高層時(shí)序差的罪魁禍首,第3點(diǎn)則是導致這個(gè)問(wèn)題難以修復的原因所在。布線(xiàn)后功能塊層中內部狀態(tài)對于時(shí)序和布線(xiàn)來(lái)說(shuō)還是很不錯的;但當最高層設計師開(kāi)始修復這個(gè)時(shí)序問(wèn)題后,插入了許多單元,布線(xiàn)也發(fā)生了很大變化,這些均使得內部時(shí)序和布線(xiàn)變得更為糟糕且難以融合。
原因相當簡(jiǎn)單:沒(méi)有足夠資源可留給最高層設計師來(lái)修復這個(gè)時(shí)序問(wèn)題。但如何才能讓塊設計師知道他需要在哪里保留資源和保留多少資源呢?功能塊設計后內部時(shí)序和布局很不錯,這時(shí)要假設將會(huì )有問(wèn)題時(shí)真得特別困難。
通過(guò)分析具有類(lèi)似問(wèn)題的一些功能塊后,我們發(fā)現了幾個(gè)能反映最高層設計潛在困難的指標,比如:邊界網(wǎng)路繞障嚴重程度。繞障(Detour)雖可在一定區域實(shí)現好的DRC(設計規則檢查)數目,但這好DRC背后卻隱藏著(zhù)問(wèn)題。對于擁塞嚴重的區域,時(shí)序水平一直在降低,新插入的單元先是會(huì )讓好的布線(xiàn)變差,然后還會(huì )變得不可布線(xiàn)。
為了評估邊界網(wǎng)路繞障嚴重程度,設計師首先要計算這些網(wǎng)路的密度,接著(zhù)再以顏色直觀(guān)顯示其嚴重級別。這個(gè)過(guò)程分為5個(gè)步驟:
1.顯示功能塊的I/O引腳密度。
2.調整初始平面布局和引腳分布以避免明顯的擁塞問(wèn)題。
3.找出所有連接I/O引腳的繞障網(wǎng)路
4.顯示所有連接繞障網(wǎng)路的I/O引腳的密度。
5.根據步驟調整平面布局和引腳分布。
關(guān)鍵是第4步,它意味著(zhù)最高層修復工作哪里將存在潛在困難。每個(gè)步驟的詳細內容如下所述:
步驟1
首先,你可將每個(gè)邊界分為多個(gè)小段;可基于個(gè)人喜好,設50um或100um作為一段長(cháng)度。其次,計算出每小段中所有非PG(non-PG)引腳數量,基于每段中引腳數以不同顏色來(lái)加亮這些片段;為每小段選擇適當顏色閾值很重要,因為它直接影響到你對一個(gè)區域是否具有高引腳密度的印象。設計師可基于之前項目經(jīng)驗來(lái)設置顏色。你需要將所有信號引腳層、類(lèi)似模擬的特殊引腳層都計算在內,但電源引腳除外??梢暡糠挚梢酝ㄟ^(guò)命令“ui layout sketch line …”繪制,而所有其它部分則可通過(guò)自帶Tcl來(lái)完成。
步驟2
步驟2中顯示了在一些區域里I/O引腳密度高,那么我們需將存儲器從高密度區域(白色區域最高,紅色區域其次)移出。
步驟3
完成布線(xiàn)后,接下來(lái)是要找出所有連接I/O引腳的繞障網(wǎng)路。判斷一個(gè)網(wǎng)路是否是繞障網(wǎng)路,可通過(guò)對比網(wǎng)路線(xiàn)長(cháng)與其所連接引腳的曼哈頓距離(Manhattan distance)來(lái)完成。設計師可依據個(gè)人需求來(lái)設置20%或30%作為閾值;當然若能設置最短長(cháng)度就更好了,這樣就可忽略不計比它更短的網(wǎng)路;若沒(méi)有這個(gè)設置,設計師將會(huì )看到許多短的“繞障”網(wǎng)路,而實(shí)際上這些都是錯誤警報。
在測試功能塊中,1對1連接占了絕大部分?;谶@點(diǎn),作者假設忽略多連接網(wǎng)路不會(huì )對最終結果有任何影響,因此此次demo只計算了一個(gè)輸入一個(gè)輸出的網(wǎng)路,大大簡(jiǎn)化了計算腳本編寫(xiě)。當然,這種假設還需要經(jīng)過(guò)其它設計的驗證。
這次計算將產(chǎn)生一張所有繞障I/O網(wǎng)路名單。不過(guò),如果直接就加亮所有這些網(wǎng)路(如圖3),設計師幾乎說(shuō)不出哪里布線(xiàn)真的很差,哪里還不錯可以繼續當前布線(xiàn)。
圖3中上區域看起來(lái)最為擁擠,但事實(shí)上,它既不是根源所在,也不是最關(guān)鍵區域。我們需要以另一種可直接反映問(wèn)題所在的方式來(lái)提供信息。
評論