芯片行业是个高风险、高投入的行业,做一款芯片仅仅是开模的费用就是百万起。
从设计到制造都是环环相扣的,设计过程中的BUG或者错误能够达到上千个。
所以验证是保证芯片功能正确性和完整性最重要的一环。
如果设计方面的缺陷没被发现,那么化沙子为芯片的这种高能操作就会变成:沙子→沙子做的垃圾。这就是验证工程师之于芯片的重要性。
一般好的IC设计公司设置设计和验证岗位的比例都是1:3。
验证在设计的哪个环节?
作为一名验证工程师,一定要具备全流程的意识。芯片设计流程,主要有需求分析→芯片规格定义→RTL设计→逻辑综合→布局布线→Sign-off这几个大的步骤。
那验证处于哪个环节?又在扮演什么样的角色呢?
主要处于RTL设计环节,这个环节的验证就是功能验证,也就是RTL前仿真。在这个环节,功能验证工程师要验证RTL设计是否符合芯片规格说明书里要求的功能。
其次就是布局布线环节,需要进行物理验证,比方说时序分析和后仿真。
事实上验证是贯穿于芯片设计整个流程的,而数字验证工程师主要做的工作就是前仿真+后仿真。
扮演的角色可以理解为验证就是为设计纠错的存在。这就是验证的价值体现。
优秀的验证工程师,需要掌握的技能有很多,兼备硬件和软件,可以说是更加触类旁通。所以还是需要循序渐进,从最基础的内容开始逐步掌握。
验证工程师的必备技能?
这里罗列的是数字IC验证工程师需要具备的技能,是要用所有“资源”点满的。
· 理论知识
说起理论知识,数电知识是做数字芯片的基石,也是很多同学入行学习的第一本书,一定是需要先掌握的。可以理解为自带的被动技能。
· 语言类
先来看Q技能,语言。
验证工程师们需要使用各种验证语言去搭建验证环境。常用的验证语言有C、C++和StemVerilog。
验证岗位对Verilog语言的要求是能够看懂、能够理解的程度,并不需要像设计岗位那样精通。
System Verilog就属于验证工程师的核心技能了,随着设计越来越复杂,为了更方便例化模块,所以SV语言也是越来越流行。
· 工具类
再来看W技能,验证工具。
UVM是现在主流的验证方法学,同样属于验证工程师必备的核心技能。
当验证环境和测试用例都搭建好后,就需要进行仿真和debug了。
EDA仿真工具,不同公司使用的工具软件不同,但大都是三巨头家的(Synopsys、Cadence、Mentor)。掌握并熟练使用这些EDA工具,能够很大程度上提升仿真和debug效率。
· 环境类
接下来是E技能,环境。
EDA工具基本都提供的是Linux版本,芯片设计公司提供的开发环境也都是Linux。所以需要熟练掌握Linux环境下的常用命令和操作。
处理文本需要使用到编辑器,比如VIM,所以对于编辑器同样要做到熟练使用。
· 协议类
除了验证的一些基本技术之外。IP中还会使用到很多协议,所以验证工程师还需要了解各种通用协议。
如果说前面的技能都属于基础的话,协议就属于进阶类型的技能了,可以直接理解为大招。
· 综合能力
这类综合能力在一众技能中算是平A。
作为验证工程师,有很大一部分的工作时间都是在读文档,而文档全都是英文,所以英语的读写能力是非常重要的。
沟通、学习和团队能力就不必多说了,这是任何岗位都需要具备的基础能力。
结 语
验证在整个芯片设计流程中的重要性不言而喻。
作为兼备硬件和软件的验证岗来说,对于学历和专业的要求还是比较友好的。且路漫漫其修远兮,入行之后的进步空间和学习上限仍然很充足。
技术、管理、转岗都是可以选择的道路,自然不必担心长期的职业发展。
着眼当下,学到知识、学得扎实才是最紧要的任务。
学习之路上,IC修真院与你同行。