数字IC验证成长录--技能准备介绍

以下内容来源牛客特邀专刊《数字IC验证成长录》,作者@竹秋一


想要从事验证岗位,SV和UVM是必学的,而学习SV的前提是熟悉Verilog,因此可以按照Verilog、SV和UVM这样的顺序去学习。SV包含了Verilog的所有语法,并增加了面向对象编程的思想以及其他的数据结构。UVM的本质是SV,源代码由SV实现,相当于SV的一个库,工程师在搭建环境时可以自定义一些继承于UVM的类,从而实现短时间搭建健壮性好、复用性高的验证环境。

Verilog

学习Verilog时,这里给出的个人建议是,既然我们选择的是验证岗位,那么Verilog语法可以不用学习的特别深入,比如电路优化写法之类的,我们的重点在SV的学习,因此Verilog学习的程度大概到你能设计一些简单的模块就可以了,比如信号检测器、同步FIFO等。这里我首先推荐在B站看蔡觉平老师的Verilog课程,很适合0基础的人学习,有需要的话买一本课程中使用的《Verilog HDL数字集成电路设计原理与应用(第二版)》或者其他相关书籍,比如夏宇文老师的《Verilog数字系统设计教程》等,都是可以的。学习Verilog的目的在于进阶SV,不需要把太多的精力放在这里。

SystemVerilog

学习SV的方法我的建议是看绿皮书《SystemVerilog验证:测试平台编写指南(第二版)》,这本书比较有名气,学习IC验证的人入门时基本都看过。这本书的内容是SV的基本语法和测试平台的搭建,但是根据目录章节来看并不像一个教学书本,更像是一个标准手册,供验证工程师查询语法,很多人到最后都把它当做SV字典使用。

如果自学起来吃力,在经济实力比较好的情况下,我建议最好报个验证相关的培训班,这样可以更加系统的学习SV。如果经济实力不允许,就找一些免费的课程听一听,例如腾讯课堂里的《芯片验证V0课程》,或者B站里直接搜索SystemVerilog,有很多的免费课。

SV相比于Verilog,增加了Interface接口,class类,mailbox信箱,event事件,semaphore旗语,logic变量,bit、int等数据结构,结构体等内容。Interface方便了待测设计和验证环境之间的连接,并且可以声明clocking块模拟真实的采样驱动存在的延迟。而class相关的面向对象编程知识是一个重点和难点,因为使用SV或UVM搭建环境时,所有的验证组件或测试用例都是class,其中存在大量的继承关系与信箱连接,以及变量方法的覆盖和句柄传递,对于没有学过面向对象编程知识的同学,第一次接触时,学习起来是比较吃力的。mailbox用于验证组件之间的通信,可以用来传递数据或握手同步。event也可以用于握手同步,而semaphore可以让多个线程共享资源,可以用来模拟总线的仲裁特性。logic、bit、int、结构体等让验证工程师在声明数据类型时有多种选择。

UVM

UVM的本质是SV,UVM源码中定义了uvm_driver、uvm_sequencer等组件,并实现了许多方法,工程师继承于这些uvm类定义自己所需要的组件,就可以使用继承而来的方法,同时还可以使用uvm_event、uvm_callback等class进行通信或回调。这样的方式大大简化了搭建环境的复杂性,同时让验证环境变得标准,更加容易复用。

学习UVM之前一定要将SV基础打好,不然涉及到类型转换、参数类的情况很容易看不懂。这里我推荐张强老师的白皮书《UVM实战》和刘斌(路桑)老师的红宝书《芯片验证漫游指南》。前面说过,《UVM实战》适合刚学习完SV、没有任何UVM基础的同学,书中干货满满,通过假设有一个待测设计,按照正常的验证流程和思路一步一步的从零到完整的搭建一个验证环境,并在每一个步骤和验证组件中详细讲解每一行代码的思路和逻辑,看完整本书后读者就可以对环境有一个初步的认识,并有能力运用到实践中。而我个人觉得《芯片验证漫游指南》不太适合零基础小白,更适合有一些UVM基础的读者,因为书中除了有SV、UVM的基础知识,还讲解了很多UVM的高级用法,比如怎样搭建验证环境可以更加的高效、复用性好、可裁剪,更有环境自动化工具、新型验证技术、PSS标准等内容,小白如果直接看这本书,容易找不到头绪,有UVM基础的读者读这本书可以加深对UVM的理解,并提高自己的验证水平。


最后,还是建议有经济基础的同学找一些验证培训班,毕竟UVM的内容非常庞大且复杂,如果没有人带、不系统的学习和实践,就很难将整个UVM世界观串联起来,一般培训班都会有虚拟项目供学生训练,并且有老师负责答疑,不会的地方有人可以问,相比自学更加可靠。

EDA工具

在做项目时用到的仿真工具比较多,这里主要介绍业界最常用的两个工具:VCS、Verdi。

可以找一些包含各种EDA工具的虚拟机资源,在电脑上安装VMware启动,省略自己安装的过程,直接开始练习(笔者有安装EDA工具的经历,挺麻烦的)。然后找到这些工具的官方示例,把代码放到虚拟机里练习。这些资源可以在EETOP网站里找到,网站里资源很多,读者也可以在这里找到一些学习资料、虚拟项目等。

忘了提一句,既然是练习VCS和Verdi,那么Linux和Vim的基本操作也需要掌握,Vim是Linux里最长用的编辑器,使用起来效率很高,但第一次接触使用时比较困难,需要一段时间来适应。

此外建议学习一下Makefile,Makefile文件里汇总了EDA工具常用的命令,将长串复杂的EDA工具的命令简化,提高工作效率。

原文链接:数字IC验证成长录-技能准备篇


#数字IC设计工程师#
全部评论
楼主厉害,感谢分享,写的非常详细。
点赞 回复 分享
发布于 2022-02-24 16:43

相关推荐

水色铃音:可以去找射频相关的岗位,比如圣邦微?或者像做产品的,比如xiaomi,oppovivo之类的,都需要天线调试的工程师
点赞 评论 收藏
分享
评论
5
41
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务