新手芯片验证工程师如何快速提高自己的水平?

原创 路科验证 2021-07-07 13:36


距离我上一次“开嗓”写回答已经有半年了.. 这个问题肯定不属于热门话题,但必须属于正儿八经想在验证行业钻研的靓仔们肯定会问的问题。
如果这个问题是工作一年以后的“新手”提的,我会特别愿意分享一点我的看法;如果这个问题是即将要步入这个岗位,或者刚刚入职的新人提的问题,我给的回答大概又不一样。
这么区别的逻辑其实跟雷布斯先生之前一句话“年轻人入职半年内先不要提看法,很多想法都不成熟”有类似的地方,它在于如果你只是刚到岗位,希望到岗位的一年能够“学天下之学问,集众家之所长”,我恐怕我接下来的回答会让你失望。如果你已经工作了一年(以上),再来看我的问题,能得到你同意的机会大概会增加好多。
我对验证新手的定义大致也在与上面分析有关,可以分为0-1岁,和1-3岁,这里指的都是芯片验证经验。
0-1岁
写一句不正经的话,我希望你能在这个岗位的第一年,踏实做人,不要吐槽(更不要跳槽)。把这句话记住,再来看接下来与技术有关的建议,多数时候,对于新人的培养,给不给机会、压不压担子,不只是看技术水平,看你进公司以后的做事处事一样重要,而且越往后越关键。

3年前回答这个问题,多数只用考虑科班同学了,可现在我们的正式学员(和更多的“非正式学员”)涌入芯片验证行业以后,我就有必要分开来谈这两类新人了。

对科班同学而言,我希望你运气好能够找到一个教你规范出活儿的师父(导师),如果没有,你至少应该在公司库里搜索到哪个大佬的代码,干啥呢,一个字那就是抄!这一点就跟小时候教你背唐诗三百首一样,不管什么意思只管记。对于验证职业而言,抄代码本身是有很大的操作空间的。为什么这么说,因为验证工作多数时间是在写软件逻辑、而且现动态仿真验证又多数基于UVM框架,等你在岗位上基本整明白了UVM框架,那就是在第一年多抄多学前辈的代码是怎么写的。这就跟我们给学员教V2Pro验证课程一样,也许这个设计对你来说工作一年以后已经可以应付了,但我希望你能操作得漂亮,你看欧洲联赛的球员在球场上卸球技术跟国内球员是一个水平么..

既然你有这个意识提出这样伟光正的问题,那我就希望看到这个回答的验证新人在一开始就能对自己严格要求,多看看周围大拿的代码,知道什么是好代码的“味道”。在这里也许你还有问题,怎么辨别什么是好代码?——一个简单的办法,那就是代码如果你能不费力地读懂环境结构和逻辑结构,那它就值得一读,如果具体的函数方法、调用关系、配置关系都能理清,那它就一定有值得你学习、值得你抄的地方。如果你正好被分配了一个模块,那么就按照这个抄,不仅能少走很多弯路,而且遇到了问题,你还能这样问哥(gie)哥(gie),“大神我觉得你的代码很棒,我抄完了,可是不能运行,你能帮我看看吗?”这个时候被要求提供帮助的人也会带着扶贫的精神面貌投入到帮你调试半小时的工作当中去的..

抄要抄得好,我的学员不少都是在工作中搬着我们课程里的代码,几乎是整段整段地抄,抄得出错了然后在我们学习社群讨论,大家都是基于同一种验证环境搭建方式和编写测试用例的方式,有了基本语境,大家讨论起来也就容易多了。

同时在公司的第一年,也一定要将与自己有关的项目流程搞清楚。不少没有入行的新人会跟我讲,觉得红宝书里的前面几章有点拖沓有点看不懂,我一般给的回答都是,等你工作一年以后再看看这些章节,是不是还能提出这样的问题.. 不同公司的项目流程大框架(骨骼)一样,但是细节(血肉)有很多差异。这里谈的前提是,公司有相应的流程,不管繁简,它必须有流程。缺少流程的特征是,每个人的验证结构都不一样、每个人的验证计划要求和颗粒度不一样、每个人跑回归的方式和收集覆盖率的标准也不一样,当然还有可能没有设计文档、自己也没有出验证文档等等,如果真是这样那就没有流程可以谈了。

