ASIC/SOC设计工程师学习路线

很多年前写过一篇文章《有关数字电路设计的学习》,文章内容如下:

    “ 本文描述的数字电路设计的学习方法主要针对非集成电路设计专业的电子类的大学生,实际上对于集成电路专业还是非集成电路专业的大学生都是适用的,这是一个循序渐进的学习方法和步骤。
    大部分理工科的学生都学过
模拟电子 数字电子 ,当学完数字电路基础时,如果要向数字集成电路设计方面发展,那该怎么继续呢?不是直接学习verilog,因为很多国内的verilog的书籍看起来很简单,只要有点c 语言基础的很快就能上手,但是实际上这个方法虽然很快,但不正确,会让很多学生产生误解和困惑。c语言是顺序执行的,那么verilog 是不是也是顺序执行呢? 初学者都会把verilog理解成和c语言一样是顺序执行的,或者理解的不清楚。
     在学完数字电路之后,我推荐的一本书叫
《数字设计》 第四版 ,这本书的前面几章是讲数字电路的基础知识,学过数字电路的可以直接从第三章开始看,一直看到第八章,第九章和第十章初学者可以不看,第十一章的实验要做,按照这本书的知识体系结构:门级电路>门级电路的verilog语言实现,组合逻辑电路>组合逻辑电路的verilog语言实现,时序逻辑电路>时序逻辑电路的verilog语言实现; 数字电路的学习本来就应该是这样一个顺序。数字电路基础讲的是门级电路,组合逻辑电路,时序逻辑电路,但是没有讲verilog 语言的实现,如果直接看verilog,会很容易把verilog 看成c 一样的程序, 因为没有从电路转化为verilog 的过程,或者说是没有verilog怎么描述电路的过程,因此verilog 和 数字电路是脱节了的, 而这本书上即讲了电路,又讲了这些电路如何用verilog 描述。因此把它们联系起来了。这也为后面的更深入的理解阻塞赋值和非阻塞赋值,还有always模块描述组合逻辑电路和时序逻辑电路打好了基础。
     看完这本书会后可以看
《verilog HDL高级数字设计》 这本书, 这时候你已经对数字电路设计有了一定的认识,可以自己找些适合自己的verilog 的书籍看了。
到这里只是ASIC/SOC设计的入门,再往下学什么呢?今天就来讲一讲。
首先,UART、SPI、IIC这三个小模块要会,不管是练手还是真实的做项目,自己要认真研究代码,至少写过一个模块并验证过,上FPGA测试过。然后再研究一些复杂的模块的比如Flash controller 、DMA、DDR、AMBA 、USB ...... 这些模块在真实的项目中,每一个至少都需要3个月来写代码和模块级验证,USB 模块稍复杂,可能需要更多时间来熟悉协议。还有很多协议可以作为项目来做,比如Ethernet IP core、SD卡控制器、LCD 控制器 ...... 在这期间要阅读大量的英文协议文档,以此锻炼自己的英文资料阅读能力。
其次,掌握脚本和各种IC设计工具,bash、Tcl 、perl 最常用,由于一般的芯片设计都是在Linux OS上做的,还要会Linux的基本操作,IC设计工具,前端常用的有NCvlog 、VCS 、DC、PT、ICC、 Encounter...... 这里面有些概念还要懂 ,比如setup time 、hold time ,综合用的各种库,命令..... 所有这些软件的文档全是英文的,界面也全是英文的。这些脚本和工具在项目积累使用经验,最起码6个月才能熟练使用。
最后,数字IC设计可以分成设计和验证两个大方向,设计又可以分成前端和后端两个职位,前端主要就是verilog代码设计和系统集成、逻辑综合;后端是做物理综合、时钟树综合等;验证是对前端做的设计进行功能验证、包括FPGA验证、后仿真。 做SOC前端设计还需要掌握计算机体系结构, 《计算机组成与设计 硬件/软件接口》,《计算机体系结构-量化研究方法》,《超标量处理器设计》通过这些书来掌握计算机体系结构,CPU Core的外部接口 ,这些知识对于设计SOC是必不可少的。 后端要掌握后端的设计工具和一些理论,验证要掌握各种验证方法,这两个都可以单独拿出来写,这里就不展开了。
总之,ASIC/SOC设计,要掌握的知识很多,从门电路到CPU Core,从各种脚本到各种IC设计工具,大部分文档都是英文的,所以英文也要好。如果是本科生,完全可以按照上面的 红色标出的书籍路线来学习,少走弯路。

你可能感兴趣的:(OpenSparc,T1,fpga开发,硬件架构,硬件工程,学习)