最后的攻堅(jiān) 之版圖實(shí)現(xiàn)第五步 -- route
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在經(jīng)歷了前面的place、cts和一些優(yōu)化以后,工具進(jìn)入到了route階段,這也是apr里邊的重要的auto-route步驟。
工具在這里很聰明,使用了化繁為簡(jiǎn)的策咯來(lái)實(shí)現(xiàn)繞線。生活中也有一個(gè)類似的問(wèn)題,大家可以思考一下,如何把一個(gè)雜亂無(wú)章的毛線球快速的理順?
通常的做法是,先解決主要問(wèn)題,然后再是次要問(wèn)題,最終是逐步修正細(xì)節(jié)。ICC的繞線很好的體現(xiàn)了這個(gè)化繁為簡(jiǎn)的策咯。
由于數(shù)據(jù)庫(kù)的復(fù)雜程度不同,工具要想解決非常復(fù)雜的場(chǎng)景,那么就一定要將各種場(chǎng)景進(jìn)行歸一化,這種歸一化的過(guò)程就是簡(jiǎn)化問(wèn)題。為此,ICC工具構(gòu)建了下面的一些名詞和步驟來(lái)完成繞線:
· Glink
· gCell
· GRCs
· Overflow
· Global-route
· Track/layer
· Track-assignment
· Detail-route
· Verify route
喝口咖啡,一個(gè)個(gè)的來(lái)梳理下:
-
Glink:Global link,
這是一個(gè)標(biāo)準(zhǔn)的曼哈頓距離模型:通過(guò)Glink任何連線都只有水平和豎直兩種方向,這也是給后期做routingcongestion核算的一個(gè)重要參考信息。數(shù)據(jù)庫(kù)里所有的連接關(guān)系都會(huì)以Glink的形式存在。作為真實(shí)route的起點(diǎn)信息。如下圖所示:
-
gCell: grid Cell ,
這個(gè)是工具在數(shù)據(jù)庫(kù)里創(chuàng)建的虛擬格點(diǎn)cell,這是一個(gè)非常高效的處理。每一個(gè)die的形狀大小都不一樣,為了更好的進(jìn)行繞線,工具基于工藝的信息,把die分割成無(wú)數(shù)個(gè)gCell的小邊框。通常這個(gè)gCell的大小,是一個(gè)基于工藝site_row的數(shù)值的一個(gè)正方形。由于繞線都是基于繞線layer的,所以在每一個(gè)繞線層,die就被分割成了無(wú)數(shù)個(gè)小正方形,整個(gè)數(shù)據(jù)庫(kù)包含的gCell的總數(shù)量計(jì)算公式是:
gCell_rount = layer_count * die_area/ (site_row_width * site_row_width)
如圖所示
在上邊的示例圖里,如果考慮到有n層layer,那么數(shù)據(jù)庫(kù)里就會(huì)有
gCells_count= n * 254
而后,工具在每一個(gè)gCell的邊界上核算穿過(guò)每個(gè)gCell邊界上的Glink連接的需求,從而計(jì)算真實(shí)的routingcongestion
-
GRCs:Global Routing Cells
這個(gè)就是將gCells分割回每層的一個(gè)信息,由于實(shí)際的繞線是通盤考慮的,gCells會(huì)更加的真實(shí),就是支持繞線跳層,而GRCs是基于每層的計(jì)算,這個(gè)更適用于評(píng)估當(dāng)前層次的routingcongestion。
-
Overflow:
工具會(huì)對(duì)每一層的GRCs進(jìn)行評(píng)估,所有穿過(guò)這個(gè)虛擬cell邊界的需求和供給之間的差,公式如下
Overflow = requirement – demand
工具會(huì)對(duì)可以看到,這個(gè)值可正:需求大于供給;可零:需求等于共計(jì);可負(fù):需求小于供給。對(duì)于后兩種,繞線資源都是足夠的,不是問(wèn)題。如果為正值,這個(gè)就是真正意義上的congestion了。如下圖:overflow為3的一個(gè)示例:
這里有24個(gè)水平方向的穿線(glink)需求,但是實(shí)際上只能提供21個(gè)資源,在所有的水平繞線稍層上(m2/m4/m6/m8),所以這里的overflow就是3
由于GRCs和overflow的評(píng)估是基于單個(gè)繞線層的,就水平方向而言,如果通過(guò)打開不同的layer,在同樣數(shù)據(jù)庫(kù)里overflow的結(jié)果是會(huì)發(fā)生變化的。視圖里的overflow是所有打開版層overflow的總和,所以,開的層越多,數(shù)值大overflow的數(shù)量就越多,例如下圖,注意看一下overflow3在打開不同版層時(shí)的細(xì)微變化:
-
Global-route
這個(gè)是工具在繞線初始階段,所使用的一個(gè)主命令,它的目的就是化繁為簡(jiǎn),在經(jīng)歷過(guò)這個(gè)命令后,數(shù)據(jù)庫(kù)里就會(huì)保存到Glink、gCell、GRCs和overflow的信息,并且在globalrouting 的結(jié)束,都會(huì)輸出如下圖的信息:
這是一個(gè)信息量很大的report,一起來(lái)梳理一下它的具體含義。
首先,工具將繞線的資源分為了兩個(gè)方向,在一些工藝?yán)镞?,允許板層的prefer-routing和none-prefer-routing并存,但是有些工藝不允許這么做,簡(jiǎn)單起見,假設(shè)當(dāng)下的工藝是不允許none-prefer-routing的,那么,所有的繞線資源就是,這個(gè)層做對(duì)應(yīng)的繞線方向的所有track數(shù)量的總和。
這個(gè)report里邊,Both direction的數(shù)量,就是水平和豎直數(shù)量的總和,比如overflow的數(shù)值
Overflow: 4697 (Both) = 4606 (H) + 91 (V)
Max,這個(gè)好理解,就是兩個(gè)方向里邊最大的GRCs overflow 的值。
GRCs : 這里邊有兩個(gè)GRCs的地方。如下圖:
第一個(gè)GRCs (GRCs = 21),是指所有overflow是2(Max)的GRCs的數(shù)量。
第二個(gè)GRCs (GRCs = 5681),是指所有overflow的GRCs的數(shù)量綜合,(0< overflow <=Max),在這個(gè)例子里,Max為2,所以細(xì)節(jié)就是,overflow 為2的GRCs是21個(gè),overflow為1的GRCs是5660個(gè),
在上圖的最后一列有一個(gè)百分比,0.06%,這是說(shuō),在這個(gè)方向(版層)下,所有帶來(lái)overflow的GRCs占所有當(dāng)前方向(版層)整個(gè)GRCs的百分比,所以可以反推出來(lái),當(dāng)前方向(版層)的GRCs大概就是
9468333=5681 / 0.06%
這個(gè)數(shù)值對(duì)理解設(shè)計(jì)的數(shù)據(jù)有一定的幫助。
再看一下下圖GRCs的report圖例
對(duì)于兩個(gè)方向的GRCs總和的計(jì)算公式如下:
5822 (Both) = 5681 (H) + 141 (V)
-
Track/layer
Track是一個(gè)在floorplan里邊出現(xiàn)的概念,是指當(dāng)前繞線層的繞線可以使用的“軌道”信息。layer就是常說(shuō)的繞線版層。由于工藝制作的區(qū)別,在某些工藝下,在不同的layer,所有track都是一樣的,在近些年來(lái)的更為高級(jí)的工藝下,track開始在不同的layer出現(xiàn)了區(qū)別,layer越低,track之間的pitch就越小,layer越高則反之。
這個(gè)track就是前邊核算overflow的供給。
基于上述理論,在規(guī)定的長(zhǎng)度內(nèi)(site_row),每一層的供給是可以不同的,如下如所示:在單位長(zhǎng)度內(nèi)M2和M4的track供給數(shù)量的區(qū)別很明顯
-
track assignment
有了global routing的信息,track assignment就簡(jiǎn)單了,穿過(guò)這個(gè)GRCs的glink連接被實(shí)現(xiàn)到了每層的對(duì)應(yīng)的track上,但是,要注意一點(diǎn),工具為了簡(jiǎn)化這一步驟,只是做了簡(jiǎn)單的track assignment,所以,實(shí)現(xiàn)的速度很快,但是會(huì)有很多net shape都是overlap的結(jié)果,類似下圖的結(jié)果
在這個(gè)有3個(gè)overflow的區(qū)域,這里有一個(gè)占用同一個(gè)track的兩個(gè)net shape,這就是典型的short的繞線。
到這里為止,可以感覺(jué)到overflow對(duì)真實(shí)繞線的影響了吧。固然,一般的設(shè)計(jì)都不可能保證GRCs overflow是零(如果是零,理論上,在trackassignment之后,就不會(huì)有任何的short出現(xiàn)了,那樣的數(shù)據(jù)庫(kù)就真厲害了?。?,但是工具之所以這樣做,只是為了簡(jiǎn)化track的步驟,后面還有大招,來(lái)修復(fù)細(xì)節(jié)問(wèn)題。這就是下面要說(shuō)到的。Detailroute
-
Detail-route
能看到這里的同學(xué)都是好同學(xué)J
講了半天,這里的detail route其實(shí)才是大家通常最先接觸到的真實(shí)的router,在老一點(diǎn)的icc版本里邊,就是就route_detail,由于新的工藝的要求,icc推出了一個(gè)route_zrt_detail的命令,來(lái)滿足更復(fù)雜的工藝需求,原先的繞線就稱為了classicrouter?,F(xiàn)今,進(jìn)入了icc2的時(shí)代,這個(gè)命令,又變成了route_detail,但本質(zhì)上其實(shí)就是route_zrt_detail的演化版本。歷史捋清楚了,下面就來(lái)看一下,這個(gè)命令的厲害。
書接上文,在track assignment結(jié)束后,由于工具的策咯不同,雖然所有的netshape都被創(chuàng)建了,但是由于GRCsoverflow的影響和繞線細(xì)節(jié)等問(wèn)題,會(huì)出現(xiàn)大量的DRC問(wèn)題。例如下例:
可以看到,這里會(huì)有非常多的DRC和short,基于前面的理論,這個(gè)現(xiàn)象其實(shí)也沒(méi)有超出預(yù)期太多
所以,icc這個(gè)時(shí)候就會(huì)調(diào)用detail route來(lái)對(duì)這些DRC進(jìn)行精修。這個(gè)就是detailroute要干的事情。
本質(zhì)上來(lái)講,如果繞線資源不夠,short是不能被修復(fù)的,因?yàn)榫蛦蝹€(gè)GRC cell而言,供給是一定的,需求也是死的,這兩個(gè)是的差異是天生的,不能被克服的。
有趣的是,工具在將一切分割后的節(jié)點(diǎn)(track assignment),它又可以經(jīng)寂靜分隔開的GRCs進(jìn)行二次、三次等重排。言下之意就是,在當(dāng)前GRCcell出現(xiàn)問(wèn)題的地方,可以去周邊的GRC尋找出路,這其實(shí)就是典型的面積換short:迂回(detour),如下圖的short演進(jìn)過(guò)程:
這個(gè)從ICC的命令log可以清楚地看到這個(gè)動(dòng)作的影響,如下例
可以明顯的看到,數(shù)據(jù)庫(kù)的總線長(zhǎng)在不斷的增加,但是對(duì)應(yīng)的short實(shí)在不斷地減少,如下圖:
Detail route之后再來(lái)看一下那兩根short的繞線,如下圖:
工具通過(guò)跳層。和迂回有效地解決了short。
這個(gè)GRCs的重組和的策咯看似簡(jiǎn)單,但是非常高效,通過(guò)借道和迂回可以有效地解決short。當(dāng)然,天下沒(méi)有免費(fèi)的午餐,任何的detour都會(huì)增加timing的問(wèn)題,這個(gè)時(shí)候,就需要postroute的優(yōu)化,和PT的timing ECO了。但整體上來(lái)說(shuō),這個(gè)代價(jià)是值得的,通常都可以保證physical和timing同步收斂。
由于工具對(duì)GRCs的重組是有一定范圍的,加上timing driven的需求,并非所有的short都可以被解決,尤其是在某些local short 數(shù)量很多的區(qū)域,工具是無(wú)能為力的。例如,如果要在一個(gè)非常密集的區(qū)域里,需要解決很多short,就要迂回繞線非常多的net,可以想象,要完全躲開這個(gè)高密度區(qū)域,才能解決這些short,這對(duì)于timing是很不利的。簡(jiǎn)而言之:沒(méi)有解不掉的short,只有修不干凈的timing。
除過(guò)對(duì)于short的修復(fù),Detail route黑可以修復(fù)各種各樣類型的DRC問(wèn)題。簡(jiǎn)單的一個(gè)類型列表如下
-
Verify_route
在detail route完成后,用戶就可以使用verifyroute來(lái)檢查繞線質(zhì)量了,通過(guò)觀察這個(gè)結(jié)果,來(lái)整體評(píng)估數(shù)據(jù)庫(kù)的繞線質(zhì)量,主要的關(guān)注點(diǎn),還是那句老話:控制short。當(dāng)然,別的類型也有注意,尤其是數(shù)量巨大的時(shí)候,有時(shí)候,由于某些配置的不合理,會(huì)導(dǎo)致在某些層的繞線質(zhì)量顯著增加,甚至?xí)霈F(xiàn)open,這個(gè)時(shí)候就要去好好的debug了。





