又到周末了,下午上海開始下起了毛毛細雨,這樣的天氣小編都有點惰性了。但是自己定的周更目標仍然還是要堅持下去的,所以下午又來到星巴克碼字來了。碼字之前想起分享一份數字IC後端面試寶典給大家,這份寶典是一本書,約230頁,亞馬遜上好像是賣三百多人民幣吧,特此分享給需要的朋友。有需要的朋友可以前往小編知識星球查看下載。

另外Synopsys的各大workshop還在掃描中,預計五一過後可以不斷分享出來。為了掃描這些書籍,小編都瘦了幾斤了,沒有功勞也一定有苦勞。

懂設計本身

對於數字後端工程師來說,一般是不會去寫代碼,但必須要懂設計。比如你作為一個chip的top owner,做後端實現時你必須根據設計的data flow,各個模塊之間如何交互,各個時鐘之間的關係等信息來規劃floorplan,做好標準單元的擺放,時鐘樹綜合等工作。

如果你對設計本身不清楚,那麼你就是硬著頭皮做後端,你一定會做得很累,很痛苦。經常碰到很多工程師抱怨timing太難收斂了,繞線總是繞不開等現象。主要原因還是不懂設計,比如前端設計的時鐘結構不合理,你仍然硬著頭皮做,最後發現hold violation就是不好修,插入太多的holdbuffer,繞線又繞不通,陷入死循環。又比如placement後各個邏輯模塊位置分布跟data flow不match,導致timing怎麼都做不上去或者出現setup和hold打架(互卡)的情況。

數字IC設計實現之hold violation修復大全

懂邏輯綜合

熟悉邏輯綜合各個階段(邏輯優化,DFT等)工具都做了哪些工作,每個工作對數字後端實現可能造成的影響。

需要與前端工程師溝通,了解設計架構,時鐘電路結構,各個時鐘間的同步非同步關係,晶元的應用場景等方面。

根據設計需求編寫設計約束文件SDC並請前端設計工程師review(這個過程需要不斷與前端設計工程師不斷溝通,特別是第一次做某個新的design)。

制定掃描鏈插入方法,分配scan chain條數,確保測試覆蓋率,產生scan test pattern。

根據數字後端實現情況決定是否需要做scan chain reordering。熟悉scan chain reordering的工作機理,對hold的影響。

Scan chain reordering 怎麼用你知道嗎?

熟練掌握DCT/DCG的邏輯綜合flow,以及哪些設計需要做DCT/DCG。甚至如果你對設計和工具的行為有足夠的熟悉,完全可以用DC+DCT的混合模式來實現設計需求。

教你輕鬆調DCT和ICC之間Timing與Congestion的一致性

理解綜合工具的行為,高效率fine tune 綜合階段和布局布線階段之間的timing一致性。掌握一系列可以改善timingcorrelation的方法,比如set_max_cell_density等變數的設置,以及如何反饋PR階段的clock latency給綜合工具等等。

精通布局布線(Place&Route)

  • 工藝選擇

對於一個新工藝可以快速評估當前項目需要選用某個工藝節點的哪個metal stack,是1P7M還是1P8M?是用9Track還是12Track?這個選擇涉及到數字後端powerplan規劃,IR drop,布線階段可用的繞線資源,封裝形式,乃至整個晶元的成本。

教你徹底搞懂ARM Cortex-A75 CPU的數字後端實現報告

  • IP相關

需要根據設計需求和後端floorplan,與IP vendor溝通定製IP的形狀和orientation。這裡簡單提一下,很多工程師經常犯一個錯誤就是IP的poly orientation問題。比如vendor提供給你的是EW方向,而你做floorplan時確把它當做FN來使用(這點是致命的)。

能夠從IP Vendor提供的文件中快速提取check list。比如IP和core logic之間應該預留多少spacing,IP中某些關鍵信號對電阻的特殊要求等等。

能夠給IP規劃一個robust的powerplan。很多工程師還只是停留在將IP的power ground pin連起來,而忽視供電robust特性。小編反正每次都是將power net能畫粗點就盡量畫粗點,能形成power mesh的就盡量畫一個電阻最小的power網路。總之powerplan一定要經得起review。

