flow可以簡(jiǎn)單的理解為“流程”,但在不同的芯片設(shè)計(jì)公司,不同的設(shè)計(jì)階段,流程又千變?nèi)f化,不盡相同。
對(duì)于工程師來講,入職一家公司以后,要盡快從同事那搞到“flow notes”,也就是平時(shí)的記錄的flow筆記或者說明,以便快速上手。
芯片設(shè)計(jì)中的“跑flow”意味著按照這一系列既定的流程進(jìn)行設(shè)計(jì)工作,每個(gè)階段都有相應(yīng)的設(shè)計(jì)工具和方法學(xué)支持,以保證設(shè)計(jì)的高效和準(zhǔn)確性。Flow工程師則負(fù)責(zé),建設(shè)、維護(hù)和優(yōu)化這一流程,確保設(shè)計(jì)團(tuán)隊(duì)能夠高效地完成芯片設(shè)計(jì)項(xiàng)目。
好像看了以上,外行人還是沒有很懂,那我舉個(gè)例子好了,我們把設(shè)計(jì)一款芯片比作做一道菜:青椒土豆絲,那么問題就來了:
土豆絲的粗細(xì)要做到什么程度?
先下油、再熱鍋,還是先熱鍋,下油?
蔥姜蒜爆鍋爆多久?
先下青椒,還是先下土豆絲?
什么時(shí)候放鹽?什么時(shí)候放雞精?
炒至什么時(shí)候出鍋?
......
每一個(gè)環(huán)節(jié)有細(xì)微的差別,都會(huì)導(dǎo)致做出來的青椒土豆絲口味不同,同樣,不同流程做下來的芯片,PPA和本身的質(zhì)量上也會(huì)有差別。
而flow的存在,在一定程度上實(shí)現(xiàn)了設(shè)計(jì)的標(biāo)準(zhǔn)化、高效性和準(zhǔn)確性,以上所有的步驟,都要通過用腳本搭建的flow約束住。如果哪一天發(fā)現(xiàn)flow工具在某一corner case下支持的不夠好,就要flow工程師去更新flow,一般flow都是通過makefile、perl、TCL這些語言搭建起來的。
芯片工程師的一大特點(diǎn)就是【懶】,一個(gè)好的flow應(yīng)該會(huì)自己跑,所以很多時(shí)候,芯片設(shè)計(jì)工程師或者flow工程師都在想著盡可能的讓其“自動(dòng)化”,最好是有了芯片的spec,一鍵生成GDSII,直接交給FAB制造。
如此的話,那設(shè)計(jì)工程師和flow工程師是不是就失業(yè)了?其實(shí)不會(huì),原因如下:
首先,沒有100%完美的flow,一鍵出wafer只是完美的設(shè)想。
是flow,就難免會(huì)有bug,尤其是新開發(fā)的一套flow,修bug是工作的主要內(nèi)容之一。
因?yàn)閒low自動(dòng)化節(jié)省下來的時(shí)間,要么玩手機(jī),要么去解決更有挑戰(zhàn)的問題。
我一直秉持一個(gè)觀點(diǎn),對(duì)資深或者優(yōu)秀的芯片工程師的定義,就是是否具備從零搭建芯片設(shè)計(jì)flow的能力,這才是基礎(chǔ),是核心。
可能在大公司做flow,不要求全面了解芯片設(shè)計(jì),只要腳本能力強(qiáng)就行。但要為一家公司從零搭建flow,沒有對(duì)應(yīng)得前端設(shè)計(jì)/驗(yàn)證/DFT/后端的背景是做不好的。
芯片行業(yè)的名詞太多了,很多翻譯成中文又不準(zhǔn)確,心疼這一行的HR和獵頭們,摸摸頭~