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