入行数字IC验证的一些建议

大家好,我是入职半年的数字IC验证工程师ICer消食片

两年前的我正直研二,对IC行业一无所知,通过自己的一些调研和咨询,一步一步的了解,随后自学了大半年的时间,在2020年秋招期间,顺利拿到几个数字IC的offer。

如果你也想了解这个方向,不妨看看我的一些建议:

0x00

首先,推荐你看两本书,“胡”说IC菜鸟工程师完美进阶》本书介绍整个流程都有哪些岗位,充分了解IC行业的职业发展方向。SoC设计方法与实现强烈推荐这本书,让你了解SoC芯片流程,基本概念以及每个环节是在做什么。


0x04

其次,如果看完之后感兴趣,那你应该是真的感兴趣。那就开始学习专业课程吧!

数字电路技术基础-阎石 基础专业课程,建议转行和非科班同学必看,有很多基础且重要的知识点。数字逻辑电路是一定得会的,组合电路时序电路那块内容是重点,凡是和D触发器有关的重点掌握,其他的触发器电路了解了解就行了,用的很少的,等你工作后就会发现,做IC验证基本就得跟寄存器打交道了。这门课一两周内是可以搞定,这里我建议西安电子科技大学的课程【西安电子科技大学】《 数字电路与逻辑设计》任爱锋(64讲全)HD

在这期间顺便可以再看看两门课程作为辅助:数字CMOS集成电路设计 了解CMOS数字电路组成,MOS管的开关特性,门的组成等等。专业基础书,主要做个了解,对以后项目工作中有帮助。硬件架构的艺术 介绍了工程中的常见问题,工程师的经验总结,很值得阅读。有亚稳态,时钟分频,流水线,异步时钟同步问题等关键性问题的解释。


0x08

然后,这些东西看下来之后,基本掌握了入行的基础知识,现在开始写Verilog吧!

Verilog的书籍特别多,我推荐两本《Verilog数字系统设计教程-夏宇闻》、《轻松成为设计高手 Verilog HDL实用精解》,第一本作为参考书籍,第一部分的内容必看;第二本作为练习,最重要的还是自己手敲RTL代码,纸上得来终觉浅,实战能力非常重要。除此之外,还可以在这个hdlbits.01xz.net/wiki/M网站上实时练习。网课视频比较多,大家自行选择。


0x0c

继续,掌握了以上基础内容,就开始进阶SystemVerilog了。一般推荐初学者看绿皮书SystemVerilog验证 测试平台编写指南。刚开始看这本书,我猜百分之***十的人都处于一种懵逼的状态,不知道重点在哪里,也很难坚持着看下来,整本书也只能有个大致的验证框架概念。确实,学这个还真需要有项目为辅。首先要知道它是在干什么,其次才能了解为什么要这么干。这里最好能找到网上的一些培训视频课程,其实就那几家机构的项目。听说现在自学或者培训转行的基本都会了,面试官基本都会问这几个项目。其次学习SystemVerilog需要有面向对象编程的基础,最好还是了解一些C++的基本概念,类、封装、继承、多态等等。


0x10

最后,当前阶段的数字IC验证都是基于UVM搭建的环境,所以最终要学的还得是验证方法学UVM实战。能走到这一步的朋友,说明你的自学之路即将成功了!但是不能掉以轻心,因为这里又是一个比较大的跨越了。基于SystemVerilog的学习之后我们发现,UVM其实就是基于前者的一个知识库一样,但是又添加了很多新的特性。这些特性就是为了让验证工程师更加高效率高质量的完成任务而生的。UVM的学习还得是配合着网课培训视频来,一步步的了解各种机制,慢慢的搭建验证环境。

大致回忆就这些,后期有想起新的内容会继续更新。本公众号也会分享更多相关知识,可以点个关注哦~

By the way,我建议有时间有精力的同学,一定要自己装一个Linux(工作环境),并且安装好VCS(编译仿真)和Verdi(看波形),这对你未来工作会有很大的帮助。

欢迎大家点赞、收藏和转发~本文原发于微信公众号【ICer消食片

#笔记##数字IC设计工程师#
全部评论
入门要多久啊
2 回复 分享
发布于 2022-05-23 23:15
半年
点赞 回复 分享
发布于 2022-06-09 22:41
请问项目要实际的片子做出来么
点赞 回复 分享
发布于 2022-06-11 10:05
没有项目怎么搞
点赞 回复 分享
发布于 2022-06-19 01:16
写的很好,谢谢
点赞 回复 分享
发布于 2022-06-19 23:58
关于ic设计有没有相关建议呢?
点赞 回复 分享
发布于 2022-06-19 23:58

相关推荐

11-09 14:46
已编辑
河海大学成人教育学院 C++
时间一个小时,我和面试官都没开摄像头面试官是个声音好听的女孩,是公司的技术总负责人,说是主管面实际上全程在聊技术。对着项目问的,我的消息队列好像撞到她的枪口上了。我的序列化方式是什么?xml,json类似的文本格式和二进制格式的对比?我只回答了可读性和存储大小,常用的二进制序列化protobuf。如果让你自己设计二进制序列化怎么设计?我说就把每个字段大小读出来,内容写到buf里。追问如果长度是可变的怎么办?比如结构体里有个vector。->反序列化不出来。怎么解决?分析一下proto文件改变了,会出现什么问题,怎么解决。(就是对不同版本的兼容性问题)了不了解protobuf是怎么解决的。介绍消息队列?关键的的数据?我的消息队列是推模式还是拉模式,我是拉模式如果让我实现推模式怎么实现,怎么设计消费方接口的统一。回答完这个问题我说,我了解到常用的消息队列只会实现一种模式,她说dds就是推拉都有,后来搜了一下这是汽车常用的中间价....果然撞枪口上了...我的消息队列如何解决读消息冲突的?讲了集群模式怎么做的。如果广播模式要求所有的消费者收到消息,怎么做,什么时候可以删除一个物理消息队列,怎么标记.....这块花了挺长时间,她也问不清我也讲不清哈哈哈被问的有点慌了一个线程的整个生命周期?什么情况下会被挂起?你觉得什么是好的cpp代码?我答了做好内存管理,用简单的方式实现功能,避免使用复杂语法和特性(她说这点特别好)...怎么做到代码复用和可扩展性?用设计模式追问你常用哪些。讲一下CAP原理,分别在什么场景下牺牲哪一个特性。你觉得自动驾驶应该首先保证哪个。你有没有觉得比较好的编程习惯?有没有觉得写的特别好的库?我说了ffmpeg。反问:剩下的时间就交给你来问我了(好可爱)我着急回去上班,就没有反问,好后悔十分钟后通知通过了
查看18道真题和解析
点赞 评论 收藏
分享
11-08 12:20
已编辑
门头沟学院 硬件开发
点赞 评论 收藏
分享
评论
32
187
分享
牛客网
牛客企业服务