验证工程师的自我修养

 

  • 作者:路桑
  • 链接:https://www.zhihu.com/question/26109157/answer/445562251
  • 来源:知乎
  • 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
     

1.1 验证师的培养

       我们之前针对验证师的“自我修养”提出了与技术和项目有关的要素,也明白了验证师需要得到多方面的锻炼。在这些因素背后,通过日常的观察,我们可以发现优秀验证师们共同的能力。这些能力不完全是与生俱来,如果你愿意下功夫,也可以通过平时的积累来养成出色验证师的六种能力。

 

1.1.1 全硅能力

       目前软件开发领域炙手可热的人才之一是全栈工程师(full-stack engineer),他们往往通晓前台后台数据库的垂直开发,对于系统构建的理解也更开阔。我们验证领域也急需要类似这样的人才,路桑称之为“全硅工程师”(full-silicon engineer)。相比于对软件领域全栈工程师的要求,对于芯片验证的全硅能力,我们也着眼于技能和视野两方面。

       在技能层面,他需要掌握主流的验证方法、工具,并且能够结合实际来构建合理的验证环境;同时他在硬件、软件两方面都需要精通,可以随时切换来服务硬件调试和软件开发。伴随着硅前验证的完成,他也能够在硅后测试过程中配合测试人员,给出可调试的方法或者创建测试用例。目前的验证方法和理念都在不断更新,工具的特性也逐渐复杂,在技能这一侧需要的是不断学习的习惯。

       同时,全硅验证师在日常工作中,由于拥有更远更广阔的视角,无论是团队技术积累还是项目的整体收益,他都能够提前做出部署,早一步展开准备工作。团队里面有这样的人,往往如同定海神针,指引整个团队的项目工作和未来的技术储备。

 

 1.1.2 不做假设

       不做假设(no assumption)的能力往往与日常工作的习惯是相违背的,因为工程师们往往喜欢做假设。他们在奇怪的现象面前容易做假设,或者在暂时解决不了的问题上也习惯做假设。而这些假设在相当多的时候不是最根本的原因,工程师们只是通过观察问题所体现的各方面表征,来猜测问题的根源。而在更多的时候由于时间、精力的缘故一旦当时无法深究原因,同时做的假设看起来能够暂时解决问题的时候,这些假设逐渐地可能就被忘记它们仍只是一种假设,然后就被堂而皇之地发布到正式的环境或者产品当中去了。

       这种有意或者无意的行为,很有可能会接到陌生来客的造访,那就是新的问题。因此,没有弄清楚原因的解决办法都只是暂时的替代办法,而无法得到永久修复问题的保证。在这里,我们将常见的一些工作场景和建议改善的地方列举出来,希望读者们可以完善自己的习惯:

  • 在进入新项目时,假设该项目继承于之前的项目,于是所有的工作都参照以前的项目。这种做法背后隐藏的风险是,可能老的项目自身也不是百分百的完善,也有需要修改的地方。这里我们建议做更多的背景了解,从经历过之前项目的人员口中得到第一手的资料。
  • 在搭建验证环境时,你可能会假设硬件的行为、时钟、复位、数据输入的方式等。这种做法背后的风险在于一方面限制了激励的种类形式,同时也可能跟设计思想有出入。我们建议跟设计师多沟通,了解设计的行为,同时也应该将更多的激励组合方式考虑到验证环境当中去。
  • 在验证过程中,由于设计、环境、集成等各方面的因素,暂时需要对设计中的信号或者功能通过强行置位的方式,或者需要对验证环境做出暂时的改变才可以让验证继续进行。这里隐藏的风险在于,一旦忘记将这些临时的做法擦除,那么功能验证结果的可信度就会下降。我们建议将所有临时的做法在一些项目节点上做集体回顾检查,消除这方面的隐患。

 

 1.1.3 专注力

       人们会比较容易地在一件事情上专注一天、一周或者一个月,而如果他们需要专注很多年,无论对什么行业、什么职位来讲都是一个挑战。由于我们对验证师的综合能力越来越高,要培养一名验证师需要的时间和精力不允许验证师轻易地换岗,所以我们对验证师长期深耕验证技术领域的建议是:

  • 验证过程中会遇到各种困难,需要专注力(concentration)去克服它们。
  • 验证完备性要求高覆盖率,这需要专注力来不断完善环境,有足够的耐心来创建多样的测试。
  • 验证技术变化很快,要求验证师也关注验证领域最新的动态,将新技术新想法结合到实际项目中去,提高效率。

 

 1.1.4 逻辑性

       逻辑性(logic)可以被运用到工作的各个角落,无论是解决问题的思路、安排任务的先后顺序还是沟通对话都需要有良好的逻辑性。同时这一能力也直接决定了工作效率的高低。我们将验证工作中有关的逻辑性进一步划分为以下几点:

  • 环扣思维:无论在日常思考还是与人交流,工程技术问题都强调严谨的逻辑,需要环环相扣的证明。请尽量避免跳跃式的沟通方式,不过这一点在开展头脑风暴会议中可以忽略。
  • 优先级划分:在处理很多事情时,有的人往往会乱了方寸,或者,对整体的进度没有准确评估进而影响到别人。这里优先级划分可以让人在一段时间内优先解决更迫切的问题,同时这种专注的方法也不会让人由于不断切换问题而丧失注意力。
  • 分工协作:验证师在芯片级验证阶段需要更多的合作。如果整个团队的协作良好,那么大家都会清楚自己和其它模块验证师之间的验证依赖路径,从而一同朝着整体验证目标迈进。
  • 结构化复用:这是针对环境的一项具体要求。验证师只有清楚模块自身和集成的细节,才能设计出可以更容易复用的验证结构。

 

 1.1.5 战鼓光环

       优秀的验证师除了自身的高效且富有经验,也需要将自己的经验财富尽可能多地输出。在一个验证团队中,我们需要几位身经百战的大牛可以一方面指导工作,另外也能够鼓励大家,提高整体的士气,及时帮助团队解决难题,这种积极的能力辐射路桑称之为“战鼓光环” (war-drum aura)。这些大牛除了技术精进之外,也可以兼具以下的能力:

  • 激励(driver):在团队完成一项任务的时候可以及时鼓励,凝聚人心。
  • 督导(monitor):关注团队的项目进度,一旦有问题可以及时发现帮助解决,或者指导调整工作的方向和重心。
  • 评估(scoreboard):对团队中的个人表现作出公正客观评价,为优秀验证师提供更多的机会。

 

 1.1.6 降低复杂度

       这是一种特殊的能力,但也有规律可循,运用这种能力最多的场景就是去调试古怪的问题。人们在遇到了一种超出自己已有能力和经验范畴的问题时,往往需要作出不同的尝试来解决问题。没有人在爱迪生发明灯泡之前知道,钨丝是最合适的材料。在一个前所未见的问题面前,我们首先要考虑的是通过降低问题的复杂度(complexity reduction),来逐一突破。如果试图一步到位去解决它,恐怕要走的弯路不见得比一步一步解决来得少。降低复杂度的技巧一般包括:

  • 拆分问题:将问题尽可能拆分为多个子问题,找到依赖关系和难点,并逐步攻克。
  • 引入最少变量:在针对问题做各种尝试之前,将可以调节问题的变量数目降低到最少。最快的方式反而是逐个调节变量,而不是对多个变量的复杂组合作出尝试。
  • 搜索资料:无论是通过同事间的谈话、查阅文档还是网络资源,正确地提出问题,将问题拆分为别人听得懂,最好是可能遇见过的形式,有利于让你得到有价值的建议。

       看到上面这些优秀验证师的能力,再结合自身,你不妨思考一下,还有哪些地方需要日常的修炼。无论在什么岗位,不进则退。如果你不想在多年以后,对所从事的工作产生厌倦的话,那就趁着你现在心态还年轻,还在翻看这些验证知识的时候,也开始这六项验证能力的修炼吧!

       更多关于芯片验证的专业知识,可以用手机订阅路科验证公众号(微信号:Rocker-IC),也可以阅读《芯片验证漫游指南:从系统理论到UVM的验证全视界》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值