芯学长 | 掌握芯资讯,引领芯未来

您当前所在位置:首页 > 芯片设计 > 数字IC验证

数字IC验证整体学习路线(浓缩实用方法)

发布时间:2023-10-09来源:芯学长 0

对于一名合格的验证工程师来说,一定要懂一些设计,如果都不清楚自己在验什么东西,后面的工作也都无从谈起了。所以在时间足够的情况下,最好从最基础的数字电路知识开始学习,之后是 Verilog → SystemVerilog → UVM 这样一个顺序谈一谈验证的学习过程。

一、Verilog

作为目前最主流的硬件描述语言,不管设计还是验证都应该掌握。因为它的语法并不复杂,在这个过程中,大家应该多去思考和总结,如果开始就过于追求速度,想很快上手,导致有的地方一直理解的都不是很到位,比如阻塞赋值和非阻塞赋值这样的问题,所以认真地去把每一个点去想清楚,形成一定的代码风格和硬件思维,这会后面是非常有好处的。

二、SystemVerilog

SV是验证必会的一门语言,可以进行面向对象编程,并且为验证提供了一些独有的特性。大部分同学在学习SV时,应该都看过那本 最经典的绿皮书《SystemVerilog验证:测试平台编写指南。

举一个例子,在绿皮书第二章中,对结构体数组的排序这块我没有完全搞懂,想了半天觉得还不如去实际地写一写,果然一看仿真结果立刻就理清楚了排序机制:只关注red时,数组c就按照red像素值的大小依次排列;如果考虑green和blue,就先按照green的大小排列,如果一样的话,再去根据blue排列。

此外,除了书上的各种示例,也可以自己去搭一些简单的验证平台,不要只是局限于书本、课件或者视频课。比如下面这个小平台(部分代码),是我当时刷完一道题目之后心血来潮搭的,检验的功能是程序能否在256个时钟内实时输出当前出现次数最多的数,像这样的练习对能力的提升也是很有帮助的,因为看懂别人的东西和自己独立实现出来,还是有一定的差距。

三、UVM方法学

对于UVM,很重要的一点是要多去理解它的思想,我认为和SV相比,UVM验证环境最大的优势就在于它的复用性和易用性。

image

复用性,是指UVM中的每个模块单元都具有自闭性,自身可以完成独立行为,不依赖于其他并行的组件,而SV中则不行,比如例化driver时就需要generator提供帮助。此外,UVM工厂机制中的覆盖以及callback机制,都在不改变原有测试环境结构的基础上大大提升了代码的复用性。

易用性,UVM自定义的框架构建类和测试类能够帮助我们减轻环境构建的负担,进而将更多的精力集中在如何制定验证计划和创建测试场景当中去。比如于UVM自身的phase机制,在顶层协调各个子环境时无需考虑由于子环境之间的例化顺序而导致句柄悬空的问题。

在学习UVM的过程中,我推荐大家装一个虚拟机和Linux系统,在Liunx下安装好VCS、Verdi、UVM库,这些在网上有很多教程。配置好整个环境之后,可以跟着白皮书《UVM实战》边学边做,下载这本书的源代码到虚拟机,把里面的例子都尽量去跑通,编译的时候自己也可去写一些Makefile。

其实验证工程师需要点的技能点很多,除了SV和UVM;还有脚本语言Perl、Python、Shell;因为有时候需要自己开发参考模型,所以要会C语言;还有EDA仿真工具、AMBA总线协议、编辑器这些也需要掌握,可能大家一下子没法全部吸收,但最好能在前期学习的过程都适当地接触一下。

【免责声明】:本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。

文章评价

-   全部 0 条 我要点评

有疑惑?
在线客服帮您
029-81122100

立即咨询 >