学习IC验证,你需要的可能是一个规划
在最近一两年的政策和政治加持下,国内半导体行业迎来了前所未有的关注量。更多的热度决定了更多的关注,注定会有更多的人涌入进来。一个行业的发展,就好比一个城市的发展,必然会经历几个阶段:大量土地供应,政策加持下的大量人口涌入,人口红利消失,城市发展达到动态稳定。
我本人也是从化工设计院走出来,进入到下游半导体fab,再转至上游IC验证岗位。虽然崎岖,但我真的知道这过程中的心酸和弯路。相信有非常多的人跟之前的我一样处于迷茫中。你可以参考一下我的这篇文章:毕业三年,我成功转岗IC验证 ,看看你是不是也有相同或者相似的经历。或许一些观点能够让你豁然开朗。本文从另一个角度,告诉你只要行业需求的缺口还在,就有红利机会,个人也会分享到国内行业发展的成果。但如何介入?来分享一下我的经验。
[走入时代的洪流,享受行业发展的溢价]
相信有非常多的北上广的小伙伴,享受着城市“高节奏高薪资”的同时却迷茫着,不知道何去何从,因为对行业和自己的现状没有清晰的认识。说实话我也是有过完全一样的经历,而且不止一次的迷茫。但是走过去再回头看,发现完全不一样。可能你没有在一个快速发展且有非常高的附加价值的行业,让你自身的势能没有显著提高,而导致迷茫和不自信。任何一个城市都有自己的定位和特色。在一线城市中,就算每个行业都发展的不错,但是一定有一些头部的行业的发展,能够为所处行业中的每个人带来势能。所谓的势能,就是个人越来越值钱。
就如同当初的互联网行业,无论程序员还是产品,又或者运营,一些早期行业从业者,分享了行业发展的成果赚的盆满钵满。因为在一个宏观的角度上来看,大势所趋,顺应时代,才能走向正确的终点。不论是芯片缺货,还是5G,又或者是大量的人工智能芯片,市场和政策、政治因素,已经在孕育一个巨大的蓝海,集成电路或者半导体行业迎来了一大波机会。资本快速的投入,design house 如雨后春笋一般大量的兴起,导致需求端的岗位严重紧缺。虽然很多PPT造芯片的初创公司只是为了融资骗钱,但是在政策和资本的大幅投入下,这种状态会持续一段时间,而那些本来就在局中的IC企业,也一样因为人才流动而产生岗位缺口,那么等同于更多更好的从业机会的门槛被降低了。
总结来讲,IC是未来时代的洪流,任何一个行业都会遵循发展规律,也会有饱和的一天,但眼下国内的IC快速的发展还是处于人才导入阶段,必然带来大量的机会,从中选择好的机会,分享国内行业发展的成果,享受行业溢价的带来的红利。但是需要你去甄别真正能够持续下去的公司(有现金流的头部公司)。走到最后的才是赢家。
[既然选择了远方,就要风雨兼程]
就如同我的这个专栏一样,本意是发一些我从0开始学习的思路和步骤,一些知识点的分享。但是,我发现对于一个想要转行的零基础的伙伴来讲,中间还是有一定的门槛,可能这种文章不是最需要的。他们更多的可能需要的是一个学习路线,或者一种规划。回想我刚开始自学时,也是一样抓瞎,什么都不会,网上也没有合适的思路和路线。实话说,手把手的告诉你看哪些资料,真的是害了你。毕竟很多人都是转行,时间是巨大的成本,学习本来就是很耗费时间很精力的。所以,先规划,再实施,永远都不会走弯路。
- 首先你要对需求有认识。
我找工作时,主要用两个软件:boss直聘和猎聘。打开软件搜索IC数字验证,在设置好城市等等信息后,你就能看到大把的招聘信息。薪资10~60k都有。这些都不重要。重要的是你需要看一下能力需求。我总结了一下,普遍要求如下,我主要分为语言能力、实战&工作经验、通信协议的了解程度
System Verilog Verilog | 熟练、精通 | 必会项 |
UVM验证方法学 | 熟练、精通 | 必会项 |
C++ | 了解、熟练 | 加分项 |
python、perl、 | 了解、熟练 | 加分项 |
EDA使用熟练程度 | 熟练掌握 |
Linux环境下的使用情况 | 熟练掌握 |
是否参与过相关实习 | 加分项 |
是否有过相关项目经历 | 加分项 |
是否有过相关工作经验 | 加分项 |
AMBA(APB、AHB、AXI) | 最起码了解APB,了解越多越好 |
I2C | 加分项 |
SPI | 加分项 |
以上的内容大致总结一下:语言能力中,SV和UVM是必须要会的,而且需要用其独立搭建过验证环境,在此过程中使用了EDA和Linux。练习、实践的项目中用到了AMBA或者其它通信协议。这样就具备了基本的入门能力了。
但是事情远没有你想的那么简单,一个高薪的工作怎么会这么容易到手?在面试过程中,会被问到项目中很多有关于语法的、技术性的、逻辑上的问题,而这些才是在学习中需要被重点关注的。扎实的基本功+较强的学习理解能力,才是企业关注的重点。
- 其次你需要规划学习路线
如能力需求所述,SystemVerilog是必须要会的,但是如果不是科班出身,可能对于这门语言的学习是非常吃力的。这个过程中需要用到数字电路的相关知识,在这里推荐几本书,在链接中可以自己下载电子版。相互掺杂着同步看可能效率高一点(这里不会了翻一番那一本,相互翻,多看就懂了)。建议不会了也不要卡住不动,把当天规划好的都学完,可能前面不会的问题就迎刃而解了。数字电路部分不需要懂得特别多,能够理解RTL代码即可。
学习SV时,有个技巧,我喜欢到csdn上找技术性总结类的文章,将其理解、背下来(有点呆板的学习办法,但是效率真高。)然后再看书,带着死记硬背的知识来理解性的阅读书上的知识点,会发现容易了很多很多。推荐同步路科V2课程视频,消化理解SV的语法知识点。如果条件允许,非常推荐按照路桑的V2课程来学习基础知识,并按照课后的项目完成实验,基本就对SV有了一定了解了。但是学习效率有点低,我一般都时1.5倍速快速的过一遍。
在SV了解的差不多的时候可以开始UVM的学习了。而UVM是基于SV的语法结构的一门验证方法学。第一遍是学不到精髓的。在第一遍学习的时候,重点去感受uvm方法学所构建的验证环境框架是什么。第二遍看的时候,再去了解每个组件的特性并尝试自己去抄,一遍不会,敲两遍,边敲边理解。同样推荐路桑的视频和张强的《UVM实战》第二章(第二章我反复看了三遍)当有了一定理解后,再去看后面的每个章节,会容易很多,当然更深入很多。
学习UVM时,也同样有个技巧,UVM中有很多机制,当对整体有了一定的大致认识后,我还是喜欢去csdn上找一些技术性的总结类文章,仔细阅读,这些文章里很多过度语言都省略了,简明扼要,面试前我看了很多很多遍。UVM深入学习可以按照UVM不同的机制来学习。下面是我整理的一些资料:
- 找工作前必须看的:UVM_知识点测试
- UVM具体的机制,都是重点,都需要认真看看,肯定不全,欢迎补充:
- UVM configuration机制
- sequence机制(数据激励的产生、配置方式)
- sequence机制(另一个人写的,也不错)
- sequence机制(《UVM实战》第六章总结)
- TLM通信机制
- virtual sequencer与virtual sequence
- 寄存器模型 Register Model
以上两部分的基础学习看书肯定是不够的,剩下的时间就主要用来实践敲代码了。我在学习的过程中很欠缺代码的练习,debug能力弱了很多。但是说实话,SV和其它编程语言还不太一样,SV的EDA工具学习起来就有门槛,没有视频没有人指导如何开始,还是很迷茫抓瞎的。而其他的语言比如python的IDE,只要环境配好了,就可以很容易的执行脚本。所以这里推荐Windows平台下QuestaSim,熟悉起来非常快。可以针对个别的语法点,进行重点学习,学习语法特性或者机制。但是语言毕竟是工具,只有在使用时才能让你增加记忆深度。所以记不住也不要紧,忘记了知道去哪里翻资料就可以了,前提是你能够具备基础的语法知识,能够看懂大部分的语句,个别不懂是正常的。
当构建了SV和UVM知识体系后,路科的mcdf我也都练习了两遍后(很仓促,第二遍照抄,边抄边理解。第二遍默写,通篇看一遍,理解以后默写出来,加深语言和逻辑的理解)我到github上找了几个不错的项目开始学习,学习顺序是:
- 首先是通篇阅读(第一遍都不知道从哪里开始看),估计看了两三遍,各组件彼此的关系都有了一定的认知。同时,将项目中所运用到的协议都学习了一遍(了解,看到了知道什么意思,没有深入细致的学习)
- 按照自己的理解,top to down的将代码抄写了一遍,down to top的顺序又将代码照敲了一遍。我这样做主要学习基于UVM验证方法学,一个验证环境结构是怎么样的,哪些内容是通用的“套路”。可能有点笨,但是我确实理解的很快。
- 重新整体阅读,开始在EDA工具上Run,开始时肯定时一定有很多bug,可能是环境造成的,也可能是代码上的,反正有很多种可能,我前后调试了很长时间,过程中确实锻炼了自己,不仅学到了通信协议,还将对UVM的使用有了更全的基础认识。
推荐几个不错的上手项目,甚至可以很多都可以写进简历里:
- 首先推荐路科MCDF项目,基于sv环境的搭建,改为UVM环境,工作量不小,但是能在debug过程中学到非常多。资料网上都有,有条件当然还是推荐正版。这个已经被HR看到吐了,建议换个别的项目写进简历里。
- E课网经典项目:基于UVM的AHB-SRAM环境搭建和验证
- 路科V2Pro课程项目:APB协议UVM验证环境的搭建 可能你需要先了解一下APB是啥:APB总线协议详解
- GitHub上一个比AHB-SRMC更简单的项目:APB-SRAM 验证
- 一些比较好的官方项目使用SV写的,建议尝试自己用uvm重新搭建一个运行环境,再Linux下的EDA中跑一遍。相信这个练习会非常的有效果。
- 最后细分到每一天你应该学哪些
其实这部分挺难控制的,如果在学校里,可能还有大把机会。但是如果已经毕业了,那么日常的工作就已经很累了,很难保证学习时间和状态。我也是在fab里边工作边学习,最终走出来的,我体会过那种感受,很难坚持,真的很累。
分享一个一起入职的小伙伴的经历,也同样在fab中OP部门的工作,每天除了繁重的工作外,上下班路上还要用掉2小时,经过合理的安排时间和努力,不仅考上了在职研究生,也成功从fab最底层的OP岗位走入到上游设计相关岗位中。分享这个例子,不是想告诉你这件事有多么容易,而是想告诉你转岗就如同考研一般,拿出相同的状态和学习热情,那么一定能成功。以下是根据我的个人经历的一些建议:
1、无论多忙,保证自己的学习和休息时间。
2、找到自己的高效时间,制定to do list ,严格执行当日规划。确保每日3小时以上的学习强度,效果会更好吧。
3、聪明的学习是以构建知识网络为目标的,所以每周留出时间来审视自己本周的知识学习还有哪些漏洞,尝试做个本周的总结,如果坚持下去,相信我,面试前你会轻松很多,因为这帮你把学习的知识网络打下非常牢固的基础。
4、找到一名有经验的相关从业者,即使请吃饭有偿的请教,也是值得的。因为目标就是迈进这个行业的门槛,不惜代价,方能始终。
5、学习是很痛苦的事情,找好节奏,找好状态。时刻清醒的投入学习中,“聪明”的掌握应该知道的知识,去准备简历吧。
6、总的时间控制上:我个人的经历是:从21年4月~21年7月,历时3个月全部完成(包括学习基础、做一两个简单的项目、准备简历开始面试,最终办理入职)如果下一波机会,我建议,明年三月前,学习知识+准备项目+准备简历。
- 考前总复习:简历、项目经历该如何准备
我想这是一个非常非常复杂的事情,还真没有总结好经验。后面再更新吧。
写了这么多,在最后的最后再总结一下吧:
1、告诉你选择溢价行业,头部企业进入机会门槛降低等等这一切,只是想告诉你,我也有过这样的经历,转岗或者准备知识的过程是漫长的,真的很容易忘记当初为什么出发,就会怀疑自己的付出是否值得。相信我,付出一定值得,任何时候努力都不晚,只是起点不同而已。
2、告诉你用boss直聘、猎头去了解企业的需求,同时也是想让你时刻用上面的薪资待遇和市场的大量缺口、时刻有企业在招聘来激励、鼓励你加快速度,提高效率,毕竟有些事情做了就做好,要不就根本不要开始。
3、告诉你需要学哪些。这是我的个人经验,相信会有很多大神,有着自己更好的路线,仁者见仁智者见智,我只是分享我的路线以及走过的弯路,希望后来者不要跟我一样迷茫不知如何开始。
4、学习时间的规划,既然选择了远方,就没有诗和蛋糕,只有痛苦。但上岸后会有诗和未来。坚持是你唯一能做的事情。能否成功上岸,坚持占60%,剩下的30%是运气。按照21年的情况,我想22年的3~5月是一个非常不错的上岸黄金时间,希望你也能赶上,现在开始时间还来得及。
5、面试的准备和如何面试,题目太大了,需要让我好好沉淀一下,下次更新。毕竟技巧的东西,很难用文字讲出来。但是这块的内容太重要了。上岸剩下的10%里,我认为技巧占9%。你也可以私信我,有空会回答的。
以上只是个人经验只谈,可能没有什么代表性,毕竟不是科班出身,还有很多漏洞,只是个人观点,如果不赞同,欢迎探讨,也可以忽视我,谢谢
#如果再来一次,你还会学硬件吗##稳定和高薪机械人更看重哪个?##EDA##IC验证##IC#请勿购买本专栏,内容全部更新在另外一个《ARM/Linux嵌入式真题》。