公司有一个规范的流程,能够让新人更快地被嵌入到这个系统里,更快地成为 一枚合格的螺丝钉。先别贬低螺丝钉,在不同的职业阶段,对螺丝钉的看法也是不一样的。作为社会新人,你必须用最快的速度成长为一枚合格的螺丝钉,如果一家公司缺少规范的流程,那么你这颗螺丝钉在成长过程中那就可能要“渡劫”,而且是各种各样的劫,别说一个新人了,就是一个有经验的老师傅也未必能把流程在较短的时间里梳理清楚,即便梳理好又得赶得上项目的时间安排,还得给不同经验构成的验证工程师安利地推,总之这是一个试炼的过程,有多心酸就不多说了。如果你的岗位已经有较为规范的流程了,那就好好follow它,在现有流程能够把与工作相关的部分都能掌握到(不一定是全部,但应该是与自己相关的部分能够掌握熟练),比如验证环境搭建、比如测试计划拆解、比如测试用例实现、比如回归流程和覆盖率收敛分析、比如验证文档规范,都需要你跟着一步步地来。

对于工作10年以上的老师傅,他会觉得一年过得很快,但对于一位0-1岁的验证新人,一年的时间里你会学习到很多知识,这里我更多谈的是“规范”,被动的规范和主动的规范,这就跟以前的手艺人教徒弟一样,教把式其实很快都能学会,可徒弟怎么才能走得远,还是要把基本功打好,站桩马步不能少,别问为什么,只管做吧,早买入不会亏的。

对于科班生的基本功,同样也是非科班生的基本功,只是在这些基础之上,还有更多的任务等着非科班生,你能不能在一年以后的绩效评审上跟科班背景的没有表现出绩效差异,第一年非常关键,也往往是最累的。

相比于科班生,非科班的情况那就复杂很多了,年纪大小不一样、非科班的背景也不一样、以前从事的行业岗位也不一样,这都会对能多快适应验证岗位、多快出活有关。是的,你没看错,雇主是把科班和非科班一起招进来了,可他不一定是100%自愿的,也许受限于目前的人才市场对口人才紧缺的情况,才做的这样的决定。所以,雇主对你的期望(或者薪资)是可能低于科班生的,但别悲观,这未必不是好事。就跟打游戏一样,你一开始选择的熟练度如果跟你的经验不匹配,你会被虐得体无完肤,而且直接删除了这个游戏,一开始做个倔强青铜多好,躺平都可能有50%的胜率,何必刚做完教学练习,就去攒白银和黄金的局,被队友骂到破防奔溃也不是好的体验吧。

如果雇主对你的期望处于平均值乃至平均值偏下,那你就应该在第一年努力做到这个线以上的水准,哪怕刚刚够到这个线,你在一年以后都在团队里有个“名分”,分什么活你都可能在备选名单上,而不是被边缘化。

非科班如何在第一年补短板?我给的建议是如果可能有,如果你还没有上岗,尽量把这些补课的时间赶在上岗之前做好,能学多少学多少,一旦上了岗那就是“排位赛”了,你的胜率太低能不能熬到下个“赛季”在同一家公司就很难说了。之所以给这样的建议,是因为你根本不知道新东家是否要加班、每天加班、周末加班、只写测试、调试、出活,不给你思考、学习、补漏、总结的机会。如果你看这个回答的时候已经在岗位了,一个比较容易做到的建议,还是能够在上下班的时间里多听听课、补补基础知识,至少你作为verifier跟RTL designer沟通的时候,他讲的设计基础、代码逻辑、波形解释你都能听得懂,然后再慢慢跟上他们的语境,能够在刚开始的工作中不被designer吐槽说你是个“非科班”的(这句话很伤人,对不对?)。


