本文给出了IC前端工程师的技能树以及相关书籍推荐。值得注意的是,能够插入购买链接的资料我都是直接插入链接了,有些公众号商品入口中找不到链接的资料,我就直接给出获取电子版的方式哈。
个人觉得正确利用本文的做法是,点击收藏,然后逐个突破。而不是一下子就所有推荐书籍都买回家,所有电子资料都下载在电脑,因为那样很可能只会放在家里积灰尘或者占电脑内存。。。所以,文中不提供一键下载所有,只提供单独下载。
以下这张图,就是我画的技能树啦。图片后面会一一对其进行讲解,请各位细品。
1.理论知识
学数学,不能不学乘法口诀,而学IC设计,同样也需要一些基本的数字电路知识。例如,寄存器,锁存器,组合逻辑,时序逻辑,同步时钟等。在面试的过程中,我会经常问到的就是寄存器和锁存器的区别是什么。如果你是科班出身,连这个都答不出来,基本就直接否掉了。哪怕你跟我说你做了100个项目。
推荐书籍:《数字集成电路:电路、系统与设计(第2版)》
本书的作者是美国加州大学伯克利分校JanM.Rabaey教授,是国内外不少高校的参考教材。全书分成三个部分:基本单元、电路设计和系统设计。建议放在枕头底下,在各个不同的学习阶段,都拿出来细细品味。真会是常看常新。
2.语言
2.1.硬件描述语言
IC设计中使用的属于是硬件描述语言:VHDL和verilog,而目前verilog在国内已经占据绝对地位了,所以建议大家直接学verilog即可。
推荐书籍:《verilog数字系统设计教程》
夏老师的书,论坛上有人说好,也有人说不怎样。我推荐的理由完全是因为韩彬(crazybingo)的加入,我相信bingo这个疯狂的家伙能够把它整的明明白白。
2.2. 脚本语言
熟练地使用脚本,能够很大程度地提高工作效率。
tcl
tcl是tool command language的缩写,它是工程师与EDA工具交互的语言。可以直接看公众号之前推送的文章,里面包含里了PPT,讲解视频,推荐书籍和S司的tcl lab,还有一些练习题。公众号菜单栏加本人微信,可以进tcl学习群。
tcl语言基础培训PPT及推荐书籍
tcl语言基础培训
perl和python
熟悉掌握这两门语言,在某些情况下,能够提高工作效率,且能够避免一些不必要的错误。例如,我们可以使用它们来批量修改文本的内容;还可以使用他们来写一些自动化脚本,如自动生成寄存器代码,自动生成顶层代码等。
推荐书籍:《Perl语言入门(第6版)》,人称“小骆驼”
推荐书籍:三剑客
2.3. C语言(非必需)
C语言是固件工程师和软件工程师的必备技能。而对于IC设计工程师,也是需要懂点C语言。例如,很多算法都有C模型,我们可以看懂C模型,然后翻译过来。
3. 平台(linux环境)
关于linux,我之前也写了一些文章。以下是文章链接:
LINUX环境5|GVIM配置实例
LINUX环境6|GVIM操作指南
LINUX环境7|插件NERDTree
LINUX环境8|GVIM加速coding的几个“伎俩”
如果想更深入研究,可以去买鸟哥。
4. 开发流程
IC前端流程包括综合,逻辑等效性检查,静态时序分析(STA),FPGA原型验证和跨时钟域检查等。这其中会涉及到很多工具的使用及其原理。所以需要工程师们花费很多的时间和精力才能一一掌握。
4.1. 流程userguide
推荐资料:S司官方galaxy doc,可到公众号后台回复“galaxy”进行获取。
需要了解流程,首选的当然是官方的userguide。S司的userguide包含了以下工具,其中红框圈出来的就是前端涉及的工具。当然,除了这些userguide,S司还提供了很多workshop和worklab,感兴趣的同学可以去网上自行查找。
4.2. 综合(DC)
推荐书籍:《高级ASIC芯片综合》,可到公众号后台回复“高级芯片综合”进行获取。
4.3. STA(PT)
推荐书籍1:《Static Timing Analysis For Nanometer Designs》,可到公众号后台回复“STA”进行获取。
这本书被称为STA界的圣经,全书讲得通俗易懂,简直就是宝藏级别。建议打 印一本出来,放在办公桌上,好好看。
推荐书籍2:《集成电路静态时序分析与建模》
这本中文的书也不错。如果你对英文有恐惧,就可以先看这本。
5. 设计对象
很多公司,尤其是大公司的前端都会分成几个部门或者几个team:算法部门,SOC部门,MCU部门。
5.1. 算法
算法部门是负责算法的实现,例如图像视频处理中的H.264编解码和通信中LDPC算法。至于要选择什么方向,对于在校学生,一般都是取决于跟哪位老师了;而对于工作人士,最好就是工作前两年给自己找个方向,然后针对性的找个对口公司。
5.2. SOC
SOC部门的侧重点是将所有IP,模块集成在一起,形成一个系统。所以片上互联总线和外设接口是他们的工作重点。片内互联总线一般是AXI或者NOC总线。外设接口又分为低速接口和高速接口。其中低速接口包括IIC,UART,SPI等;高速接口包括SATA,USB,PCIE,DDR等。我们不需要所有接口都要掌握,高速接口精通一两个,都够吃一辈子了。以下是我之前收集到的协议资料,红框圈起来的可以在公众号回复相应关键字获取,例如,回复“PCIE”获取pcie协议.rar
MCU部门则是负责MCU的研发。目前业内还是ARM架构的MCU占主导,最近几年RISCV也是挺火的。
5.3. MCU
推荐书籍1:《CPU自制入门》
推荐书籍2:《手把手教你设计CPU——RISC-V处理器篇》
6. 设计方法学
啊,设计方法学,真是能够学一辈子。跨时钟域,流水线,乒乓操作,无毛刺切换和去抖,可重用设计,低功耗设计,可测试设计等等。。。随便一列一大堆。。需要掌握这些,除了看书,还需要一些实际项目。当然,运气好的话,能跟到好师傅,遇贵人就最好不过了。下面就直接给大家推荐一些资料吧。
6.1. 必看书籍
推荐书籍:《The Art of Hardware Architecture》
Springner出品,必属精品。该书对跨时钟域,低功耗设计,流水线等都做了阐述,请精读!公众号回复“硬件架构的艺术”获取。
6.2. 可重用设计
推荐书籍:《Reuse Methodology Manual for System-on-a-Chip Designs (3rd Ed.)》,公众号回复“可重用设计”获取。
6.3. 低功耗设计
推荐书籍:《Low Power Design Essentials》,公众号回复“低功耗设计”获取。
6.4. 可测试设计
推荐书籍:《Low Power Design Essentials》,公众号回复“可测试设计”获取。
6.5. 跨时钟域处理
推荐资料:看以下截图,公众号回复“CDC”获取。
7. 验证与测试
7.1. 流片前
流片前主要是做模块验证和FPGA原型验证。而前端工程师跟这两个流程也是脱不了关系的,毕竟bug是你写的嘛。
- 模块级验证
是用verilog,还是用systemverilog来搭验证平台,是否要使用UVM验证 方法学?这些话题在前端工程师这里,显得不是那么的重要。毕竟后面还有一个叫验证的同事在支撑着。
推荐书籍1:绿皮书
推荐书籍2:白皮书
推荐书籍3:红皮书,公众号规定一篇文章最多只能插入10个商品链接,插不了了。。直接贴个图吧。
- FPGA原型验证
对于FPGA,你不仅需要了解FPGA的开发流程,熟悉使用FPGA开发工具,还需要了解你用的开发板的资源情况。有时候还需要根据项目去评估使用什么开发板。关于这块,我就不推荐资料了,直接去xilinx官网吧。
7.2. 流片后
流片后的测试,通常会有专门的部门来做。但是在小公司,你就必须身兼多职。例如,出测试计划;又例如出差去测试厂调pattern。
- CP测试
- FT测试
- SV测试(板级测试)
推荐资料:《半导体测试概论》,公众号回复“测试概论”获取。
8. 综合能力
8.1. 编辑文档的能力
工程师之间的交流不能光靠嘴巴,还必须得借助文档。对设计人员来说,必须是先有文档,再有设计的。而你的文档还是验证工程师和固件工程师的使用手册。所以你总得写得让人家看明白吧。而文档需要的是图文结合,最好是能够做到一看图就明白这种程度。
8.2. 英文阅读能力
看英文文档是工程师的必备技能,见到英文就害怕的工程师不是好工程师。
8.3. 检索能力
现在互联网太发达了,所以你在做的东西,很有可能别人已经做过并发到网上去了。所以在开始设计之前,能够检索到有用的东西,会事半功倍。而检索的能力,因人而异,毕竟百度的“莆田医院”太多了。
未完,待续。。。
作者:七点班车
原文链接:IC小迷弟
推荐阅读
更多IC设计技术干货请关注IC设计技术专栏。