日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 艾思后端實(shí)現(xiàn)

上一講,我們了解了import步驟,現(xiàn)在開始我們要接觸到物理cell的操作了。如果形象一點(diǎn)講floorplan的話,那我們現(xiàn)在就要開始“裝修”了。

Floorplan的主要步驟如下圖所示:

這里的布局并不是指自動(dòng)布局,而是手動(dòng)布局。工具再?gòu)?qiáng)大,也一定是基于我們給的一個(gè)初始點(diǎn)的,在這一步驟,我們就要給出這個(gè)初始點(diǎn)。

第一步:Create die/core area:首先,你必須定義你的die的大小和形狀,工具會(huì)根據(jù)這個(gè)形狀和你給定的其他選項(xiàng),結(jié)合前面創(chuàng)建library的技術(shù)文件,來初始化整個(gè)die和core,這里邊有下面一些基本概念要搞清楚。

1: die 和core的定義。Floorplan初始化后,die/core就都有了,這兩個(gè)名詞還是不同的,大家來感覺一下下圖:


die是用戶創(chuàng)建的邊界空間,是所有可以繞線的區(qū)域總和。core是工具可以使用來放置std-cell的區(qū)域,大家一定要弄清楚這兩句話的區(qū)別。此外,die這個(gè)概念在icc2上稍微有調(diào)整,被boundary名稱所取代。

在某些工藝的要求下,die的寬度、高度必須是某一個(gè)基礎(chǔ)數(shù)值的整數(shù)倍,這是為了在模塊集成、PG-grid的時(shí)候,可以做到無縫對(duì)接。比如:你的基礎(chǔ)寬度、高度分別是 ,$w和$h,那么你的die的每一個(gè)頂點(diǎn)的x/y坐標(biāo),都必須是這個(gè)$w/$h的整數(shù)倍。小艾也是最近才接觸到這種工藝的,這樣確實(shí)方便,尤其是在做PG、模塊拼接等工作的時(shí)候,感興趣的同學(xué)可以了解一下

2:site_row/cell_site:如果初始化成功了,你可以在版圖上看到site_row的信息。如下圖


在這張圖上邊,你能看到水平線(site_row)和垂直線(cell_site),他們的數(shù)值來自于你的技術(shù)文件(*.tf),具體如下圖:


這里height定義了site_row的高度,這個(gè)數(shù)值就是你最矮的std-cell的高度(因?yàn)橛袝r(shí)候你會(huì)碰到2X/4X site_row高度的std-cell)。同樣,這里的width定義了cell_site的間距,這個(gè)數(shù)值同時(shí)也是你的工藝?yán)镞厓蓷l相鄰poly之間的距離。有時(shí)候,在同一種工藝?yán)镞叄胁煌腡ile unit定義,tile越大,cell的性能越好,但是漏電也大。icc/icc2也支持mix-tile的設(shè)計(jì),在一個(gè)芯片中,對(duì)性能要求高的模塊是很有用處的。

下圖是site_row/cell_sie在die邊界的情況,很明顯可以看到,所有的site_row/cell_site只存在于core區(qū)域內(nèi),這就是為什么,工具只能把std-cell放置到core區(qū)域內(nèi)的原因了。


第二步:Place terminal:這里的terminal是指,當(dāng)前模塊的頂層設(shè)計(jì)所有port的接觸點(diǎn),就是我們?cè)诜蛛x器件上所說的“管腳”。下面截圖示意了兩層水平terminal的擺放:



大家可以看到,所有的terminal都是緊貼著die boundary的,這樣才方便外界訪問本模塊。Terminal說穿了就是一些緊貼邊界的金屬,這些金屬和普通繞線的金屬是一樣的。如果是模塊級(jí)別,terminal的放置都是基于頂層push-down的結(jié)果的,因?yàn)橹挥许攲硬攀悄Kterminal的使用者。通常top-layouter會(huì)給出一個(gè)腳本文件,block只需要直接執(zhí)行就可以產(chǎn)生所有port對(duì)應(yīng)的terminal。否則的話,需要使用一些命令來控制工具的自動(dòng)放入,切記,千萬不要用手一個(gè)一個(gè)擺,很容易出錯(cuò)。

如果是full-chip,所有的terminal都是基于IO PAD的,我們會(huì)在另外的top-level篇章里邊詳細(xì)描述

這里引申出一個(gè)track的概念。同樣使用上圖,那些橫向的細(xì)線就是當(dāng)前層的track。所有的繞線層都是有track的,所有的實(shí)際繞線也都是壓著track走的。track 之間的距離,也就是這層繞線的pitch距離。在工藝上,一般把track分為prefer和none-prefer track,對(duì)應(yīng)的也就是由prefer routing和none-prefer routing。這里的示例是prefer routing的。這里是兩層的terminal,這兩層的track、pitch是一模一樣的,截圖里其實(shí)有兩層的track,這里只是被交疊蓋住了,沒有顯示出來而已。

此外,大家還可以看到一個(gè)信息,track都是壓在die的邊界上的,這個(gè)和site_row是不同的。由于所有的繞線都是基于track的,也就意味著,在core和die的加縫處,是可以走線的,但是卻不能放置std-cell的,這點(diǎn)大家要明白。

在前兩步驟里,我們要清楚三個(gè)概念;core、site_row、track。他們?nèi)齻€(gè)小伙伴是我們floorplan階段的好幫手,未來也是我們下面步驟的根基,如果你出現(xiàn)了繞線、自動(dòng)布局等問題,一定記得回過頭看來看一下這些基本的配置。

