如果真的想從事芯片設(shè)計方向,建議你首先要搞清楚芯片設(shè)計到底是什么,日常的工作是什么,是不是自己喜歡的。
芯片設(shè)計大概可以分成三個大類:數(shù)字,模擬和射頻。如果說模擬和射頻之間還有些聯(lián)系,那數(shù)字和模擬基本上平常工作內(nèi)容是完全不同的。因為我在數(shù)字方向,我可以簡單講講數(shù)字方向的工作。數(shù)字芯片設(shè)計主要分成幾個大方向:架構(gòu)建模,前端設(shè)計,前端驗證和后端。架構(gòu)建模主要是利用C/C++或者SystemC進(jìn)行算法和架構(gòu)的建模,用于早期的軟件仿真的amodel和fmodel以及后面驗證的reference model。你需要具備的基本知識是計算機(jī)體系結(jié)構(gòu),基本的操作系統(tǒng),數(shù)據(jù)結(jié)構(gòu)和算法知識,以及你做的芯片的domain knowledge,當(dāng)然這個是可以后面工作中學(xué)習(xí)的,比如一些protocol的知識。如果具備一些芯片硬件相關(guān)的知識是更好的,真正的system architect是必須具備扎實的數(shù)字電路的硬件知識的。前端設(shè)計主要是使用verilog/vhdl語言進(jìn)行硬件的描述。好的工程師應(yīng)該是非常精通硬件底層的原理的,代碼如何映射到硬件。Timing的概念等等,基本上是微電子專業(yè)電路相關(guān)的知識。前端驗證主要是使用systemverilog/uvm進(jìn)行verification的工作,當(dāng)然還有各種腳本。這個工作崗位雖然對硬件知識要求不低,但是其實跟軟件工作更相像。你需要非常理解OOP的概念,大部分人都是微電子等相關(guān)專業(yè)來做這個,所以很多人其實都沒有很好的理解UVM等框架,也很難寫出比較好的代碼。所以你看這個方向,不僅需要你有很好的硬件基礎(chǔ),最好也有非常好的軟件素養(yǎng)。后端,沒有接觸過太多,基本上是各種腳本+非常扎實的硬件電路基礎(chǔ),特別是timing,甚至器件/工藝知識(高手)。這個方向的話應(yīng)該是微電子專業(yè)最適合了。所以,真的想做芯片設(shè)計,我猜你指CPU,GPU這種大芯片,那你應(yīng)該想從事的是數(shù)字方向。那么其實4個字方向中每個小方向都需要非常扎實的硬件電路基礎(chǔ),同時其中某些方向還需要你具有非常好的軟件和系統(tǒng)素養(yǎng)。所以我建議可以選擇微電子方向(最好是去那幾所最好的學(xué)校,并且需要讀研)+自學(xué)軟件方向課程。不過最重要的問題是你真的想做芯片設(shè)計嗎?