萬事皆有頭 之版圖實現(xiàn)第一步:import
掃描二維碼
隨時隨地手機看文章
版圖工具向來都是各家EDA大廠的必爭之地,畢竟一個要賣3M US$??!小艾從開始使用的Apollo, Astro, blastfusion、 talus 直到現(xiàn)的icc/icc2工具。整個業(yè)界的版圖工具數(shù)量呈現(xiàn)一個收斂的狀態(tài),就像EDA公司一樣,像高度聚合方向發(fā)展。事實證明,以前那種百花齊放的日子已經(jīng)不復反了,只有真正的資本大鱷才可以在金山銀水里屹立不倒。畢竟開發(fā)layout工具真心費錢??!
經(jīng)過不斷地演進,現(xiàn)在在IC的芯片版圖市場就剩下了兩家獨大的局面:Synopsys 的 icc/icc2和Cadence 的Innovus,不論使用哪種工具,大致的版圖實現(xiàn)流程都是相似的,因為知識,都是增量式發(fā)展的。從流程講,一般都無外乎以下幾大步驟
具體對應每個步驟的工作目標,見下表
基于前邊講過的內(nèi)容(錯過的同學可以回顧一下),后端的工作的數(shù)據(jù)量是非常龐大的,動輒就是一百多萬的器件數(shù)量,和幾百萬的連線關系,工具這時候就會幫助用戶來完成這些復雜的工作,但是,這些都是基于用戶的指導和干預的。所以我們每一步做好使用腳本來做調(diào)測和回放。
APR的全稱就是 Auto Place andRoute (自動布局布線),我們基于工具提供的命令接口、選項、配置來操作,這些都是工具細節(jié),更重要的是我們要知道我們的每一步驟的目地,要保證結(jié)果,我們就必須保證每一步驟的結(jié)果是收斂的,這點很重要,很多同學問小艾,問什么我的layout結(jié)果的timing不好,short太多,不好修,怎么重繞,怎么ECO都不能short問題。用蝴蝶效應來比喻版圖工具是最恰當不過了,任何一點改變和變化都可能引起大的變化。作為一個后端工程師,一定要多自己的數(shù)據(jù)庫有認識:你的版圖的特點是什么?你的瓶頸是什么?怎么方向的調(diào)整是可以導致你的數(shù)據(jù)收斂?等等這些。始終銘記:只有你自己,才是最了解你的模塊的。
如果你跟著小艾,一步步來,后端的工作其實也是容易的,只要我們每次都能保證數(shù)據(jù)朝著我們期望的方向發(fā)展和收斂,你一定會事半功倍的。
俗話說的好,好習慣能養(yǎng)人。OK ,跟著小艾一起,來開啟一段職業(yè)的工程師旅途吧!
今天就來講講第一步:數(shù)據(jù)的導入和初始化
這個步驟可能是所有步驟里邊最快的,可能也是最容易被忽視的。從小艾的經(jīng)驗來看,這一步驟其實是要好好注意的,常言說得好,萬事開頭難?。?/span>
1: 對于輸入量的檢查:
做過綜合的人一般都知道,綜合的結(jié)果一般都不是非常真實的,但不真實并不代表虛假,首先,我們需要嚴格檢查輸入數(shù)據(jù)庫的QoR,以下幾個檢查點是需要layout工程師仔細注意的:
A: timing 的QoR: 在所有的綜合數(shù)據(jù)庫里邊,所有的clock都是ideal的,無論綜合器是不是帶floorplan信息,都要關注綜合器的setup timing結(jié)果,因為setup timing 是跟頻率相關的,能不能跑到某個頻率,都可以在綜合這邊看到一些端倪。加之clock是ideal的,綜合數(shù)據(jù)庫里邊數(shù)據(jù)通路(datapath)上的時延就決定了這個數(shù)據(jù)庫的timing的結(jié)果。至于interface timing 問題,可以先在這里的檢查里忽略掉,具體后面或說到。
B: 綜的check_timing check 的報告。這個報告里邊包含了所有綜合器對design的timing相關的檢查結(jié)果。這里需要說的是unconstrained_endpoints的結(jié)果要看好一下,這里列出來的店都是沒有被時鐘約束的點,這會導致工具在整個優(yōu)化過程中忽略這個點的優(yōu)化,所有的這類問題都要在這里解決或者確認,如果遺留到后邊都是很危險的。所有的timing loop也要和前端的同學確認一下,看看需不需要改code來打斷l(xiāng)oop。
C: 等效性檢查(EC),開始layout工作的時候,一定要拿到這個結(jié)果,如果EC的run time 比較久,我們可以并行做,但是一定要拿到結(jié)果來決定下部不怎么走,給予一個錯誤的網(wǎng)表是不能往下做的。
D: 面積信息:綜合器的報告會有面積信息,后端工程師需要關注的有:
D1: macro/memory 的數(shù)量和面積的信息,如果是第一版layout,這個信息心里有個數(shù)就好了,floorplan的時候會真正的使用他們。如果是第n版,一定要留意下,每一版本的變化,任何變化應該都要和前端或者綜合的同學確認一下,因為,這些邊的變化都會影響到已有的macro placement,算是版圖的大變化了,必須要提前聲明和確認
D2: std-cell的面積和類型,
如果面積變化很大,設計又沒怎么變,要小心看一下,可能綜合的QoR在某些方面有意外。面積變化大,也意味著layout的壓力變大,這里也需要好好和前端人確認。
如果buffer/inverter變化很多,最好看一下timingpath,是不是DCT輸入的floorplan的不是layouter期望的
E UPF,現(xiàn)在的設計都是支持UPF流程的,如果你有UPF作為輸入量,那你一定要有對應的voltage來設定你的library,在輸入結(jié)束時,一定要看一下你的check_mv的報告,每一個error都要看一下,這里邊的問題一般都會導致place無法繼續(xù)等和星結(jié)果,這點有時候很讓人頭疼。為了后邊的QoR,所以小艾建議,這里一點更要檢查一下UPF的質(zhì)量
F 時序約束的讀入(sdc):一般來講,layout需要讀入SDC格式的時序約束文件來約束timing,但有時候會有很多error和warning,小艾建議大家把這個過程導出為report,單獨過一下,任何文件格式、版本問題可能會導致整個的數(shù)據(jù)庫無法被正確使用,盡管綜合的check_timing 結(jié)果是正常的,但是layou由于讀入原因,無法復現(xiàn)synthesis的結(jié)果是很遺憾的
在確認了數(shù)據(jù)的質(zhì)量后,我們要開始設定一些初始環(huán)境來支持這套導入他們了:
A: 庫(library)的準備:library 一般分為兩個,
timing library: 可以和綜合保持一致,除非layout需要額外的corner,scenarios
physical library: 每一個實體的cell必須要有physicallibrary,一個cell都沒有形狀,你怎么用啊!就是這樣滴!
不過在icc2工具里邊,已經(jīng)將上邊兩個大神合二為一了,這下子我們就更容易了。
B: 技術文件(technology file ): 這個文件定義了你所用的工藝里邊的相關物理信息:版層、VIA定義,繞線方向、unit tile等等,你的模塊庫創(chuàng)建的時候一定要用到這個文件,否則你會和別人做出來的不一樣。雖然這種情況不常發(fā)生,但小艾在工作中,還真的碰到過一次,導致整個數(shù)據(jù)庫無法在頂層集成使用,最后模塊只好重新做layout,帶來額外的很多工作。
C: 其他:cenarios,mcmm,derating等設定應該基于項目,這些都不用干預,留心不要漏掉就好了,因為某些scenarios是一定要在layout里打開的,否則你的STA就會差很多。





