首先问个问题?什么是IC验证工程师?验证是什么意思? 有的同学清楚,有的可能不太清楚。
验证工程师就是根据芯片的需求规格(spec),采用相应的验证语言、验证工具、验证方法,设计并实现验证环境,在芯片生产之前对芯片的功能(RTL实现)进行仿真验证,确定设计的功能是否实现了spec中描述的功能,设计的功能是否正确,是否已经完全释放了风险。
“验证”简而言之就是根据芯片的需求规格对设计的芯片“找茬”。
对于芯片设计全流程不清楚的同学,可以先了解下芯片设计流程。
大家都知道芯片设计中流片是非常昂贵的,我们不能等着流片完了再发现问题,那钱就打了水漂,有一些小公司可能就是因为一次流片失败而破产,所以我们要在流片前把各种BUG问题都排除了,这就是验证的价值,因此验证工程师也是IC设计企业中最多的岗位。
一般验证和前端设计的比例是 3:1.验证工程师也是招聘需求最大的岗位,需求量非常大。
IC验证岗位相对于IC设计前端设计、后端设计而言,相对门槛还是低一些的,本科生经过系统的培训和学习,也是可以找到名企工作的,对于转行的同学来说,验证是非常好的选择。而且验证工程师的薪资也是非常高的。
我们现在打开BOSS直聘,看一下关于IC验证的招聘信息,我们来看一下,大部分的薪酬都是20~40万,还是非常吸引人的。
当然,这是北京的,在不同的城市,不同的公司区别还是挺大的,一般上海北京深圳广州等一线城市基本25万到40万左右,西安南京等二线城市一般15万~30万之间,具体还要看大家的学历和项目经验,还有自己面试的如何。以前大部分企业都是招聘研究生,现在由于招不到人,有一些公司也开始尝试招聘本科生。这种情况后面会更加的普遍,因为这个行业非常缺人。
另外IC设计企业的员工福利都是非常的好,双休、六险一金,年假、旅游、运动休闲这些都是标配,还有的企业自己有运动场馆,自己的食堂,总之你能想到的福利基本上IC设计企业都有。
我们打开几个具体看一下他们的招聘需求以及岗位职责。
据行业某人才培训公司透露:今年毕业学员一般都是20K以上,有一些优秀的能达到30多万,有去华为海思的的,有去OPPO。就业基本都没困难,且薪资待遇很不错,有985/211的,也有普通本科的,只要大家愿意花时间,付出努力认真学,一定没有问题。
讲了这么多,我想大家对于验证工程师一定有了一些了解,我再给大家讲讲验证工程师的职业发展。
刚开始进入公司的我们作为“小白”,都是从最基础的助理工程师或者初级工程师做起,经过两到三年的历练在成为高级工程师之后,一般会领导会根据大家在项目中的表现以及个人的意愿确定每个人的发展方向,主要分为技术方向和管理方向,在不同的发展方向也会逐级的晋升,达到各领域的专家,最终进入管理层或者合伙创业。
当然随着大家沿着各自发展方向的进步,薪资水平也会相应的增加。但所有的一切都取决于大家在项目中的表现以及贡献。
在芯片的研制过程大致分为两部分,一部分是前段(也叫逻辑设计),一部分是后端(物理实现),而验证环节贯穿需求定义到最后的物理实现,以及到芯片流片后的测试都有需要验证人员的参与,也就是说验证贯穿了整个芯片研制的全过程。
而在这个过程中,验证主要进行两方面的工作,一部分是前仿真(基于RTL代码的仿真)和后仿真(基于门级网表的仿真)。并且大部分的设计问题都会在前仿真阶段暴露出来,所以在前仿真阶段需要尽可能的覆盖所有功能点,毕竟越到研制流程的后续阶段发现问题,将会导致针对问题的修改成本会越来越高。
因此,一款没有经过验证或者验证不完备的芯片,其本身的功能是不能得到保证的,一旦芯片带着问题流片,带来的损失将是不可估量的。目前芯片研制流片费用相当高昂,基本上都在百万元以上,在芯片的设计过程中存在于设计中的bug,在没有解决的情况下流片后,流片出的芯片很有可能就是“石头”一块,从而会导致产片需要重新设计,而对于更新速度非常快的芯片市场来说,由于芯片的延期而错过最佳投放市场的时间,那么这就是一个“烧钱”的故事。
例如,芯片巨头英特尔是世界上最大且最具影响力的处理器芯片制造商,在20世纪90年代,英特尔也曾因为浮点故障而损失数十亿美元,而本可避免的“烧钱”对于以盈利为目的公司所带来的损失是不可接受的。
因此,面对高昂的芯片设计成本,在流片之前通过验证活动发现所有的bug是非常重要的,验证工程师的核心工作就是对芯片进行充分验证,并且不断迭代的给设计提出验证过程中发现的各种可能存在的问题。
具体的验证过程中,验证工程师一般需要进行两方面的工作,一部分是前仿真(基于RTL代码)和后仿真(基于门级网表)。
进行前仿真时,一般步骤如下:
1.需要熟悉设计规格要求,明确设计要求和待测试的功能
2.制定验证方法和方案,明确怎么验
3.提取测试点,明确验什么
4.验证环境的搭建
5.用例执行,随机测试、定向测试,发现问题
6.验证效果评估,对覆盖率进行统计分析,查漏补缺
进行后仿真,一般是基于后端提供的网表和SDF文件进行时序仿真,仿真的测试用例一般需要覆盖到时序的关键路径,并且在后仿真过程中发现的问题需要反馈给设计人员和后端工程师进行确认。
验证是一件非常有技术含量的事情,我们当然希望把所有的功能,性能,可能发生的问题,都做验证,测试有没有问题,但是时间和成本是有限的,我们必须有方法有策略的来进行验证工作,所以就有了验证方法学。
一般验证方法学通常具有以下原则:
1、受约束随机激励,定向测试
2、功能覆盖
3、事务级分层测试平台
4、可重用测试平台
验证过程中,一般采用的激励策略为受约束的随机测试和定向测试,受约束的随机激励对于设计验证至关重要,可以通过随机测试发现设计中一些验证人员未预料到的一些问题,而定向测试可以找到设计中预期的一些bug。采用不同的激励策略对待测设计进行验证过程中,使用功能覆盖率和代码覆盖率来衡量验证进度。
为了进一步提高验证环境的复用性,目前基于主流的验证方法学构建的验证平台都是分层验证平台,分层测试平台可以将问题分解为更小更易管理的部分,从而帮助控制验证平台的复杂性,通过适当的规划,可以构建一个可以由所有测试用例重用的测试平台架构,而不需要对测试平台进行频繁的修改。
但是构建构建这种测试平台比传统的定向测试平台花费更长的时间,特别是验证环境开发阶段。虽然验证环境开发会花费很长时间,但回报却很高。所有的测试用例都可以重用这个通用的测试平台。 当随机测试的bug发现率开始下降时,可以创建新的随机测试探索设计的新领域。最后几个bug可能只能通过定向测试找到,但绝大多数的bug都可以在随机测试中找到。
目前业界主要用的验证方法学是UVM,相较于其他验证方法学的发展过程如下图:
可见UVM是集百家之长的结晶。UVM是一种基于Systemverilog的验证方法学,其特征是提供用于基本验证结构和可调用的基础类库,可让验证工程师快速搭建可靠的验证框架。UVM自定义的框架构建类和测试类能够帮助验证工程师减轻环境构建的负担,将更多的精力集中于制定验证计划和创建测试场景。
验证工作当然离不开工具的支持,我们看一下验证工程师常用的EDA工具:
验证工程师是什么,干什么?已经给大家讲清楚了!
1.首先是本科以上学历,最好是研究生,理工科,最好是有电子信息、计算机类背景;
2.需要有较好的逻辑思维能力,这个能力一般理工科背景的工程师们都不差;
3.验证意识,对任何东西都要有质疑的态度,对问题要刨根问底;
4.具有积极主动的自主学习能力;
5.具有良好的团队沟通能力;
学习入行的方式有2种,一种是自学,另一种是选择一个培训机构。如果想成为一名验证工程师,那么需要掌握下面必须的技能:
1.常用的EDA工具,一般这些工具对于硬件资源要求较高;
2.设计验证语言,Verilog、SystemVerilog、SVA等;
3.验证方法学,UVM等;
4.常用的脚本语言,pythonn、perl等;
5.常用的标准协议;
6.工程化标准化的验证流程,能够制定验证计划搭建验证平台等;
对于验证工程师需要具备的以上技能,如果采用自学的方式,时间成本将是非常高的,并且缺少实践,对于知识本身的掌握也是不牢固的,为此可以推荐选择专业的、有项目实践的培训班,即可系统学习,还有工程化的工作环境以及大量的实践项目,巩固所学,有效的提升验证技能。
IC设计这个行业是非常重视项目经验的,很多IC设计企业在招聘时很看重这些,所以我们想要找到好的工作,就必须积累一定的项目经验,这是非常重要的。
书本和互联网上的资料很多,但是工程类的工作,如果不上手操作基本上很难留下深刻的印象。可能有人认为可以做一些习题,但是习题往往不具有工程实践。就像大家学书本的英语,如果不去开口跟老外交流,这样的英语是不会被记住的。因此,工程类的技术一定要在具体的项目实践中应用。
最后再给大家分享一些关于求职就业的一些技巧。
一般企业都会进行多轮面试,不过技术面是必不可少的,并且在技术面试对于项目经验会问的比较详细,会涉及到如何完成项目、遇到的问题等等。
一般的面试流程如下:
1.自我介绍
2.验证项目情况,怎么实现的,遇到了什么问题,如何解决等等
3.Verilog、SystemVerilog、UVM经常用到的内容
4.笔试(一般大公司都会有笔试)会涉及专业知识
5.问什么说什么,没有问的不要抢答,任何问题三思而后答
6.情绪保持平淡,沉着理智,不要表现的很亢奋或者很紧张
好了,本次就分享就到这里,最后给大家一点建议,这个行业真的是一次人生机会,如果你觉得自己努力一下就可以抓住,那就不要犹豫,很多时候选择大于努力。祝愿大家能成功进入到这个行业,有一个美好的前程。