數字IC後端設計實現floorplan及powerplan規劃

  • 模塊partition

chip或者block 形狀選取(矩形或者方形抑或多邊形,與design相關,關乎routing 資源)。深知各個block的難易程度,各個模塊適合用什麼類型的形狀等。

能夠根據後端實現情況,向前端提出那部分邏輯可能需要單獨做hardening。因為前端對於模塊的切分可能僅僅考慮邏輯功能方面,而後端則可以根據實現的複雜程度和難易程度,反饋可能需要單獨做PD的模塊。

根據design的data flow,合理擺放各個partition模塊的位置以及出pin位置。為了節省面積,經常還需要做信號的feedthrough,實現模塊之間無縫對接(channeless)。對於低功耗設計,可能還需要提前規劃若干個孤島,用來走某些特殊的signal或者clock。

【機密】從此沒有難做的floorplan(數字後端設計實現floorplan篇)

數字IC後端設計實現floorplan及powerplan規劃

  • chip area 估算

為IO添加core vdd &core vss以及IO vdd& IO vss。前者涉及晶元功耗的估算,後者設計SSO的計算。同時還需要考慮ESD和EM。

IO添加完成後,根據各個模塊的面積,IP的面積,IO的面積就可以大致估算是chip的面積。這裡需要指出的是,如果chip是IO limited,則可以反饋信息給PM,詢問是否可以通過IO mux來實現IO的復用,從而減少IO的數量。如果chip是core limited,則需要重點將各個子模塊的面積最到最小。

  • Timing和congestion優化

Timing優化貫穿著整個數字IC設計全過程。一個對設計比較了解的工程師,一定可以做好timing優化,它可以站在設計的角度來規劃模塊的分布。PR階段用於優化timing的一些方法如下:

使用SPG flow

使用Multi-Vt 作為target_library優化

CCD flow

create_voltage_domain, create_bounds,keepout setting,group_path等

對於設計實現中碰到的congestion問題都能快速找到root cause,從根源上解決。

  • Power優化

低功耗設計flow和方法論

掌握優化leakage和動態功耗的方法

  • 時鐘樹優化

這個階段需要後端工程師能夠自己來分析時鐘樹結構,並根據design的spec來編寫一個約束文件,引導工具 如何長時鐘樹。很多SOC中,時鐘都有幾百個。由於PLL的個數有限,因此很多設計都有時鐘選擇和切換電路。因此,針對複雜的時鐘結構,工具可能很難做到符合我們預期的時鐘樹(clock skew 和clock latency)。

很多數字後端工程師經常擔心自己的工作會被工具所替代,其實大可不必。有這方面擔憂的朋友可能做的是假後端,可能僅僅停留在run flow這個層次。小編從來沒碰到過工具能把複雜模塊的cts自動做好的,人為干預的東西真的是不要太多了。難道你們不覺得工具真的很笨嗎?

這步非常關鍵且非常重要,也是衡量一個數字後端工程師能力的重要指標。主要工作如下:

clock tree building constraint的編寫

長時鐘樹需要設置的timing drc等

時鐘樹用於長tree的buffer或者inverter種類選擇

時鐘樹的ECO

設定clock net 的non-default rule

如何做shielding,對哪些net可以做shielding,影響是什麼

如何成為時鐘樹綜合專家?原來你也可以!

  • 繞線和串擾

熟練掌握fix short的方法

理解SI產生的原理和避免SI的方法

