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