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