Amiya · 2022年07月22日

IC验证工程师高效战斗手册--接到验证任务与前期高效学习

来源| 杰瑞IC验证(ID:Jerry_IC) 
原创作者| Jerry

前面我们讲了贯穿整个工作始终的提问之道,今天我们一起探讨接到验证任务、以及验证前期如何高效的学习。

1 接到验证任务

验证工作开始的第一个环节是什么?

有人说是学习spec,有人说是提取feature。

这些其实也都没有错,但其实在这之前还有一个关键环节你没有意识到,那就是“接到验证任务”。

“兵马未动,粮草先行”,杰瑞IC验证认为,接到任务时候就应该带上一些“小”行动和反应,为后续验证工作高效展开打上基础。

即从你接到任务的那一刻,这场仗就已经开始了~

(1)确定验证对象状态和各个环节负责人

你需要确定清楚你接到的这个验证对象是什么状态,这是一个将要完全新开发的项目还是在上版本基础升级的项目?

是全部自研的还是有第三方IP的成分?

大的策略是白盒、黑盒还是灰盒?

你即将合作的算法和设计负责人是谁?

如果是升级项目需要确认这个项目的老版本的算法、设计、验证负责人是谁?

还有项目上下游部分的负责人是谁?

……得到这些信息后,第一时间给这些人打声招呼,确认接手或合作关系,了解这个验证对象初步情况,保持信息沟通顺畅性。

(2)确定各方时间节点

首先了解整个芯片项目的研发时间规划以及分配到你所负责的验证任务的时间规划节点和deadline。

但是,仅仅了解到这些项目规划层面的时间信息是远远不够的,因为规划与实际肯定存在差距,你需要紧密掌握算法、RTL设计者他们从实际工作量出发对自己的时间节点估计。

依照上述时间节点,结合自己手头任务状况,制定你个人的最高效合理的验证计划,此时至少要清晰知道自己的前期学习时间。

(3)资料资源快速同步

如果公共项目文件已经建立,明确项目文档在文件管理系统中的路径先顺手下载到本地,浏览已有的大概内容。

向各方对接人拿到当下可以参考的学习资料、协议等,推荐学习资源,并且可以讨论哪个文档是重点,以及文档学习顺序。

(4)工作站文件更新、alias路径定义

相关项目在工作站中文件如果已经建立,接到项目明确路径,顺手更新下,然后在shell的配置文件中定义一些alias路径防止路径忘记和方便目录切换。

例如:alias  tortl ‘cd /home/xxx/xxx/rtl’

当你下次在工作站上输入tortl,直接就会跳到/home/xxx/xxx/rtl路径下。

(5)VIP和公共组件初步判断

此时你虽然没有深入的想验证方案的细节,但是你可以通过大体了解的信息,初步判断手上接到的这个验证任务是否需要使用VIP或公共验证组件等资源,如果涉及到自己没有使用过或不熟悉的组件,同样需要考虑到学习计划之中。在接到任务的时候就要收集到相关资料和代码,制定学习路线。

2 验证前期的高效学习

接到验证任务后,我们已经快速准备好了我们的“粮草”,随后将利用这些准备,进入学习阶段。

对于验证,前期一定需要充分投入时间对验证对象深入学习和理解,只有对验证对象理解的很清楚,才能更好的保证验证质量。

但是新人往往不能很好的利用好验证前期宝贵的学习时间。

一方面原因,在验证学习阶段,通常并不像验证平台搭建阶段,在自己动手写代码的时候,具有更多的兴奋感和专注感。

另一方面原因,可参考的资料和文档很多,常常东看西看,抓不住学习重点。

杰瑞IC验证认为,即使是前期的学习也是应该明确的分阶段进行的,并且重要的是在每一个学习阶段都应该有明确的学习目标和侧重点,对于重要的内容可以通过重复和串讲达到更深刻的认识。

