IC设计职位详解之“数字验证工程师”就业必学课程
时间:2023-10-18 10:37:01
数字验证在数字中IC设计过程的前端属于数字IC一种设计岗位。IC在设计中,数字验证的比例非常大,许多大公司、数字前端设计工程师和验证工程师的比例已经达到1:3。
数字验证主要分为几个层次:IP level, unitlevel,fullchip/SoC level, gatelevellevel,硬件加速仿真等。
一、数字验证工程师主要做什么?
1. 阅读各种SPEC
最重要的一个spec是design spec,与您合作的好基友设计工程师撰写的设计文件如下:UART IP Core Specification
需要是:
fetures:该模块需要支持性能列表。
IO ports:外部模块IO端口。
operation mode:该模块的主要工作模式。
除了这个详细的设计文档,如果是这样的话IP需要很多协议,自然要看一些协议文档,比如AMBA总线协议,MIPI协议,DDR协议等。
2. 撰写verification spec
在公司里,工程师在做事之前需要出具详细的文件,验证工程师也不例外。你想出的文件叫做verification spec,主要内容包括:
验证平台架构:是的UVM以验证平台为例。
现在IC在行业内,许多公司都有不同的验证环境,如纯度C/C 有纯的环境UVM的环境,有UVM C 甚至环境systemc环境。总的来说,目前的趋势是UVM验证环境上升。
测试用例(test plan)
test plan出炉是一项高质量的工作,因为它决定了你验证的工作量,最重要的是它决定了你验证的完整性。验证工程师的最终目标是覆盖所有情况,而不是放手bug。
你需要和这个东西designer经过反复详细的讨论,进一步优化和补充本文档。
3. 建立验证环境的代码
verification spec完成后,将开始代码,使用各种验证语言来构建验证环境。常用的验证语言包括C/C ,systemC,systemverilog。
4. 创建test cases
根据前面完成的细节test plan创建验证所需的用途test cases,每家公司对test cases命名有一定的规则,比如长这样:
有些公司直接使用数字test cases命名。
有些公司直接用脚本生成test cases,只需调整一些关键设置,用脚本刷,case全部生成。
当然,每一种创造cases方法各有优缺点,进公司后只能入乡随俗。
5. debug
验证环境和测试用例都搭建好了,下一步重点就是仿真和debug是的。事实上,搭环境的时间只占20%左右,debug是最花时间的。
模拟中使用的工具主要有:
mentor:questasim
cadence:NC-sim
synopsys:VCS
几个工具一个比一个好,当然价格也比一个贵。如果工人想做得好,他们必须首先利用他们的工具。为了改进你的模拟和debug还应研究工具中的效率和良好功能。
debug主要目的是寻找RTL的bug,当然,前面建的验证平台也会有很多bug,最终的目标是一切test cases都可以完全模拟。
最主要的debug手段有:
查看log文件:模拟结束会生成许多结果文件。
看波形:最常用的工具是verdi了。
每家公司对工程师进行验证debug例如,不同的要求是不同的AMD,需要验证工程师能找到最终的root cause,大多数公司只需要验证工程师的基本定位designer去详细debug。
6. regression和coverage
项目后期,一切case都pass过了,而且比较稳定,下一步就要开始跑了regression和coverage了。
所谓regression一切case同时跑一遍,因为大多数case里面会有很多random因此,在不断重跑的过程中,机制会随机出现case fail。这也是regression主要目的是抓住那些极端情况debug。
coverage主要包括code coverage和function coverage等等,每家公司的要求都不一样。
每家公司跑regression和coverage将使用脚本来完成,如何高效顺利地完成,是最关键的问题,最终的结果通常以网页的形式呈现,直观清晰。
7. support
验证工程师的常规任务几乎完成了,support属于高级版。比如项目用的database出了问题,跑仿真用的flow遇到问题,经常叫验证工程师support,帮助解决问题。
当然,这并不重要,但如果你经常帮助你的同事解决这些问题,那么你在公司的地位可以增加,晋升和加薪更有筹码。
8. meeting
作为验证工程师,和其他工程师一样,经常有无尽的会议要开,各种各样的会议review,各种讨论。
作为会议组织者,请记得提前做好充分分的准备,否则很容易被鄙视。
因此,总而言之,编程最重要的两件事是:编程debug
二、主要处理数字验证的人有哪些?
1.前端设计工程师是验证工程师处理最多的(RTL设计工程师),经常一起讨论问题debugcase,目的是让写verilog代码没有bug。
2.经常需要和架构工程师打交道,了解更多芯片的整体结构和features;
3.如果你也负责后仿的话gatelevelsimulation在这种情况下,还经常需要与后端工程师打交道,因为后仿网表是他提供给你的;
4.DFT工程师经常来找你,因为他也需要做测试和验证。很多时候,他的验证平台经常从你的验证平台移植;
5.FPGA工程师经常因为FPGA验证也是数字验证的一种,你们会复用很多的测试用例,他也会经常来找你复现一些错误现场。
当然,如果你在一家大公司,分工会很明确,你不需要和那么多人打交道,比如你只负责IP level验证,基本上只需要处理前端设计工程师。
数字验证需要掌握的技能和条件。
现阶段由于数字验证平台种类繁多,主要平台有:
纯verilog平台、SystemC、纯C/C (CPU验证)、纯UVM平台、UVM C/C 其他语言混合平台(Matlab等)
每个平台都需要你掌握不同的技能,但主流平台是3、4、5。初级工程师很难掌握所有这些技能。如果你搭建了所有这些平台,你将成为一名老司机。
因为验证工程师需要编程,所以掌握编程语言也很重要。例如,掌握以下知识更为重要:
Verilog、 C/C 、 Systemverilog、 UVM
此外,验证工程师往往需要流程自动化,因此还需要一些脚本语言:
Shell、 Makefile、 Perl、 Python
除此之外,熟悉一些协议和架构也很有帮助,比如:
ARM架构、 AXI/AHB协议、 MIPI协议、 DDR协议等等
所有的技术类岗位,主要看的两点就是:专业技能(skills)和项目经验(experience)。
所以除了上面列出的技能,你实际上可以做一两个项目,即使是IP水平验证项目也很重要,特别是在项目积累的过程中debug经验。
如果你是学生,几年前很少有人知道如何验证,所以基本上你只需要verilog,可以找到验证工程师的职位。现在学生通过各种渠道(如:ic学习,掌握以上技能,甚至积累一两个项目经验。
谁能学习数字验证?
目前,数字验证工程师主要招聘本科以上学历,对专业要求不是很严格,非集成电路方向也可以,只要你掌握以上技能,即使不相关专业,如材料、物理、自动化、机械等专业,也可以成功申请。
五、数字验证的发展方向?
在未来的发展中,有些人将永远做技术,成为高级验证工程师,有些人将成为验证经理,做一些管理工作。好消息是,只要大多数人继续这样做,他们就可以成为高级工程师(STAFF级别)或经理。
也有少数人可以转,比如做架构工程师,去EDA公司是应用工程师(AE),或者干脆创业。一般来说,大多数验证工程师都会继续这样做。毕竟,这个职位仍然是一个天花板不低的职位。
关于《数字验证》就介绍到这里!!!
你唯一需要保障的只是时间和坚持!
了解→
就业、面试、课程、未来职业规划@小编
喜欢你就分享,有想法、有疑问你就@私信我,实在不行还可以在评论区哔哔…