王潔茹,宋慶文
(西安電子科技大學(xué),陜西西安,710000)
隨著晶體管和集成電路的發(fā)明,人們在半導(dǎo)體領(lǐng)域的發(fā)明層出不窮,同時(shí)也推動了半導(dǎo)體分立器件產(chǎn)業(yè)和集成電路產(chǎn)業(yè),以及集成電路產(chǎn)業(yè)所應(yīng)用的各種領(lǐng)域,如航天軍事、互聯(lián)網(wǎng)、移動通信、消費(fèi)類電子等的迅速發(fā)展。集成電路產(chǎn)業(yè)的高速發(fā)展,對于集成電路產(chǎn)業(yè)從業(yè)者而言,也面臨著一些新的挑戰(zhàn)。新興市場對電子產(chǎn)品的需求越來越多,對電子產(chǎn)品所具備功能的期望也越來越高。這也對集成電路產(chǎn)業(yè)提出了新的要求,即如何設(shè)計(jì)出具備更多功能的高性能芯片。尤其是進(jìn)入到后摩爾時(shí)代,考慮到市場的經(jīng)濟(jì)效益,芯片越晚交付,所需要的經(jīng)濟(jì)成本就越高,創(chuàng)造的經(jīng)濟(jì)效益就越少。因此,這也對芯片設(shè)計(jì)過程的周期提出了要求。芯片設(shè)計(jì)可以分為前端設(shè)計(jì)和后端設(shè)計(jì),后端設(shè)計(jì)在流片之前,因此后端設(shè)計(jì)的質(zhì)量好壞、設(shè)計(jì)周期對于整個(gè)工程的是否能按時(shí)完成交付,將芯片送往代工廠進(jìn)行流片都是非常重要的。
本文主要基于一款芯片的前端數(shù)據(jù),利用Cadence公司的后端物理設(shè)計(jì)工具Innovus,用基于flex model模擬模型的層次化物理設(shè)計(jì)方法對對芯片進(jìn)行物理設(shè)計(jì)。并以傳統(tǒng)的展平式設(shè)計(jì)方法作為對比,說明了層次化物理設(shè)計(jì)方法不僅可以保證時(shí)序收斂,且在設(shè)計(jì)總耗時(shí)上與展平式設(shè)計(jì)方法相比更有優(yōu)勢。
展平式設(shè)計(jì)方法是一種比較簡單的物理設(shè)計(jì)方法,一般400萬門以下的設(shè)計(jì)都可以用該方法進(jìn)行實(shí)現(xiàn)。具體的展平式設(shè)計(jì)流程圖如圖1所示,主要包括以下幾個(gè)步驟:
圖1 展平式物理設(shè)計(jì)流程圖
(1) 數(shù)據(jù)準(zhǔn)備
(2) 布圖規(guī)劃
(3) 布局及布局后優(yōu)化
(4) 時(shí)鐘樹綜合及時(shí)鐘樹綜合后優(yōu)化
(5) 布線及布線后優(yōu)化
(6) 工程變更
(7) 形式驗(yàn)證
(8) 物理驗(yàn)證
(9) 流片
層次化設(shè)計(jì)方法與展平式設(shè)計(jì)相比,更適用于規(guī)模比較大的芯片。它最大的特點(diǎn)就是首先要對芯片進(jìn)行整體分析規(guī)劃,這是為了對芯片進(jìn)行分割。主要思路是將一個(gè)大的設(shè)計(jì)分成若干個(gè)子分割塊,每個(gè)分割塊在完成各自的物理設(shè)計(jì)時(shí)是相互獨(dú)立的,可以交由不同的設(shè)計(jì)團(tuán)隊(duì)進(jìn)行物理設(shè)計(jì),在時(shí)間周期上也是可以并行進(jìn)行的。但是層次化物理設(shè)計(jì)中,每一個(gè)模塊與其他相關(guān)大模塊和頂層之間的時(shí)序約束需要各自獨(dú)立實(shí)現(xiàn)收斂,如果某些模塊不能收斂,它會要求在頂層重新做約束分配,直到實(shí)現(xiàn)模塊和頂層都收斂的結(jié)果。具體的層次化設(shè)計(jì)流程圖如圖2所示,主要包括以下幾個(gè)步驟:
圖2 層次化物理設(shè)計(jì)流程圖
(1) 整體布圖規(guī)劃
(2) 子模塊的指定
(3) 快速布局布線
(4) Partition的接口分配和時(shí)序分配
(5) 芯片分割
(6) 子模塊和頂層的物理設(shè)計(jì)
(7) 頂層整合
首先我們需要把數(shù)據(jù)文件正確讀入,才能順利進(jìn)行接下來的步驟。在把網(wǎng)表文件、庫文件、各種約束文件讀入之后,就可以進(jìn)入芯片規(guī)劃階段了。首先我基于該芯片的層次結(jié)構(gòu)對其進(jìn)行分析:該芯片有379777個(gè)子單元,其中包括6個(gè)大的模塊。在分析該設(shè)計(jì)結(jié)構(gòu)時(shí),我觀察到,對于這6個(gè)模塊而言,其中有3個(gè)模塊的子單元數(shù)量明顯多于其他3個(gè)模塊。比如u_mp11_1模塊包含174653個(gè)子單元,占到總子單元數(shù)的46%;u_mp11_0模塊包含172385個(gè)子單元,占到總子單元數(shù)的45%;u_scu模塊包含19800個(gè)子單元,占到總子單元數(shù)的5%。其他三個(gè)模塊的子單元數(shù)要遠(yuǎn)遠(yuǎn)小于這三個(gè)模塊。并且,對于整個(gè)設(shè)計(jì)中包含的72個(gè)硬核模塊(block),也是只存在于這三個(gè)模塊中的。u_mp11_1、u_mp11_1、u_scu這三個(gè)模塊分別有28、28、16個(gè)block??紤]到三個(gè)模塊的規(guī)模較大,并且對于硬核模塊而言,會在設(shè)計(jì)早期就確定其位置,通常也希望不要被劃分到其他模塊區(qū)域,因此我準(zhǔn)備把這三個(gè)模塊指定成三個(gè)分割塊(partition),在后面的芯片實(shí)現(xiàn)階段分別去進(jìn)行物理設(shè)計(jì)。按照合理的流程進(jìn)行的話,在確定好partition之后,我需要基于整個(gè)芯片做一個(gè)快速的布局規(guī)劃和布線,目的是基于布局規(guī)劃和布線的結(jié)果去給partition分配partition之間的接口(partition pin)以及分配時(shí)序預(yù)算(timing budget)。雖然這里所做的快速布局布線和實(shí)際的布局布線不同,它是一種較為粗略的布局布線,由于不會考慮很多約束條件,因此相對而言速度較快。但是這種布局布線法依然需要將整個(gè)設(shè)計(jì)的完整網(wǎng)表讀入,并讀取所包含的所有單元的信息。對于本課題的中的芯片,或許對于200多萬個(gè)邏輯門的規(guī)模工具有能力處理,只是體現(xiàn)在處理數(shù)據(jù)的耗時(shí)要久一點(diǎn)??墒悄壳按蠖鄶?shù)設(shè)計(jì)的數(shù)量級都在數(shù)千多萬以上,甚至對于超大規(guī)模集成電路的設(shè)計(jì),規(guī)模更為龐大,那么不僅可能會出現(xiàn)耗時(shí)嚴(yán)重的情況,甚至?xí)霈F(xiàn)工具的內(nèi)存也無法很好處理的情況?;谶@方面的考慮,我計(jì)劃引入模擬模型(flex model)。
Flex model是一種使用了基于接口邏輯模式的ART技術(shù)設(shè)計(jì)出的模擬模型。Flex model保留了接口邏輯上的器件,將其他非接口邏輯上的器件用flex filler(模擬填充單元)代替。通過這種抽象建模,網(wǎng)表可以縮減到原來的20倍,從而使得Innovus的運(yùn)行速度提高20倍。并且不會影響到時(shí)序、面積、擁塞等方面的分析的準(zhǔn)確性。這種準(zhǔn)確性也保證了布圖規(guī)劃的準(zhǔn)確性,避免了在后端設(shè)計(jì)過程中的反復(fù)迭代、重新布圖規(guī)劃。
下面是我用腳本來創(chuàng)建flex model的具體過程以及創(chuàng)建好的flex model的信息??梢钥吹?,整個(gè)設(shè)計(jì)的規(guī)模被縮減到了原來的12.4%,這對于減少后面的快速布局布線階段的耗時(shí)以及工具對于數(shù)據(jù)的讀取都是有利的。
set_proto_mode -create_partition_as_flexmodel true
set_proto_model -model mp11_1 -type flex_module
set_proto_model -model mp11_0 -type flex_module
get_proto_model -all
create_proto_model -out_dir ./DBS/model_gen.enc
在完成芯片的整體規(guī)劃與模塊的分割之后,就可以進(jìn)行接下來的步驟了。
圖3展示了完成芯片組裝后整個(gè)頂層的版圖。圖4展示了完成了頂層的物理設(shè)計(jì)過程后的時(shí)序結(jié)果??梢钥闯鍪褂脤哟位锢碓O(shè)計(jì)可以實(shí)現(xiàn)序收斂。
圖3 完成芯片組裝頂層的版圖
圖4 完成了頂層的物理設(shè)計(jì)過程后的時(shí)序結(jié)果
為了更好地體現(xiàn)層次化物理設(shè)計(jì)在縮短設(shè)計(jì)周期上的優(yōu)勢,我同樣也使用展平式設(shè)計(jì)方法,基于相同前端數(shù)據(jù)和Innovus工具對芯片進(jìn)行物理設(shè)計(jì),完成從布圖規(guī)劃到布線及布線后優(yōu)化的全過程。
表1和表2分別是使用展平式物理設(shè)計(jì)和層次化物理設(shè)計(jì)的各個(gè)階段的耗時(shí)結(jié)果。可以看到:使用展平式物理設(shè)計(jì)方法的總耗時(shí)為3h46mins,使用層次化物理設(shè)計(jì)的總耗時(shí)為3h23mins,和展平式物理設(shè)計(jì)方法相比取得了10.12%的優(yōu)勢。證明了層次化物理設(shè)計(jì)在縮短設(shè)計(jì)耗時(shí)上的優(yōu)勢。
表1 使用展平式物理設(shè)計(jì)的耗時(shí)結(jié)果
表2 使用層次化物理設(shè)計(jì)的耗時(shí)結(jié)果
本文首先簡單介紹了集成電路的發(fā)展和目前集成電路產(chǎn)業(yè)的現(xiàn)狀以及所面對的挑戰(zhàn),然后結(jié)合對芯片的具體的物理實(shí)現(xiàn)過程,對基于flex model的層次化物理設(shè)計(jì)的各個(gè)階段進(jìn)行了詳細(xì)的闡述。此外,作為對比,同時(shí)采用展平式物理設(shè)計(jì)方法對芯片進(jìn)行物理實(shí)現(xiàn)。通過對兩種物理設(shè)計(jì)方法設(shè)計(jì)結(jié)果的比較,證明了兩種設(shè)計(jì)方法都能實(shí)現(xiàn)最終的時(shí)序收斂。在設(shè)計(jì)總耗時(shí)上,使用展平式物理設(shè)計(jì)方法的總耗時(shí)為3h46mins,使用層次化物理設(shè)計(jì)的總耗時(shí)為3h23mins,和展平式物理設(shè)計(jì)方法相比取得了10.12%的優(yōu)勢。證明了層次化物理設(shè)計(jì)在縮短設(shè)計(jì)耗時(shí)上的優(yōu)勢。