Standard cell,標(biāo)準(zhǔn)單元,或者簡(jiǎn)稱(chēng)cell,可以說(shuō)是數(shù)字芯片后端最基本的概念之一了,甚至可能沒(méi)有接觸過(guò)后端的同學(xué)也有所耳聞?
那么,它到底是什么呢?我們?yōu)楹我O(shè)定標(biāo)準(zhǔn)單元呢,以及這些cell是怎么應(yīng)用到我們的后端設(shè)計(jì)中的呢?我就來(lái)以我個(gè)人的理解闡述一下這幾個(gè)問(wèn)題。
首先,在芯片設(shè)計(jì)最早期,門(mén)電路不多,晶體管都靠手畫(huà)在圖紙上,所有芯片都是一些邏輯簡(jiǎn)單的全定制芯片的時(shí)代,是不存在什么標(biāo)準(zhǔn)單元的概念的。那時(shí)的工程師們只需要把一個(gè)一個(gè)的晶體管擺好,電路就可以正常工作了。
但是隨著集成化越來(lái)越高,所有的門(mén)電路都靠一個(gè)個(gè)手畫(huà)變得非常不現(xiàn)實(shí),一個(gè)非常樸素的想法就是把一些用過(guò)很多次的電路打包,就比如最基本的與或非門(mén),我們要用的時(shí)候直接調(diào)用這個(gè)包就行了,就像復(fù)制粘貼一樣,這就非常方便了。
比如一個(gè)二輸入與門(mén),我只要設(shè)計(jì)好它的電路,畫(huà)出它的版圖,提取出來(lái)它的各項(xiàng)參數(shù),就可以無(wú)限次的在整個(gè)芯片上復(fù)制了。
而后,更進(jìn)一步,我們可以把整個(gè)芯片所有可重用的部分都打包起來(lái),為了方便我們擺放和連線(xiàn),我們會(huì)制定一些規(guī)范化的rule,比如我們規(guī)定每個(gè)包要有固定的高度,稱(chēng)為row,寬度可以以一個(gè)CPP(柵極間距)的距離變化,稱(chēng)為site。這樣就成為了一個(gè)std cell。
Std cell可以大大簡(jiǎn)化我們的設(shè)計(jì)復(fù)雜度,它的意義,就像蓋樓房的磚頭,構(gòu)成生物的細(xì)胞,畫(huà)畫(huà)的顏料一樣。
如果對(duì)于任何一個(gè)邏輯門(mén)都要求后端從頭晶體管開(kāi)始設(shè)計(jì),那是真的無(wú)法想象的。目前所有的芯片已經(jīng)全部采用了這種設(shè)計(jì)方式。
但是,不可避免地,它會(huì)有一些資源的浪費(fèi),因?yàn)槊恳粋€(gè)cell都是有統(tǒng)一的設(shè)計(jì)規(guī)則,必然不能針對(duì)性的在一些小的方面進(jìn)行優(yōu)化。
舉個(gè)例子,在芯片的某個(gè)地方可以把pin出在cell左側(cè)比較好route,但是這種cell設(shè)計(jì)的都是在右側(cè)。當(dāng)然,類(lèi)似這樣的影響在大型design中可以忽略了。
設(shè)計(jì)std cell是一件非常復(fù)雜的事,我感覺(jué)不亞于設(shè)計(jì)一款芯片的復(fù)雜程度。首先是電路的設(shè)計(jì),schematic design。有一些具有相對(duì)復(fù)雜邏輯功能的cell,它的邏輯電路如何設(shè)計(jì),如何兼顧PPA地進(jìn)行設(shè)計(jì),其實(shí)是很難的,設(shè)計(jì)結(jié)束后還要進(jìn)行許多的驗(yàn)證之類(lèi)。而后layout工程師要設(shè)計(jì)畫(huà)出cell的版圖。
我們后端設(shè)計(jì)一般繞線(xiàn)層十幾層頂天了,版圖工程師要面對(duì)的是數(shù)不清的各種各樣的層,有metal,有oxide,有poly,有n區(qū)有p區(qū),應(yīng)有盡有,還要考慮盡可能出pin M1或者M(jìn)2出,低一點(diǎn),給我們APR預(yù)留更多的繞線(xiàn)資源。
而后還要有專(zhuān)門(mén)的工程師來(lái)進(jìn)行cell 參數(shù)的提取,一般就是指power和timing的提取。Power應(yīng)該主要就是leakage,timing就很麻煩了,需要在各個(gè)corner下,每個(gè)corner出一套它的各項(xiàng)參數(shù)。
舉個(gè)例子,一個(gè)cell的delay信息,基本需要在各個(gè)PVT條件下,測(cè)出各個(gè)引腳在各種邏輯狀態(tài)下,input transition和output load各種情形下,cell的delay值。
更別提一些OCV的信息,還有POCV的lvf信息了。最終所有這一切做好后,就可以生成cell的LIB文件了。結(jié)合cell的LEF文件(物理信息),我們后端就可以愉快的用這些cell搭積木啦。
我們后端在用的時(shí)候,這些cell就是一個(gè)一個(gè)的黑匣子,看不見(jiàn)內(nèi)部,只能看到它的大小和出pin的信息。讀入網(wǎng)表文件后,相應(yīng)的cell就出現(xiàn)在我們的GUI界面了。對(duì)了,前端在綜合的時(shí)候也需要讀cell的lib。
他們拿到的RTL代碼不會(huì)指定一個(gè)與門(mén)要用哪種cell,比如我們目前有兩種不同的與門(mén)cell,邏輯功能一樣,但是有一些別的差異,綜合工具就會(huì)全面考慮這一塊電路,選用相應(yīng)的cell作為那一段verilog代碼里表示的與門(mén)。先寫(xiě)這么多吧,文中提到的各種名詞之后我可能都會(huì)寫(xiě)一寫(xiě),希望對(duì)大家有所幫助。
-
晶體管
+關(guān)注
關(guān)注
77文章
9745瀏覽量
138885 -
門(mén)電路
+關(guān)注
關(guān)注
7文章
199瀏覽量
40256 -
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59948 -
數(shù)字芯片
+關(guān)注
關(guān)注
1文章
110瀏覽量
18469 -
Layout設(shè)計(jì)
+關(guān)注
關(guān)注
1文章
13瀏覽量
1627
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論