層次化設(shè)計(jì)研究論文
時(shí)間:2022-10-11 11:11:00
導(dǎo)語:層次化設(shè)計(jì)研究論文一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要研究了層次化設(shè)計(jì)中如何達(dá)到時(shí)序收斂。從層次化設(shè)計(jì)的流程分析,介紹如何人為地選擇并且調(diào)整一些布局布線方面的問題從而使得設(shè)計(jì)更能實(shí)現(xiàn)時(shí)序收斂。最后以圖文及數(shù)據(jù)相結(jié)合的方式舉例說明了層次化設(shè)計(jì)時(shí)序收斂的可行性。
關(guān)鍵詞層次化設(shè)計(jì);收斂性;模塊布局;時(shí)鐘優(yōu)化;延時(shí)分配;大型設(shè)計(jì)
1引言
如今一般的后端設(shè)計(jì)是采用把網(wǎng)表打散,把所有的邏輯單元看作是一個(gè)層次上,層次關(guān)系不用考慮,一起進(jìn)行設(shè)計(jì),優(yōu)化。這樣設(shè)計(jì)的好處是邏輯關(guān)系比較簡單,在做優(yōu)化的時(shí)候,可以對(duì)邏輯單元直接處理,所有的物理單元都是可見的。但是,隨著現(xiàn)在設(shè)計(jì)越來越復(fù)雜,單元越來越多,現(xiàn)在的單層次的EDA工具的承載能力遭到了挑戰(zhàn)。由于設(shè)計(jì)的龐大,使得后端設(shè)計(jì)所花費(fèi)的時(shí)間越來越長,于是出現(xiàn)了層次化設(shè)計(jì)流程。
層次化設(shè)計(jì)流程是指把設(shè)計(jì)對(duì)象分成多個(gè)模塊分層次設(shè)計(jì),在設(shè)計(jì)的過程中,要考慮層次之間的關(guān)系,頂層模塊和底層模塊的關(guān)系,層次內(nèi)部的優(yōu)化等等。最終,在各個(gè)模塊達(dá)到其各自設(shè)計(jì)要求的同時(shí),滿足頂層的設(shè)計(jì)要求。
2層次化設(shè)計(jì)的背景
2.1層次化設(shè)計(jì)的優(yōu)勢(shì)
(1)大多數(shù)原因是設(shè)計(jì)規(guī)模的龐大。很大的一個(gè)設(shè)計(jì)就需要考慮層次化。
(2)層次化設(shè)計(jì)可以給一個(gè)模塊里的設(shè)計(jì)單元一些約束,使他們可以在一個(gè)區(qū)域內(nèi)布局布線。這種約束性給某些特殊的設(shè)計(jì)帶來方便,比如說:多電壓設(shè)計(jì)。隨著現(xiàn)在對(duì)低功耗的要求越來越廣泛,設(shè)計(jì)者一般會(huì)對(duì)不同的模塊進(jìn)行低功耗的考慮。不同模塊會(huì)有不同的供電電壓。這樣,層次化設(shè)計(jì)可以對(duì)這些不同的模塊單獨(dú)進(jìn)行功耗分析和設(shè)計(jì)。
(3)層次化設(shè)計(jì)有時(shí)候也是應(yīng)項(xiàng)目進(jìn)行的情況可以采取的一個(gè)方法。一般來說,一個(gè)大型的設(shè)計(jì)會(huì)分幾個(gè)小組分別設(shè)計(jì)幾個(gè)模塊。幾個(gè)模塊的進(jìn)度有可能不一樣。后端設(shè)計(jì)一般不會(huì)等到所有的模塊完成了以后才進(jìn)行。一般來說,可以對(duì)部分沒有完成的模塊估計(jì)一個(gè)大小,時(shí)序。然后把這些模塊當(dāng)作是BlackBox(黑盒)放到頂層進(jìn)行后端設(shè)計(jì)。這時(shí)候,我們采取的也是層次化設(shè)計(jì)。
(4)層次化設(shè)計(jì)也是一種設(shè)計(jì)流程的選擇。一個(gè)模塊的單元如果約束在一起,其內(nèi)部的優(yōu)化可以更方便。芯片的各個(gè)模塊能有效地控制單元固有的離散性,從而最大限度地減少時(shí)序或擁塞的變化。
2.2層次化設(shè)計(jì)常見問題
(1)由于有層次化的劃分,模塊之間及與頂層的關(guān)系是不透明的。和平面設(shè)計(jì)不同,頂層的優(yōu)化不能進(jìn)入到模塊內(nèi)部,這樣,有可能造成優(yōu)化的限制。
(2)層次化設(shè)計(jì)對(duì)邏輯的要求比較嚴(yán)格,改變邏輯的時(shí)候要注意對(duì)層次化的影響。比如,如果在布線的時(shí)候,需要穿越某些模塊,那需要在這些模塊中新增加邏輯連線。所以,邏輯的更新要和布局布線同步。
(3)層次化設(shè)計(jì)中,模塊內(nèi)部優(yōu)化所需要的約束條件是通過在頂層的分析中得到的,而頂層的分析又是基于模塊內(nèi)部的情況得出的。所以,這是個(gè)反復(fù)的過程。層次化設(shè)計(jì)要注意反復(fù)優(yōu)化時(shí)應(yīng)該遵循收斂原則。最后的結(jié)果應(yīng)該是頂層的時(shí)序得到滿足,模塊的時(shí)序也得到滿足。
3層次化設(shè)計(jì)流程
(1)層次化分塊。在讀入的網(wǎng)表文件中,前端的設(shè)計(jì)者會(huì)按照功能創(chuàng)建一些模塊。在層次化設(shè)計(jì)中的初始,就要對(duì)這些模塊進(jìn)行分析,有些模塊需要打散并入到頂層,有些大的模塊需要保留,當(dāng)作一個(gè)子module進(jìn)行分層處理。
(2)層次化放置單元。把子模塊里的單元集中放在子模塊里。
(3)如果timing有問題,做一下簡單的優(yōu)化,比如說修復(fù)一些DRC的violation(cap,transition,fanout),插入/刪除/更換一些緩存器。
(4)Power的處理。power會(huì)采取網(wǎng)格狀的模式,同時(shí)會(huì)做power的分析,做完之后preroute(preroute指對(duì)電源線的連接)可以先不要做。
(5)時(shí)鐘的規(guī)劃。現(xiàn)在工具已經(jīng)可以提供一種由下而上的時(shí)鐘規(guī)劃。利用工具提供的方法做完時(shí)鐘規(guī)劃后,可以得到一個(gè)初步的時(shí)鐘優(yōu)化,同時(shí)會(huì)得到一個(gè)優(yōu)化的結(jié)果,就是指頂層的時(shí)鐘的skew能被優(yōu)化到什么結(jié)果,底層的時(shí)鐘優(yōu)化的目標(biāo)是是么。當(dāng)然這個(gè)只是初步得到的結(jié)果,可以做個(gè)參考。如果得到的skew很差,那就需要重新考慮模塊的布局了。
(6)模塊化的布線。接下來就可以為產(chǎn)生接口的位置及產(chǎn)生的子??熳鰷?zhǔn)備了。接口的位置是通過布線來得到的。工具會(huì)對(duì)整個(gè)設(shè)計(jì)進(jìn)行布線,這樣的布線是指globalroute。子模塊內(nèi)部的布線是首要考慮的,接下來是接口的布線,最后是頂層的布線。而端口的位置就是通過接口的連線在子模快邊界的交點(diǎn)的位置產(chǎn)生的。由于是global的route,交點(diǎn)不是在wiretrack上,所以,最后接口的實(shí)際位置將會(huì)稍微偏離globalroute。
(7)把模塊變成軟模塊并且產(chǎn)生接口位置,同時(shí)把電源線復(fù)制到底層。
(8)為模塊產(chǎn)生時(shí)序的模型。由于軟模塊內(nèi)部的信息頂層是看不到的,所有要通過ilm(記錄了子模塊接口的時(shí)序信息的模型)把內(nèi)部的時(shí)序信息映射到頂層去。這樣在頂層做時(shí)序分析的時(shí)候就能包含整個(gè)設(shè)計(jì)的了。
(9)延時(shí)分配。這是很關(guān)鍵的一步。時(shí)序預(yù)估是通過時(shí)序分析,產(chǎn)生底層的時(shí)序約束,把頂層和底層的優(yōu)化的目標(biāo)分配好。通過實(shí)際的每個(gè)模塊的及其頂層的延時(shí),得到各自模塊在整個(gè)延時(shí)所占的比重,然后按照要求的時(shí)鐘延時(shí)(requiredelay)進(jìn)行分配。然后把得出的延時(shí)作為時(shí)序約束傳給子模塊。
(10)有了子模塊的時(shí)序約束,分別打開子模塊進(jìn)行布局,優(yōu)化,布線。
(11)子模快優(yōu)化成功之后,轉(zhuǎn)換成硬模塊。這樣,底層將不會(huì)再被改動(dòng)任何信息,最后,回到頂層做頂層的優(yōu)化。
這里要注意的是,如果子模塊不能達(dá)到優(yōu)化的結(jié)果,需要回到頂層,進(jìn)行頂層的優(yōu)化,這樣可以對(duì)底層的優(yōu)化約束會(huì)降低,然后,再產(chǎn)生底層的約束,再做底層的優(yōu)化。這應(yīng)該是個(gè)收斂的過程。最后的結(jié)果會(huì)越來越好。
4層次化設(shè)計(jì)中哪些步驟需要注意得到收斂性的時(shí)序
4.1模塊分割階段
用來做層次化設(shè)計(jì)的子模塊一般是網(wǎng)表里的單元器件比較多的模塊,并且與其他模塊連接關(guān)系較少的模塊。原因是:由于子模塊在布局布線的時(shí)候會(huì)集中在一個(gè)區(qū)域,如果這個(gè)模塊和外界聯(lián)系比較多的化,這種集中會(huì)使得其距離外界單元比較遠(yuǎn),不如打散的效果好。如果有很多時(shí)序存在這個(gè)模塊和外界之間,會(huì)造成整個(gè)設(shè)計(jì)的時(shí)序比較差。
在我們沒有劃分模塊之前,我們對(duì)全局進(jìn)行布局,發(fā)現(xiàn)模塊b和模塊c2內(nèi)部連接很集中,而c1模塊內(nèi)部的單元被分散在芯片的四周,說明它與其他很多模塊有連接關(guān)系,外部連接關(guān)系比內(nèi)部連接關(guān)系更多。這種情況,我們一般選擇把b和c2作為層次化設(shè)計(jì)的子模塊,這樣有利于在后期能一直很好的保持設(shè)計(jì)的收斂性。
4.2模塊的布局
在產(chǎn)生子模塊之后,我們可以利用工具對(duì)芯片進(jìn)行布局。工具會(huì)按照層次化的原則進(jìn)行布局,即屬于同一模塊的會(huì)放置在同一范圍內(nèi)。這時(shí),我們需要給子模塊產(chǎn)生一個(gè)形狀并且給它一個(gè)位置。模塊的位置最好放置在內(nèi)部單元集中放置的中心,之后,當(dāng)我們把屬于這個(gè)模塊的所有單元都放置到模塊中時(shí),我們所得到的結(jié)果將與初始的結(jié)果相匹配。
4.3模塊接口的產(chǎn)生
層次化設(shè)計(jì)的后期是把頂層和底層分割開來處理,所以,它們彼此的信息交流都是通過接口來進(jìn)行的,而接口的物理位置是通過布線產(chǎn)生的。布線時(shí),為了保證邏輯的與物理的一致性,需要遵循以下的原則:①內(nèi)部的連接需要在內(nèi)部完成布線。②邏輯上模塊有多少接口,在布線的時(shí)候穿過這個(gè)模塊的次數(shù)就有多少。但是,原則2給層次化設(shè)計(jì)帶來了局限性,如果遵循了這樣的原則,將迫使布線需要饒過一些模塊。為了打破這種局限性,我們?cè)试S改變模塊的邏輯,在邊界產(chǎn)生額外的接口,這也是為了達(dá)到布線的最優(yōu)。如圖1介紹了幾種產(chǎn)生feedthroughpin(額外穿越邊界的接口)的情況。
由布線產(chǎn)生接口的流程是:先對(duì)模塊內(nèi)部進(jìn)行布線,然后對(duì)接口的連接進(jìn)行布線,最后是頂層的連接進(jìn)行布線。這樣做的優(yōu)點(diǎn)是我們?cè)谇捌诰湍茴A(yù)估到整個(gè)設(shè)計(jì)是不是能完成布線。如果只是對(duì)接口進(jìn)行布線的話,很有可能接口的位置不好從而影響了內(nèi)部的布線。而接口的位置一旦決定下來,修改起來就難了。所以,我們?cè)诋a(chǎn)生接口之前就考慮好模塊內(nèi)部的布線,這樣能保證后期的結(jié)果也是可行的。有一種情況在布線的時(shí)候要特別注意,對(duì)于相貼邊的模塊,在貼邊處不要放置單獨(dú)的接口。這樣的接口會(huì)導(dǎo)致頂層的布線無法通過模塊與外界相連。因?yàn)閷哟位O(shè)計(jì)的后期就是把模塊做成硬模塊,底層頂層分別進(jìn)行詳細(xì)的布線,優(yōu)化。彼此獨(dú)立。所以,在頂層,將會(huì)把底層的模塊全部屏蔽,布線將不允許穿過子模塊。這樣,圖示中的接口在布線中會(huì)遇到很大的困難。所以,即使有與外界沒有連接關(guān)系的接口,我們也不要把它們放到貼邊的位置,因?yàn)楹苡锌赡茉贓CO的階段,設(shè)計(jì)者會(huì)為這些端口加上連接關(guān)系。在貼邊處的端口永遠(yuǎn)都要遵循一一對(duì)應(yīng)的關(guān)系。
4.4模塊時(shí)鐘信息的傳遞
在一般時(shí)鐘優(yōu)化中,我們主要考慮的是UsefulClockSkew。所謂UsefulClockSkew,就是通過調(diào)整各級(jí)觸發(fā)器的時(shí)鐘延遲(ClockLatency,從時(shí)鐘起始點(diǎn)到每個(gè)觸發(fā)器時(shí)鐘輸入端口的延遲),來調(diào)整前后流水級(jí)的路徑需求時(shí)間(RequireTime),以滿足盡量小的時(shí)鐘周期要求。所以一般我們對(duì)時(shí)鐘skew的優(yōu)化的目標(biāo)是所有的sink端口的時(shí)鐘延時(shí)盡量保持一致,這樣時(shí)鐘對(duì)時(shí)序的影響能降低到最小,使我們?cè)谶壿嬀C合和布局階段的分析大致準(zhǔn)確。在平面設(shè)計(jì)中,所有的sink端口由上而下進(jìn)行平衡其延時(shí)。先把所有的sink端口進(jìn)行分組,按照就近原則,按照電容的一個(gè)閾值進(jìn)行合并成組,在同組的sink端上層插入緩存器,然后,以緩存器為sink端口,按照同樣的原則再往上層插入緩存器,一層一層往上遞推,建立時(shí)鐘樹。
如此建立的時(shí)鐘樹能保證所有的sink端口是比較平衡的。當(dāng)然在選擇組的時(shí)候會(huì)考慮一些其他的因素,比如gatedclock,generatedclock,hardmacro的時(shí)鐘端口。如果僅靠分組的情況不能平衡,比如有些組離時(shí)鐘端口的距離差別很大,還需要對(duì)各個(gè)不同的組插入不同的緩存器。
在層次化設(shè)計(jì)中,由于每個(gè)模塊的內(nèi)部設(shè)計(jì)沒有完成,我們需要完成由下而上的時(shí)鐘設(shè)計(jì)是違反了層次化設(shè)計(jì)的規(guī)則的。一般我們會(huì)假設(shè)模塊內(nèi)部所有的sink端口的最大和最小延時(shí)是多少,然后把信息加在模塊的時(shí)鐘端口上,這樣在頂層,我們可以得到整個(gè)設(shè)計(jì)的時(shí)鐘延時(shí)信息,從而可以在頂層對(duì)標(biāo)準(zhǔn)單元模塊及層次化模塊都能優(yōu)化。當(dāng)然,我們?cè)诠烙?jì)模塊內(nèi)部的sink端口的延時(shí)時(shí),我們需要考慮的是優(yōu)化后的結(jié)果,也就是內(nèi)部如果優(yōu)化以后,可以得到的最大和最小延時(shí),這個(gè)估計(jì)的結(jié)果也是設(shè)計(jì)者要在內(nèi)部進(jìn)行優(yōu)化的目標(biāo)。這樣就做到了時(shí)鐘的層次化分離,如圖2所示。
4.5模塊時(shí)序分配
接口的物理信息產(chǎn)生以后,最重要的將是產(chǎn)生每個(gè)模塊的時(shí)序約束。頂層的時(shí)序約束是由前端綜合的結(jié)果及設(shè)計(jì)者的要求提出的,但是子模塊的時(shí)序是在頂層對(duì)整個(gè)設(shè)計(jì)的時(shí)序分析后產(chǎn)生的。通過整個(gè)設(shè)計(jì)的層次化分析,主要把延時(shí)在各個(gè)模塊內(nèi)部進(jìn)行分配,把優(yōu)化的指標(biāo)分配到每個(gè)模塊中。延時(shí)分配在層次化設(shè)計(jì)中是很重要的方案,目的是通過各個(gè)模塊的努力使整個(gè)設(shè)計(jì)的時(shí)序達(dá)到要求。它的大致原理是先得到通過模塊端口的最差路徑,得到這條路徑在每個(gè)模塊及頂層的延時(shí),然后用requiretime(時(shí)序如果達(dá)到要求需要的延時(shí))減去頂層的延時(shí)(因?yàn)槲覀冊(cè)诜峙涞臅r(shí)候假設(shè)頂層的延時(shí)是不變的,也就是我們不把頂層的優(yōu)化考慮進(jìn)去)乘以本模塊延時(shí)占整個(gè)模塊延時(shí)的比例。時(shí)序分配之后,再把分配后的延時(shí)作為接口的輸入延時(shí)和輸出延時(shí)。分配之后的延時(shí)使得各個(gè)模塊內(nèi)部看到整個(gè)路徑的延時(shí)變小,也就是其他模塊為他分擔(dān)了一部分優(yōu)化的難度,分擔(dān)多少要看它自身本來有多少延時(shí)。各個(gè)模塊按照分配后的結(jié)果進(jìn)行優(yōu)化之后,如果每個(gè)模塊的時(shí)序都達(dá)到要求,那么整個(gè)芯片的時(shí)序?qū)⑦_(dá)到要求。
5實(shí)例說明
實(shí)驗(yàn)?zāi)繕?biāo):通過層次化設(shè)計(jì)實(shí)現(xiàn)時(shí)序收斂。
實(shí)驗(yàn)對(duì)象:實(shí)例中的design大小為中等design,90k左右標(biāo)準(zhǔn)單元,頂層包含9個(gè)模塊。根據(jù)模塊大小,選取了其中三個(gè)作為層次化設(shè)計(jì)的子模塊。
(1)先進(jìn)行模塊分割及模塊放置,然后把模塊內(nèi)部的單元放置在模塊內(nèi)部,這是層次化設(shè)計(jì)的基礎(chǔ),開始進(jìn)行層次化設(shè)計(jì),同時(shí),評(píng)估一下布線及時(shí)序優(yōu)化的可行性。
如圖1如果按照扁平化布局,左邊的布局,根據(jù)子模塊的布局可以看出,子模塊內(nèi)部的單元模塊的放置比較集中,于是,我們按照子模塊的扁平布局得到了子模塊的邊界大小及位置。然后,有了邊界的約束,產(chǎn)生了新的層次化的布局,如圖3所示。
一般來說,Congestion的GRC在0.5%以內(nèi),Max在5以內(nèi)是可以布線成功的。時(shí)序在時(shí)鐘周期的20%以內(nèi)是可以得到最后的優(yōu)化的。
(2)時(shí)鐘優(yōu)化。利用層次化時(shí)鐘優(yōu)化的方法進(jìn)行優(yōu)化,可以對(duì)時(shí)鐘進(jìn)行層次化處理,每個(gè)子模塊的時(shí)鐘會(huì)先得到優(yōu)化,然后傳遞到頂層。如圖4所示。
(3)進(jìn)行層次化布線,之后根據(jù)層次化布線產(chǎn)生接口。在做層次化布線時(shí),我們看到允許產(chǎn)生feedthrough可以得到更好的布線長度和更小的擁擠度。如圖5所示,比較了允許產(chǎn)生feedthrough和不產(chǎn)生feedthrough的數(shù)據(jù)對(duì)比。從圖5中可以看到,產(chǎn)生feedthrough了以后,頂層的邏輯連線穿過了子模塊,得到了更優(yōu)的布線。
(4)接口產(chǎn)生,我們?cè)賹?duì)模塊產(chǎn)生時(shí)序模型,使得在頂層也可以看到底層的電容電阻信息,在時(shí)序分析時(shí),可以得到和接口有關(guān)的時(shí)序結(jié)果。由于接口的位置和布線稍微有些偏差,我們得到的時(shí)序分析和在層次化布線時(shí)得到的時(shí)序分析有點(diǎn)出入:
Timingreport:MaxSlack:-0.45TotalSlack:-18.81
(5)進(jìn)行延時(shí)分配。然后分別在底層進(jìn)行優(yōu)化,布線。我們得到的完全可以布線及優(yōu)化的結(jié)果:
模塊1:Wirelength:3482179DRCViolation=0MaxSlack=0.02
模塊2:Wirelength:1127638DRCViolation=0MaxSlack=0.43
模塊3:Wirelength:2114073DRCViolation=0MaxSlack=0.43
頂層:Wirelength:4313672DRCViolation=0MaxSlack=0.53
與層次化布線后的結(jié)果相比較,結(jié)果是有收斂性的。
6總結(jié)
層次化設(shè)計(jì)的收斂性是建立在整體的把握上。從模塊的分割到延時(shí)分配,每個(gè)環(huán)節(jié)都要做好分析和檢查,模塊的集中性需要保證,頂層和底層的信息傳遞要準(zhǔn)確,接口的位置要和層次化布線保持基本一致,延時(shí)的分配要合理等等這些因素都會(huì)影響到層次化設(shè)計(jì)的收斂性。在這次實(shí)踐過程中,對(duì)每個(gè)環(huán)節(jié)的分析都比較全面,于是得到了比較好的結(jié)果。層次化設(shè)計(jì)中最需注意的是如何保證在前期對(duì)整體的分析在后期層次分離之后是有效的,使得整個(gè)設(shè)計(jì)的優(yōu)化是收斂的,文中所提到的四個(gè)方面是一些方法,更多的方法要在更多的實(shí)踐中得到。層次化設(shè)計(jì)是大型設(shè)計(jì)不可避免需要掌握的。
參考文獻(xiàn)
[1]PhysicalHierarchyGenerationwithRoutingCongestionControl,Chin-ChihChang,JasonCong,Zhigang(David)Pan,andXinYuan,ISPD''''02,April7-10,2002,SanDiego,California,USA
[2]A1.5GHzThirdGenerationItanium(r)2Processor,JasonStinsonandStefanRusu,IntelCorporation,DAC2003,June2-6,2003,Anaheim,California,USA
[3]A480-MHzRISCMicro-processorina0.12umLeffCMOSTechnologywithCopperInterconnects,ChekibAkrout,JohnBialas,MilesCanada,IEEEJOURNALOFSOLID-STATECIRCUITS,VOL.33,NO.11,NOVEMBER1998
[4]Deep-submicronDesignChallengesforaDual-core64bUltraSPARCMicroprocessorImplementation,ToshinariTakayanagi,JinukLukeShin,SunMicrosystems,Inc.2004IEEEInternationalConferenceonIntegratedCircuitDesignandTechnology
[5]“TimingClosurebyDesign,"AHighFrequencyMicroprocessorDesignMethodol