”裝修“到這里,我們先小結(jié)一下:die就是建筑外圍,core是套內(nèi)面積,site_row/track就是你們家的水路和電路,terminal就是家里的門和窗,是和外界溝通的重要渠道,這些都好了,我們要開始在套內(nèi)面積進(jìn)行優(yōu)化和布局了。

第三步:Create voltage_area:

在上一講,我們知道了輸入的時(shí)候有一個(gè)UPF文件,這里的voltage-area就是基于UPF文件里邊定義的power domain來規(guī)劃的。通常來講,本級(jí)模塊的頂層default-domain,一般都是Always-On(AO)domain,下邊的power-domain 都是Switch-off(SW)domain

這就像是我們家里的套間格局,你們家有幾個(gè)小房間,就有多少的SW power-domain,每一個(gè)power-domain對(duì)應(yīng)在物理區(qū)域里就是voltage-area,客廳、過道就是default-domain。如果外界要訪問小房間一定要經(jīng)過:大門(terminal)、客廳(AO default domain)然后再到各個(gè)小房間(SW domain)。反之亦然,這個(gè)流程也就是我們常說的數(shù)據(jù)流向問題,要認(rèn)識(shí)到這一點(diǎn),對(duì)你的floorplan的規(guī)劃會(huì)有很好的幫助。下圖是一個(gè)簡(jiǎn)單的AO, SW domain的規(guī)劃圖,信號(hào)通過terminal先進(jìn)到了AO ,然后再進(jìn)入SW。

通常情況下,按照數(shù)據(jù)流向的理論,下圖就是一個(gè)比較合適的voltage-area的規(guī)劃。


具體到各種實(shí)際情況,根據(jù)經(jīng)驗(yàn)、數(shù)據(jù)流向進(jìn)行調(diào)整有時(shí)候會(huì)很好的結(jié)果。

在工具的布局中,所有屬于同一個(gè)power domain的子模塊都會(huì)被工具放進(jìn)對(duì)應(yīng)VA所定義的區(qū)域,所以VA的布局直接決定了整個(gè)floorplan的大方向,做floorplan的時(shí)候,需要清楚各個(gè)power domain 的相對(duì)數(shù)據(jù)流關(guān)系,以方便自己構(gòu)建合適的VA。

套間也布置好了,下面就該 家具、家電進(jìn)場(chǎng)了。

第四步:Macro placement :

如果說VA決定了floorplan的大方向,那么Macro placement 是決定了具體std-cell的擺放,由于工具的算法永遠(yuǎn)都是timing driven的,macro 位置定了,工具會(huì)測(cè)算相關(guān)std-cell邏輯,然后會(huì)根據(jù)TNS/DRC等因素來放置相關(guān)的std-cell。同樣VA,terminal的位置,也會(huì)影響std-cell的自動(dòng)放置。


依據(jù)上圖,這里分三種典型情況來做一說明

A: 屬于AO domain的macro:要盡量放到邊界上,預(yù)留出port access的區(qū)域。中大型模塊,interface的port都會(huì)很多,要流出足夠空間來terminal 繞線,其次,不能擋在VA的邊界,這樣會(huì)引起AOSW的交互。

B: 在同一個(gè)domain下的macro,要按照功能、層級(jí)擺放。同樣功能的擺到一起,例如ram放到一塊,rom放到一起;還有就是同樣logical memory放到一起。一般的邏輯memory的容量都很大,具體實(shí)現(xiàn)時(shí),會(huì)有很多物理的memory cell,如果他們都是屬于同一個(gè)邏輯下的,所以要放到一起。

C: 多列macro的擺放:C類型的macro陣列的橫向長(zhǎng)度很長(zhǎng)(見陰影區(qū)域),所以這個(gè)時(shí)候,相鄰macro的中間應(yīng)該預(yù)留一些放置buffer的位置,用于buffer tree、cts 的構(gòu)建,這樣的做法對(duì)clock  skew、timing、logical DRC都有好處。

Macro陣列規(guī)劃:大家來注意如下兩個(gè)macro陣列規(guī)劃的選擇:



陣列一:所有的macro都盡量擺成了一個(gè)正方形

陣列二:所有的macro都順著長(zhǎng)邊分布。

在陣列布局中,第一我們要把macro盡量放到va的邊界,這點(diǎn)比較好理解,沒有人會(huì)把大衣柜放在我是中間吧,這兩個(gè)例子都滿足。

除此之外,剩下留給std-cell布局的區(qū)域,應(yīng)該是盡量趨近于正方形的,這是因?yàn)椋蟛糠止に嚨臋M向、縱向繞線資源是對(duì)等的,所以正方形應(yīng)該是一個(gè)比較平衡的選擇。所以這里的陣列一是一個(gè)相對(duì)正確的選擇。

如果你的工藝在繞線資源上有特殊性,你需要依照具體的要求來規(guī)劃std-cell的可用區(qū)域。

整個(gè)floorplan的大體步驟就是這樣,由于這個(gè)環(huán)節(jié)很重要,任何細(xì)節(jié)都胡以蝴蝶效應(yīng)的方式存在于整個(gè)流程中,一定要充分思考。

Floorplan的規(guī)劃,是要基于工藝、物理的考量;更要兼顧設(shè)計(jì)需求;同時(shí)也要熟悉工具的特點(diǎn)的一個(gè)復(fù)合性工作。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