1-3岁
我这里就假定科班和非科班的verifier通过一年的时间,努力的拉平到一个水位线了,那就是能出活了(跟我研二实习生的水平差不多)。然后再来看,怎么在你职业生命的三年期上,能够更进一步。先看我对三年验证工程师应该达到的平均水平的一个大致目标吧:
  • 可以不依赖任何外部工具,独立搭建验证环境。
  • 可以交付符合一线公司要求的验证测试计划。
  • 对常用标准总线和其对应的验证IP能够熟练使用。
  • 能够对某些关键的自定义接口时序做充分验证,比如嵌入断言做仿真或者做形式验证,也可以为其开发符合一定要求的接口验证IP。
  • 能够交付给上层系统维护者(系统验证架构)稳定成熟的模块验证环境以供复用。
  • 能够完成编译测试流程、回归流程和上层环境流程集成等。
  • 能够交付某个模块从开始到核签(signoff)的验证代码、覆盖率数据和文档。
  • 能够在自己所从事的某个领域有系统认识,比如特定方向处理器、特定计算功能模块、高速接口方向、数据流方向、数据网络方向等。

这里并没有局限到某一种特定功能的芯片,而是把工作三年的工程师应该达到的要求写了下来,有了这样的标准,我们也要方便接下来谈怎么实现。

以上的部分对于工作三年的verifier看起来都不陌生,不过细究起来可能在很多地方都有要补课的地方。这就跟用人企业在面试工作三年的verifier的时候,不知道怎么给出具体评价,老实讲我更多时候愿意看他们写的代码,这就跟我招实习生一样,谁的作业好、谁的作业打卡漂亮,一目了然,code要比talk更能说明问题。而多数企业没有这样的“试写代码”环节,那就是以面试候选人做的项目大小、模块复杂度来做参考的,只是项目和模块的难度跟个人在项目里的表现是没有直接关系的,等候选人上了岗,有多少人的表现是你所预料不到的,这一点每天都在发生。

上面我所谈到的方向,抽象出来可以分为五个点,供你逐一攻克,它们是:
  • 芯片产品
  • 业务标准
  • 环境流程
  • 工具技术
  • 底层组件
  • 芯片产品

这个基本上是业务的最顶层了,它笼罩着不只是验证,设计、架构都在其中,换句话说,你要验证的功能模块如果是在芯片产品方向的轨道上,那么你以后应该深挖的就是这些不同的轨道,比如5G方向的算法,你也许可以不懂直接上手验,但是你如果懂了,你就有机会理解清楚某个功能子系统的软件调用、硬件布局和它们之间的协作方式;比如你可能在从事RISC-V处理器的开发,那么你对指令集的理解、对cache一致性的理解也都会影响你的工作表现。

业务标准

除了某个具体方向的芯片核心功能部分,你可能会从事某个标准接口、商业IP的研发或者集成工作,比如ARM架构处理器的集成验证、比如PCIe、DDR的研发或者集成验证,从事这个方向也意味着需要投入大量的时间去研读商业文档、标准和结合设计功能做配置测试、以及开发部分底层的驱动软件。同时,你还需要能够为其构建对应的IP层级的验证环境,这也离不开对相对应的验证IP的熟练掌握

环境流程

每家大公司的环境流程都不一样,都可能非常复杂、有自己的优点、也有不适应中小公司的诸多臃肿的功能(跟大公司的完善而又臃肿的部门组织类似),你需要能够很快地适应、嵌入到这个流程,逐步认识它,掌握它更多的功能,再去拆解它,试着分析它某一块具体的功能是否能够简化、或者定制,以便为你希望的流程做服务。更重要的是,你理解的这些流程还不够、你最好还能学习一些软件和界面编程技巧,试着模仿对应的业务,开发出自己的产品原型。注意,给你带来增值的不是你做出来的那些可能有点笨拙丑陋的界面,而是在于你通过这些“临摹”的方式学习公司内部环境流程开发的过程、从更深处理解流程为什么要这样做、有哪些优缺点、做好“军演”,以便以后到了某家公司可以有发挥价值的地方。

工具技术