此外,各阶段学习时间安排应该与各种会议、计划等时间节点相结合,统筹安排,灵活拆分与变通,以达到总体最高效率。

(1)扫盲学习阶段

新接触的项目,必然会有很多你没听过的概念或专有名词,或者项目的发展大背景,而这些内容需求、设计等文档往往不会介绍或者介绍很粗略,如果直接下手看文档必然一头雾水,所以你必须先经历一个“扫盲学习”的阶段。

这个阶段,你需要通过各种方式了解你文档中不懂的所有专有名词和概念,网上查查这个项目的存在意义、发展背景、基本原理等。

(2)应用场景和需求学习阶段

扫盲阶段初步入门之后,知道了关于接到的项目的基本通用知识,然后回到实际手上的项目,此时需要了解我们手上的验证对象为什么要做它?

主要有什么用?

和谁一起用,怎么用?

……对全局有一个基本的把握。

如果已经有了初步的需求文档,可以结合应用场景学习一下需求文档。每一条需求都要弄清楚说的什么含义,为什么要有这个需求,了解清楚这些除了结合背景多思考以外还是需要多问多交流,因为这些背后的逻辑不可能都清楚的写出来,你需要自己寻找答案。

(3)算法协议学习阶段

了解了基础和全局,接下来,结合相关文档,进一步了解验证对象所涉及的算法和协议。

算法和协议的背景基础其实在上一步应用场景和需求的学习中必然会有所了解,此时需要加深。此外,对于算法,此步至少需要了解清楚它的pipeline,每步的含义作用等。

协议了解清楚典型的时序、模式,提取出可以控制的时间参数,时序极限的情况等等。

这个阶段最好可以手上画一画,有条件的话最好可以给相关的算法设计同事反串讲一下,防止理解错误,同时加深学习印象。

(4)设计的学习阶段

学习了需求和算法,有一些资深的验证工程师就可以在脑中粗略的进行一个rtl的设计了,他们常常是带着自己的这个设计思路去与实际rtl设计人员的设计思路做比较,从设计思路上寻找设计者的漏洞,并且在这个过程中针对某些细节考虑不同设计方案对于验证需要花费的代价,针对设计方案中意义不大的冗余的功能、不利于验证和嵌入式使用的功能等提出改进意见。其实,否定或改进了不友好的设计方案,通常也相应减少了验证工作量,是从根本上提高了验证效率!

对于新手来说,达不到资深验证者的这个程度,在设计文档学习阶段,至少需要知道rtl设计基本的rtl功能点、设计结构、接口、配置和使用方式、关键路径、资源性能等内容。

(5)平台准备的前期学习阶段

到此验证对象已经基本掌握差不多了,这一阶段可以进入针对验证的前期学习,此时心中应该形成一个初步的验证计划,结合项目实际展开针对验证实施的前期学习。

考虑是继承老版本验证平台进行优化还是自己重新搭建的验证平台。如果是继承别人写的老的验证平台,那就需要看懂老版本验证平台的代码,这里绕不开需要一个交接与学习的过程。

我们对接手别人的代码往往都是比较排斥的,因为需要去尝试理解别人的代码风格和逻辑,但是这其实也是一个反思和学习的过程,在过程中进行代码编写思维上的碰撞,这个碰撞对于提高自身是有意义的。

除此之外,需要正式学习我们上文讲的接到任务之后提前准备的我们不熟悉的VIP、公共验证组件等内容,理清楚这些VIP和公共组件的集成方式、使用方法、有什么坑等。此时可以跑一跑VIP和公共组件的小例子,结合波形和打印信息理解其中细节,在编写正式的验证平台之前扫清楚障碍。

3 结语

我们说过,“验证高效之道,乃细节之道”

今天分享的不论是接到验证任务时快速响应为后续做好铺垫,还是前期学习分阶段有重点的高效稳步进行,其实也都是注重细节的体现。

杰瑞IC验证与你同在,一起做个有心人,加油!!!

——The  End——

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
10974
内容数
1216
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息