1.开坑宣言
之前在学校做的一个项目需要搭验证环境。由于我们作为学生基本都没有接触正儿八经验证框架的经验,而我作为唯一略了解一点systemverilog的人,就根据学长的验证框架写了个简单的bfm。后来在秋招面试过程中被反复问及我们的验证框架如何确保验证覆盖率,每次都只能回答“增加多个测试序列。。。”。所以最近秋招基本结束后想着补充一下UVM验证相关的知识,即使不是验证工程师,也是数字IC前端该了解的内容。
这次开坑主要记录个人的学习心得,我查了一下知乎,似乎没有明确的入门级的UVM相关文章,因此也希望本系列能帮助到想入门UVM的人。我使用的材料是经典的两本书《SystemVerilog for Verification》和《UVM实战》,其中前者主要介绍SV的语法,以及一些代码机制(如面向对象,线程通信等等),而后者着重介绍UVM框架的具体细节,以及如何搭建通用的验证环境。由于UVM是用SV写的,所以我推荐先学习前者,重点记住语法和数据结构,mailbox,semophore之类的线程相关机制,至于书中的验证框架是VMM,可以不去关注。我目前正在看的是后者,因此不会对SV语法相关的内容做过多解释,本系列会以每章一篇的形式进行更新。
作为本系列的开篇,首先简单介绍验证和UVM的相关概念,以及一个基本的UVM框架下Testbench的构成,对应《UVM实战