动态仿真技术现在已经不可或缺了,而同样不可或缺的还有形式验证技术、硬件加速技术、FPGA原型开发等,没有接下来的可移植激励(PSS)和对应的工具也会出现在公司的流程工具清单里。希望你能够在工作到3年的时候,已经试着用过某一种区别于动态仿真验证技术的工具,认识到某一种技术和工具会对你带来额外的增值(薪资和职业生涯)。当然,这也能让你在以后的道路上,越来越谦卑起来,验证技术的更迭真是友好到不会贬值那么快,也真是不友好到好像动态仿真这个坑还没有蹚出来,又来了更多的坑,而且你还不得不跳——没错,这也就是为什么我做验证咨询让我感受到工程师成长快乐的原因。这种幸福感多半来自于,你不会焦虑知识的过度衰减、你又能为每天学习到新的内容而感到充实。嗯,(我)到了中年的快乐,除了书和酒,也就剩它了吧。

底层组件

不是每个人都需要造轮子,但是你如果是验证团队的核心(或者你想成为他)的话,你必须精通这一技能。这个技能在多数公司不会为你带来明显的薪资上的涨幅,但它暗藏宝贵价值、尤其是目前创业氛围浓厚、未来会天下纷争多年的情况下,掌握了这一屠龙技,你便有机会成为合格的验证领队了。底层组件在大公司内部,有很多的贡献者,这来自多年的积累,但受限于IC的封闭文化,你从大厂出来以后两手空空,大千世界都需要你一草一木去培植。这个时候如果你拥有可以构建底层组件的能力,那你将是天选之人。要不要做管理、还是继续做资深专家都是你说了算,说到这里,“来都来了”,做个资深专家有什么不好的呢?我们这里谈的底层组件其实包含了很多要处理的事务,在一些大厂有专门的岗位被称作架构、方法学、流程整合,而在中小初创企业,能提供的岗位就是验证领队或者是独立贡献者(与总监差不多的级别)。

以上的东西可能给出了一个大概,因为上面讲的需要准备的、深挖的技能点,越往上走越适合在一家大厂生存(而且大概率越精通越活得滋润),而越往下走越能像易筋经一样把内功练到家,无论是大厂还是初创企业都能很快找到自己(想做)的位置。

因为我的个人职业生涯是选择往下走的,就是处于验证架构、方法学和环境整合方向的,这样的岗位每家公司都凤毛麟角(或者没有),但产业要升级、我们国内芯片验证做事的标准也必然会升级,即便不是每一位verifier都可以遇到这样的机会,但把内功修炼好,走到哪里真得都不怕,真得,不管公司大小——你一点都不慌!

所以,从职业发展也罢,还是技能培训也罢,都可以选择往上层走、或者下层走,就跟RPG游戏升级技能点一样,你必然需要侧重某一个属性体系重点发展技能树。而我从19年就在吭哧吭哧准备的V3课程也就是目标着眼于往下层走,把所有的适配于多数验证公司和场景的技术、工具、流程和思维模式都放置到这个课程包里,代码量和备课量都远超过V2Pro,一点不亚于出版红宝书的前期准备工作(16年-18年)。

备课期间我其实主动推掉了不少可以到一线城市给芯片公司做验证专家咨询的公司,但能把我以往的思考所得,继红宝书之后再能够以课程(以及出版相应的第二本书)这样的形式帮助和影响更多认同路科验证的朋友,这也是一种职业道路的选择。

所以与回答刚开始相呼应,要做事先做人,很多人之所以愿意伴随我们这么多年,也是在技术分享和精进的道路上逐步建立起来的信任。这就跟一位验证新人刚进公司一样,如何获得你老板对你的信任,也取决于你做事情的态度。千万不要说你不行,那只是你没有给你自己犯错和改错的机会。

希望未来国内的芯片验证领域能够越来越壮大。路在脚下,诸君一起努力吧。

路科验证 专注于数字芯片验证的系统思想和前沿工程领域。路桑是Intel资深验证专家,主持验证架构规划和方法学研究,担任过亿门级通信芯片的验证经理角色。在工程领域之外,他在西安电子科技大学和西安交通大学客座讲授芯片验证课程。著有书籍《芯片验证漫游指南》。
评论 (0)
热门推荐
X
广告
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