听说最近硬件很香?分享下IC验证工程师真实的一天
大家眼中的验证工程师可能是整天对着电脑撸代码,或者是像一些自媒体宣传的那样和设计工程师扯皮。曾经我也这样认为的,验证工程师就是敲代码,但是真实情况真的不是这样🤣
入行后验证工程师后,最大的感受就是验证工程师的每一天都很不一样,至于每天干啥要取决于项目进度,环节不同、模块不同,工作内容也就不一样。以及一个项目中每个工程师负责的板块不同,工作内容也完全不一样。之前我还担心会不会很无聊,入行之后发现大可不必担心无聊、枯燥、重复、简单这一问题。因为验证工作本身是真的不简单呀,真的是需要不断地学习总结!
例如删减版的SOC芯片的spec目录有400页,目录里有28个章节,每个章节都是一个模块,这些将分配给多个验证人员,一般情况下会给一个工程师分几个模块进行验证。(当时这28个模块,也并不是每一个都需要验证。)正因为这样,虽然大家都是验证工程师,但是大家的工作内容都是不一样。
最开始接触IC的时候,我都联想不到这些SPEC中的模块和芯片到底有什么关系,之后我又看了一张通俗易懂的图,这下就可以理解的大概了。
芯片中大多数管脚上面差不多都能找到刚才目录中出现的模块名,芯片内部就是由这些模块构成的,每个模块都有不同的功能。
这就是验证工程师的全部工作内容了,我认为:一个合格的验证工程师不仅仅只具备Coding能力,逻辑分析能力、团队协作能力、良好的交流沟通能力也是很重要的,同时也要善于归纳总结,积累经验。
那么验证工程师的一天具体都在干啥?
- 项目需求确定后,首先要先看spec、学习协议,来编写硬件概要验证方案文档,评估,预计验证需要花费的时间。
- 开会讨论,一般由Leader定下方案,下面的验证工程师负责执行。
- 根据spec,以及相关协议。详细书写验证计划,确定需要验证的功能点。有必要的话,可能还需要自己搭建验证环境。
(1)验证工程师必备的技能,System verilog和UVM这时候就开始派上用场了,根据验证计划、Coding代码、生产test case,执行验证。
(2)平均一周内正式开会不少于两次,和其他工程师大大小小的交流也会有很多。
(3)数字电路设计发展到这个阶段,不管是电子设计自动化工具(EDA),还是验证语言,验证方法学,促使验证工作中能接触到的实际电路越来越少,或者说根本就接触不到底层的电路,反而更像是一个程序员(也许是自己才疏学浅产生的认知)。
(4)熟练掌握SV和UVM,根据验证计划写test case其实没有多大难度,我认为验证的难在于验证平台的搭建、脚本搞不定、各种协议理不清,也难在SV、UVM基础太烂就上手。
(5)Test case写完了就完事了?不存在的,写好test case之后,你会进入一个漫长的调试环节,你要是遇见一个很优秀的RTL,倒是可以省去你的很多时间;但你要是遇见一堆很烂的RTL,那你就得好好调试,看波形,修case。一路顺畅还好说,要是碰到源源不断的问题,那就得加班。
(6)debug的过程是最为煎熬的,也是设计和验证存在扯皮的地方。
(7)干项目有紧的时候,当然也有松的时候。并不是什么时间都要996,高度紧张的工作长时间下去肯定受不了呀;当一个项目干完,另一个项目还没启动,就可以享受一段Tapout Holiday,这段时间就可以过着965的规律惬意生活。
当然啦,跑tese case有时候也是很消耗时间的,在这个时间当中,和同事扯淡谈人生吹牛皮,摸鱼冲浪逗虾也是没问题的。