數(shù)字IC后端工程師是做什么的?
數(shù)字IC后端工程師主要職責(zé)是把數(shù)字IC前端工程師寫的邏輯功能RTL轉(zhuǎn)變成物理實際連線GDS版圖。這個過程的本質(zhì)是基于一定的時序約束和物理約束將設(shè)計的邏輯功能等價轉(zhuǎn)變成物理連接。因為這個GDS最后是要提交給foundary進(jìn)行芯片加工制作的,光刻機(jī)無法識別邏輯功能,它只認(rèn)一層層的物理實際連接。
以上面反相器為例,左側(cè)為電路圖,右側(cè)為對應(yīng)的版圖GDS。實際芯片的電路圖是一個比較復(fù)雜的設(shè)計,我們的目的就是把復(fù)雜的原理圖變成等價的物理版圖GDS。
物理版圖以GDSII的文件格式交給臺積電這樣的芯片代工廠,在晶圓硅片上做出實際的電路,再進(jìn)行封裝和測試,就得到了我們實際看見的芯片。
只不過在做等價轉(zhuǎn)換的過程,我們需要既要確保時序(setup,hold,transition)符合foundary規(guī)定的signoff要求,也要確保我們畫出來的物理版圖GDS的金屬和base layer連接符合foundary工藝制作的規(guī)則。因為時序不滿足芯片的性能無法保證,設(shè)計規(guī)則不滿足foundary加工制作可能會出現(xiàn)錯誤,比如不同的兩條連線搭在一起做成一條線了。
行業(yè)入門定義
經(jīng)常也有小伙伴們說我已經(jīng)入門了,但只會跑flow,點下runall就結(jié)束了,不知道如何看log和report。其實這種情況并非真的入門了。
那要達(dá)到什么樣的狀態(tài)才是真的進(jìn)入數(shù)字IC后端實現(xiàn)的大門呢?小編從自己的角度給出以下幾個指標(biāo),大家可以自己評估下。
1了解數(shù)字IC后端實現(xiàn)中的各種基本概念
基本概念訓(xùn)練營上都有。遇到一些不太理解的概念,大家可以提問。這些概念面試時經(jīng)常會被問到。
2 熟悉整個數(shù)字IC后端實現(xiàn)流程(從PR到PV)
我們的訓(xùn)練營包含了整個全流程。從綜合后的netlist一直到物理驗證的DRC和LVS clean。在公司實際項目,我們做完這些后是可以直接拿著GDS去流片的(Tapeout)。先從理論上了解整個設(shè)計流程,了解每個流程都是做什么工作。然后結(jié)合我們服務(wù)器上的flow,邊做邊理解,對flow中的主要命令爭取做到知道它們的內(nèi)涵。
3 熟悉各個階段的步驟及意義
我們也提供了數(shù)字IC后端設(shè)計實現(xiàn)ICC2和Innovus每個階段的log解讀,建議大家結(jié)合這個來了解學(xué)習(xí)每個步驟都包含哪些內(nèi)容,以及思考為何工具要這么做。
4 熟悉看懂timing report
雖然說數(shù)字IC后端工程師更側(cè)重physical實現(xiàn),但必須要有時序timing的基礎(chǔ),遇到數(shù)字IC后端實現(xiàn)過程中遇到的時序問題,要學(xué)會分析問題,找到root cause并解決掉問題。
對于timing report的解讀我們也有相關(guān)的教程。這個必須學(xué)會看。反正一點都不難。
5 熟悉Timing/Congestion/Route的基本優(yōu)化方法
這個訓(xùn)練營上也有很多教程和專題案例闡述這些主題。建議好好理解下這些文檔。每個主題都包含了一系列的知識點以及實戰(zhàn)經(jīng)驗總結(jié)。剛好這些都是面試要被問到的。
如果在面試過程中能與面試官分享我們的這些方法,那拿個speical offer一點問題都沒有。講真,只要你認(rèn)真學(xué)習(xí)研究我們訓(xùn)練營中任意一個案例專題分享,面試過程把這個技能展現(xiàn)出來,今年的offer至少是40萬+(上海數(shù)字中后端崗)。
6 會編寫簡單TCL腳本
數(shù)字IC后端訓(xùn)練營也提供一些TCL腳本。比如關(guān)于模塊面積估算等腳本,可以拿來學(xué)習(xí)下。小編知識星球提供了無數(shù)個實際項目的應(yīng)用腳本,隨便拿出一個腳本來練習(xí)即可。0基礎(chǔ)只要掌握一些很基本的TCL寫法就可以。
學(xué)習(xí)腳本核心要點:多看,多抄,多寫?。ù髮W(xué)階段都有抄作業(yè)的經(jīng)歷吧,照著來就對了?。?/p>
7 獨立完成簡單block的整個實現(xiàn)流程
0基礎(chǔ)建議優(yōu)先選擇Innovus flow。Innovus的GUI界面做的比較好。對于一些初學(xué)者來說,往往他們喜歡通過界面的操作方式來學(xué)習(xí)和做項目。而ICC2在這方面做的確實沒有Innovus好。因為很多腳本命令在GUI中是找不到的,而且即便有的有對應(yīng)界面操作,但是選項一大堆,無法無腦操作。
整個數(shù)字IC后端設(shè)計實現(xiàn)PR flow是為了做出一個符合timing signoff和physical signoff標(biāo)準(zhǔn)的數(shù)據(jù)。其中timing signoff包含setup time,hold time,removal,recovery,max transition,max cap等都要符合設(shè)計的spec。
比如我們IC訓(xùn)練營項目要求頻率至少跑到900MHz,timing drv要滿足TSMC的timing signoff要求。
而physical signoff主要是包含DRC,LVS和IR Drop等方面,要求它們都要clean并符合signoff要求。
為了達(dá)到這些目的就需要在PR階段能夠盡量讓工具自動來幫我們實現(xiàn)這些目的。這些事情就是PR flow要做的事情。當(dāng)然工具畢竟還是機(jī)器,它不了解我們的設(shè)計,肯定無法滿足我們的所有需求。但工具本身的功能是很強(qiáng)大的,因此我們需要在flow中引導(dǎo)工具來實現(xiàn)我們所需要的效果。
比如某個局部區(qū)域有high pin density的cell,我們可以人為給這個區(qū)域的這類cell加cell padding來改善消除local congestion。
手把手教你如何在Innovus中解決local congestion問題
比如route后發(fā)現(xiàn)DRC有很多,經(jīng)過分析后發(fā)現(xiàn)是cell density太高導(dǎo)致的,那我們可以適當(dāng)擴(kuò)點面積,重新跑flow做優(yōu)化。而面積夠不夠這個工具并不會直接告訴你,而是需要大家借助工具的一堆report和其他經(jīng)驗來做判斷的。
比如工具默認(rèn)是按照時鐘來劃分timing group的,往往優(yōu)化出來的timing不是很理想。如果我們把這些group做細(xì)化,劃分成很多timing group,并給每個group添加不同的effort來進(jìn)一步優(yōu)化改善時序。
比如某個階段timing突然變差很多,工具也僅僅會輸出一個timing report。它并不會幫你去分析每個階段間timing的差異性,更不會直接打印一些關(guān)于如何來優(yōu)化timing的建議信息。這個分析需要工程師自己去分析,然后再把一些改進(jìn)的方法加入到flow中。
比如之前分享的ctsopt后timing突然變差的案例,其實就是工具默認(rèn)采用了useful skew導(dǎo)致的。如果分析到是這個原因?qū)е碌?,我們就可以通過optMode的設(shè)置來告訴工具不要有這樣的行為,從而解決掉這個問題。
數(shù)字IC后端工程師崗位所需IC技能樹
1懂設(shè)計本身
對于數(shù)字后端工程師來說,一般是不會去寫代碼,但必須要懂設(shè)計。比如你作為一個chip的top owner,做后端實現(xiàn)時你必須根據(jù)設(shè)計的data flow,各個模塊之間如何交互,各個時鐘之間的關(guān)系等信息來規(guī)劃floorplan,做好標(biāo)準(zhǔn)單元的擺放,時鐘樹綜合等工作。
如果你對設(shè)計本身不清楚,那么你就是硬著頭皮做數(shù)字IC后端,你一定會做得很累,很痛苦。經(jīng)常碰到很多工程師抱怨timing太難收斂了,繞線總是繞不開等現(xiàn)象。主要原因還是不懂設(shè)計,比如前端設(shè)計的時鐘結(jié)構(gòu)不合理,你仍然硬著頭皮做,最后發(fā)現(xiàn)hold violation就是不好修,插入太多的holdbuffer,繞線又繞不通,陷入死循環(huán)。又比如placement后各個邏輯模塊位置分布跟data flow不match,導(dǎo)致timing怎么都做不上去或者出現(xiàn)setup和hold打架(互卡)的情況。
2 懂邏輯綜合
熟悉邏輯綜合各個階段(邏輯優(yōu)化,DFT等)工具都做了哪些工作,每個工作對數(shù)字后端實現(xiàn)可能造成的影響。
需要與前端工程師溝通,了解設(shè)計架構(gòu),時鐘電路結(jié)構(gòu),各個時鐘間的同步異步關(guān)系,芯片的應(yīng)用場景等方面。
根據(jù)設(shè)計需求編寫設(shè)計約束文件SDC并請前端設(shè)計工程師review(這個過程需要不斷與前端設(shè)計工程師不斷溝通,特別是第一次做某個新的design)。
制定掃描鏈插入方法,分配scan chain條數(shù),確保測試覆蓋率,產(chǎn)生scan test pattern。
根據(jù)數(shù)字后端實現(xiàn)情況決定是否需要做scan chain reordering。熟悉scan chain reordering的工作機(jī)理,對hold的影響。
熟練掌握DCT/DCG的邏輯綜合flow,以及哪些設(shè)計需要做DCT/DCG。甚至如果你對設(shè)計和工具的行為有足夠的熟悉,完全可以用DC+DCT的混合模式來實現(xiàn)設(shè)計需求。
理解綜合工具的行為,高效率fine tune 綜合階段和布局布線階段之間的timing一致性。掌握一系列可以改善timingcorrelation的方法,比如set_max_cell_density等變量的設(shè)置,以及如何反饋PR階段的clock latency給綜合工具等等。
3 精通布局布線(Place&Route)
工藝選擇
對于一個新工藝可以快速評估當(dāng)前項目需要選用某個工藝節(jié)點的哪個metal stack,是1P7M還是1P8M?是用9Track還是12Track?這個選擇涉及到數(shù)字后端powerplan規(guī)劃,IR drop,布線階段可用的繞線資源,封裝形式,乃至整個芯片的成本。
IP相關(guān)
需要根據(jù)設(shè)計需求和后端floorplan,與IP vendor溝通定制IP的形狀和orientation。這里簡單提一下,很多工程師經(jīng)常犯一個錯誤就是IP的poly orientation問題。比如vendor提供給你的是EW方向,而你做floorplan時確把它當(dāng)做FN來使用(這點是致命的)。
能夠從IP Vendor提供的文件中快速提取check list。比如IP和core logic之間應(yīng)該預(yù)留多少spacing,IP中某些關(guān)鍵信號對電阻的特殊要求等等。
能夠給IP規(guī)劃一個robust的powerplan。很多工程師還只是停留在將IP的power ground pin連起來,而忽視供電robust特性。小編反正每次都是將power net能畫粗點就盡量畫粗點,能形成power mesh的就盡量畫一個電阻最小的power網(wǎng)絡(luò)??傊畃owerplan一定要經(jīng)得起review。
模塊partition
chip或者block 形狀選取(矩形或者方形抑或多邊形,與design相關(guān),關(guān)乎routing 資源)。深知各個block的難易程度,各個模塊適合用什么類型的形狀等。
能夠根據(jù)數(shù)字IC后端實現(xiàn)情況,向前端提出那部分邏輯可能需要單獨做hardening。因為前端對于模塊的切分可能僅僅考慮邏輯功能方面,而后端則可以根據(jù)實現(xiàn)的復(fù)雜程度和難易程度,反饋可能需要單獨做PD的模塊。
根據(jù)design的data flow,合理擺放各個partition模塊的位置以及出pin位置。為了節(jié)省面積,經(jīng)常還需要做信號的feedthrough,實現(xiàn)模塊之間無縫對接(channeless)。對于低功耗設(shè)計,可能還需要提前規(guī)劃若干個孤島,用來走某些特殊的signal或者clock。
chip area面積 估算
為IO添加core vdd &core vss以及IO vdd& IO vss。前者涉及芯片功耗的估算,后者設(shè)計SSO的計算。同時還需要考慮ESD和EM。
IO添加完成后,根據(jù)各個模塊的面積,IP的面積,IO的面積就可以大致估算是chip的面積。這里需要指出的是,如果chip是IO limited,則可以反饋信息給PM,詢問是否可以通過IO mux來實現(xiàn)IO的復(fù)用,從而減少IO的數(shù)量。如果chip是core limited,則需要重點將各個子模塊的面積最到最小。
Timing,功耗Power,面積,congestion優(yōu)化
Timing優(yōu)化貫穿著整個數(shù)字IC設(shè)計全過程。一個對設(shè)計比較了解的工程師,一定可以做好timing優(yōu)化,它可以站在設(shè)計的角度來規(guī)劃模塊的分布。PR數(shù)字IC后端實現(xiàn)階段用于優(yōu)化timing的一些方法如下:
使用SPG flow
使用Multi-Vt 作為target_library優(yōu)化
CCD flow
create_voltage_domain, create_bounds,keepout setting,group_path等
對于設(shè)計實現(xiàn)中碰到的congestion問題都能快速找到root cause,從根源上解決。
Power功耗優(yōu)化
低功耗設(shè)計flow和方法論
掌握優(yōu)化leakage和動態(tài)功耗的方法
時鐘樹優(yōu)化
這個階段需要數(shù)字IC后端工程師能夠自己來分析時鐘樹結(jié)構(gòu),并根據(jù)design的spec來編寫一個約束文件,引導(dǎo)工具 如何長時鐘樹。很多SOC中,時鐘都有幾百個。由于PLL的個數(shù)有限,因此很多設(shè)計都有時鐘選擇和切換電路。因此,針對復(fù)雜的時鐘結(jié)構(gòu),工具可能很難做到符合我們預(yù)期的時鐘樹(clock skew 和clock latency)。
很多數(shù)字后端工程師經(jīng)常擔(dān)心自己的工作會被工具所替代,其實大可不必。有這方面擔(dān)憂的朋友可能做的是假后端,可能僅僅停留在run flow這個層次。小編從來沒碰到過工具能把復(fù)雜模塊的cts自動做好的,人為干預(yù)的東西真的是不要太多了。難道你們不覺得工具真的很笨嗎?
這步非常關(guān)鍵且非常重要,也是衡量一個數(shù)字后端工程師能力的重要指標(biāo)。主要工作如下:
clock tree building constraint的編寫
長時鐘樹需要設(shè)置的timing drc等
時鐘樹用于長tree的buffer或者inverter種類選擇
時鐘樹的ECO
設(shè)定clock net 的non-default rule
如何做shielding,對哪些net可以做shielding,影響是什么
繞線和串?dāng)_SI
熟練掌握fix short的方法
理解SI產(chǎn)生的原理和避免SI的方法
理解SI和noise的區(qū)別(見知識星球上解析)
4精通Function ECO
不論是pre-mask或者是post-mask,都可以高效完成設(shè)計所需的FunctionECO。這里涉及ECO所能動用的layer,是通過用ECO cell還是spare cell來實現(xiàn),ECO后的timing fixing,LVL比較,利用ECO CELL和Space CELL做function eco各自的優(yōu)缺點等。
5 IR Drop分析和優(yōu)化
精通IR Drop分析和優(yōu)化包括靜態(tài)和動態(tài)IR Drop分析。對一個chip分析IR drop后還需要對其進(jìn)行優(yōu)化。對于基于Redhawk的IR Drop分析flow之前已經(jīng)在知識星球上分享過。IR drop優(yōu)化的方法也分享過無數(shù)次了。
IR Drop分析之Redhawk分析流程
數(shù)字IC設(shè)計后端實現(xiàn)前期預(yù)防IR Drop的方法匯總
6 理解各大EDA工具
工具一定不是萬能的,bug也是無處不在,但是如果你能將工具的長處用的淋漓盡致,那么你一定會喜歡上它的。一方面資深的后端工程師懂得工具的局限性,工作時盡量避免工具進(jìn)入此工作模式,不掉入“陷阱”中。另外一方面對工具的行為有比較透徹的理解,可以利用工具為我們所用,可以利用它的特性來guide工具實現(xiàn)我們的需求。
7 精通時序分析和timing signoff
時序分析和timing sigoff這步,很多數(shù)字IC后端工程師也都做了。但是你是否是拿著現(xiàn)有的flow跑下primetime,然后就開始你的leakage optimization,hold violation fixing 和timing drc的fixing?這個能力是每個數(shù)字后端工程師都必須具備的,但是仍然遠(yuǎn)遠(yuǎn)不夠。你需要搞清楚以下幾點:
signoff的標(biāo)準(zhǔn),如何定?(特別是一個新的工藝)
如何優(yōu)化leakage優(yōu)化的flow,使得leakage最小化?
如何少插hold buffer?
遇到hold buffer修不進(jìn)去,如何解決?
數(shù)字IC設(shè)計中ECO的那些事,其實并不是事!
8 精通物理驗證
這步屬于數(shù)字IC設(shè)計中的physical signoff階段。主要為DRC,LVS,ERC,ESD,Latch up 等方面的檢查和修正。在先進(jìn)工藝節(jié)點中,physical vertification顯得更為重要。
LVS 就是這么簡單?。〝?shù)字后端物理驗證篇)
9 精通腳本語言
腳本能力強(qiáng),至少掌握一種及以上腳本語言(TCL,perl,python等)。至于哪種語言不重要,關(guān)鍵是要學(xué)會一門語言并且能夠熟練運用。
9 涉面廣且有專長
面廣就比如本篇所列到甚至更多方面你都比較熟練。專長是指你至少要在某個領(lǐng)域有深入的研究而且做的要比別人好,比如擅長做高頻率的模塊實現(xiàn),或者擅長physical方面(powerplan,DRC ,LVS等),抑或擅長寫腳本,能夠?qū)懸粋€timing engine出來。
10流程自動化
將整個實現(xiàn)flow(從綜合到物理驗證)調(diào)好后,一旦rtl ready后可以自動一鍵實現(xiàn)從RTL到物理驗證(較少的DRC)。
數(shù)字IC后端設(shè)計書籍推薦(數(shù)字IC后端學(xué)習(xí)資料)
吾愛IC社區(qū)小編作為一線12年數(shù)字IC后端工程師,今天推薦幾本數(shù)字IC后端相關(guān)書籍給大家。每本書都有電子版本,有需要可以找小編免費領(lǐng)取。
數(shù)字集成電路物理設(shè)計
高級ASIC芯片綜合
靜態(tài)時序分析STA經(jīng)典紅寶書中文版
集成電路靜態(tài)時序分析與建模
低功耗設(shè)計方法論Methodology
文章來源:http://www.zghlxwxcb.cn/news/detail-808241.html
數(shù)字IC后端設(shè)計實現(xiàn)培訓(xùn)視頻免費觀看下載
吾愛IC數(shù)字后端訓(xùn)練營文章來源地址http://www.zghlxwxcb.cn/news/detail-808241.html
到了這里,關(guān)于數(shù)字IC后端設(shè)計如何從零基礎(chǔ)快速入門?(內(nèi)附數(shù)字IC后端學(xué)習(xí)視頻)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!