如果真的想从事芯片设计方向,建议你首先要搞清楚芯片设计到底是什么,日常的工作是什么,是不是自己喜欢的。
芯片设计大概可以分成三个大类:数字,模拟和射频。如果说模拟和射频之间还有些联系,那数字和模拟基本上平常工作内容是完全不同的。因为我在数字方向,我可以简单讲讲数字方向的工作。数字芯片设计主要分成几个大方向:架构建模,前端设计,前端验证和后端。架构建模主要是利用C/C++或者SystemC进行算法和架构的建模,用于早期的软件仿真的amodel和fmodel以及后面验证的reference model。你需要具备的基本知识是计算机体系结构,基本的操作系统,数据结构和算法知识,以及你做的芯片的domain knowledge,当然这个是可以后面工作中学习的,比如一些protocol的知识。如果具备一些芯片硬件相关的知识是更好的,真正的system architect是必须具备扎实的数字电路的硬件知识的。前端设计主要是使用verilog/vhdl语言进行硬件的描述。好的工程师应该是非常精通硬件底层的原理的,代码如何映射到硬件。Timing的概念等等,基本上是微电子专业电路相关的知识。前端验证主要是使用systemverilog/uvm进行verification的工作,当然还有各种脚本。这个工作岗位虽然对硬件知识要求不低,但是其实跟软件工作更相像。你需要非常理解OOP的概念,大部分人都是微电子等相关专业来做这个,所以很多人其实都没有很好的理解UVM等框架,也很难写出比较好的代码。所以你看这个方向,不仅需要你有很好的硬件基础,最好也有非常好的软件素养。后端,没有接触过太多,基本上是各种脚本+非常扎实的硬件电路基础,特别是timing,甚至器件/工艺知识(高手)。这个方向的话应该是微电子专业最适合了。所以,真的想做芯片设计,我猜你指CPU,GPU这种大芯片,那你应该想从事的是数字方向。那么其实4个字方向中每个小方向都需要非常扎实的硬件电路基础,同时其中某些方向还需要你具有非常好的软件和系统素养。所以我建议可以选择微电子方向(最好是去那几所最好的学校,并且需要读研)+自学软件方向课程。不过最重要的问题是你真的想做芯片设计吗?