物理實現(Physical Implementation)

物理實現(Physical Implementation)

來自專欄 集成電路基礎與資料獲取

物理後端設計,其實就是版圖設計,physical implementation。主要包括兩個方面,一方面是模擬電路版圖設計,另一方面是數字電路版圖設計。

模擬電路版圖設計的三個需要關注的重點是:1)電路的工作原理,功能,這一部分我認為主要是將整個版圖分成幾個部分,互相之間存在間隔,不會互相干擾;2)電流的大小,這主要是因為不同層的金屬的通過電流的能力不同,為了避免金屬被擊穿,所以會需要金屬加寬,但又不至於過寬影響晶元的整體的布局規劃,面積;3)匹配,因為是在模擬電路中,很多時候是存在差分信號的,這時候就需要特定的單元擺法,比如說同質心,或者加入dummy器件(無用器件,只是用來匹配的)來實現匹配。一般使用的工具是Cadence的virtuoso,當然驗證部分可能會用到calibre或者assure或diva。

數字電路版圖設計以前的方法跟模擬電路版圖是類似的,因為最小尺寸比較大,整體門電路又不是很多,不過現在的電路動輒千萬門級,所以想要手動實現畫版圖,不僅難度大還浪費時間。現在一般是採用APR,自動布局布線的方式來實現。其中最重要的我認為是floorplan(布局規劃)和修timing實現時序收斂。一般來說正常流程是後端設計工程師先設計一版布局規劃,整個流程跑一下,相應的擁擠度沒有很高,後續的routing(布線)也可以順利進行,然後就會找很多工作人員,包括開發代碼的設計人員(數字前端),測試工程師(PE)等等很多開一個組會,確定不同模塊的影響和不同的要求,最終確定一版布局,來進行後續的布線和修正timing等,要注意不可能一版floorplan就能實現要求,所以後端工程師通常會同時跑很多不同的版本。然後修正timing的話,CTS方式會有一些影響,feCTS只用balance tree方式來長時鐘樹,而ccopt則還採用了useful skew的方式來長時鐘樹,所以會有一些不同;還有就是修timing的話也可以採用不同的方法,例如改變buffer類型,或者直接更改路徑等都可以,反正最後要實現收斂。數字電路版圖設計會有一個sdc文件(synopsis design constraint),會對物理後端設計的很多方面有約束,比如說面積,功耗,時序的一些要求等,相應的時序要求相對會多一點。很多做物理後端設計的公司會研究flow和sign-off,flow就是項目流程,sign-off是將gds-ii文件交於foundry前的驗證的view(晶元工作環境)等的數量,能較快的實現量產並保證質量的公司才能生存。現用的一些後端使用的工具包括Cadence的encounter(或者叫innovus,15年開始)和synopsis的primetime,還有的ICC我沒用過,但是一些台企會使用laker,主要是在做FIB的時候用一下,因為相對於encounter坐標什麼的好像更精確一些,就是兩個結合著用,修正timing的時候有時候會用到tweaker。

兩個版圖設計都需要滿足DRC和LVS通過,DRC是Design Rule Check,設計規則檢查,及設計出來到foundry廠能否生產出來,LVS是layout versus schematic,版圖和電路網表對比,需要確定設計的版圖是否對應的上電路,否則功能不一致就沒意義了。

不同的模擬電路版圖設計項目會有不同的要求,採用工藝不同就會有很多不同,並且它存在著正向設計和反向設計兩種,反向設計很多時候是抄國外的晶元;數字版圖設計,採用的工藝不同,比如說是tsmc或者umc等會有不同,採用40nm或者28nm也會有不同,一般尺寸越小約束要求越嚴格。版圖設計的目的是物理實現電路和功能,流片後無法滿足需要重新調整更改,一般只有一次更改的機會,否則項目就是一個失敗的項目,所以版圖設計很需要仔細。

推薦閱讀:

中科院投了一家人工智慧公司,它們晶元的代號叫「DaDianNao」
世界集成電路發展概況
《模擬IC設計進階》付費課程正式上線
Flip chip為什麼性能好??

TAG:晶元集成電路 | 超大規模集成電路 | 晶元設計 |