理解SI和noise的區別(見知識星球上解析

  • 精通Function ECO

不論是pre-mask或者是post-mask,都可以高效完成設計所需的FunctionECO。這裡涉及ECO所能動用的layer,是通過用ECO cell還是spare cell來實現,ECO後的timing fixing,LVL比較,利用ECO CELL和Space CELL做function eco各自的優缺點等。

  • IR Drop分析和優化

精通IR Drop分析和優化包括靜態和動態IR Drop分析。對一個chip分析IR drop後還需要對其進行優化。對於基於Redhawk的IR Drop分析flow之前已經在知識星球上分享過。IR drop優化的方法也分享過無數次了。

IR Drop分析之Redhawk分析流程

數字IC設計後端實現前期預防IR Drop的方法匯總

  • 理解工具

工具一定不是萬能的,bug也是無處不在,但是如果你能將工具的長處用的淋漓盡致,那麼你一定會喜歡上它的。一方面資深的後端工程師懂得工具的局限性,工作時盡量避免工具進入此工作模式,不掉入「陷阱」中。另外一方面對工具的行為有比較透徹的理解,可以利用工具為我們所用,可以利用它的特性來guide工具實現我們的需求。

精通時序分析和timing signoff

時序分析和timing sigoff這步,很多數字後端工程師也都做了。但是你是否是拿著現有的flow跑下primetime,然後就開始你的leakage optimization,hold violation fixing 和timing drc的fixing?這個能力是每個數字後端工程師都必須具備的,但是仍然遠遠不夠。你需要搞清楚以下幾點:

signoff的標準,如何定?(特別是一個新的工藝)

如何優化leakage優化的flow,使得leakage最小化?

如何少插hold buffer?

遇到hold buffer修不進去,如何解決?

數字IC設計中ECO的那些事,其實並不是事!

精通物理驗證

這步屬於physical signoff階段。主要為DRC,LVS,ERC,ESD,Latch up 等方面的檢查和修正。在先進工藝節點中,physical vertification顯得更為重要。

LVS 就是這麼簡單!(數字後端物理驗證篇)

精通腳本語言

腳本能力強,至少掌握一種及以上腳本語言(TCL,perl,python等)。至於哪種語言不重要,關鍵是要學會一門語言並且能夠熟練運用。

涉面廣且有專長

面廣就比如本篇所列到甚至更多方面你都比較熟練。專長是指你至少要在某個領域有深入的研究而且做的要比別人好,比如擅長做高頻率的模塊實現,或者擅長physical方面(powerplan,DRC ,LVS等),抑或擅長寫腳本,能夠寫一個timing engine出來。

流程自動化

將整個實現flow(從綜合到物理驗證)調好後,一旦rtl ready後可以自動一鍵實現從RTL到物理驗證(較少的DRC)。

好了,今天關於數字IC後端專家基本技能的分享就到這裡。今天小編羅列的數字IC後端專家具備的這些技能,大概有90%的內容都是之前分享過的(公眾號和知識星球上)。因此,如果小編公眾號上和知識星球上的分享你都認真看過,搞懂了,那麼你離數字IC後端專家還遠嗎?

小編知識星球簡介(如果你渴望進步,期望高薪,喜歡交流,歡迎加入):

在這裡,目前已經規劃並正著手做的事情:

  • ICC/ICC2 lab的編寫
  • 基於ARM CPU的後端實現流程
  • 利用ICC中CCD(Concurrent Clock Data)實現高性能模塊的設計實現
  • 基於ARM 四核CPU 數字後端Hierarchical Flow 實現教程
  • 時鐘樹結構分析
  • 低功耗設計實現定期將項目中碰到的問題以案例的形式做技術分享

在這裡,各位可以就公眾號推文的內容或者實際項目中遇到的難題提問,小編會在24小時內給予解答(也可以發表你對數字後端設計實現中某個知識點的看法,項目中遇到的難點,困惑或者職業發展規劃等)。

反正它是一個縮減版的論壇,增強了大家的互動性。更為重要的是,微信有知識星球的小程序入口。星球二維碼如下,可以掃描或者長按識別二維碼進入。目前已經有176位星球成員,感謝這176位童鞋的支持!歡迎各位渴望進步,期望高薪的鐵杆粉絲加入!終極目標是打造實現本知識星球全員年薪百萬的宏偉目標。(星友人數超過200人後星球的門票即將調整到228元/年,有需求的朋友趁早上車,目前價格是208元/年,折算每天需要六毛錢

很久沒放出公眾號鏈接了,很多芯朋友表示找不到關注入口。趕緊掃碼或者長按圖片關注起來吧!(小編微信:ic-backend2018)如果需要進數字IC後端技術交流群,可以添加小編微信,邀請入群。

推薦閱讀:

相关文章