IC验证培训——一种自动编写UVM testbench的方法

路科验证官网:路科验证 - 专注于数字芯片验证的系统思想和前沿工程领域

EETOP路科首页: EETOP - 路科验证 - IC验证培训

CSDN路科首页:CSDN - 路科验证 - IC验证培训

SystemVerilog UVM 是一个以SystemVerilog类库为主体的验证平台开发框架,验证工程师可以利用其可重用组件构建具有标准化层次结构和接口的功能验证环境。UVM方法的强大是毋庸置疑的,但同时UVM却也不是那么容易掌握的。对于没有UVM经验的工程师,直接使用UVM方法还是比较困难的。

但是幸运的是,你可以在网上找到一些UVM模板和UVM生成器。它们都是一些基于UVM库的UVM框架。使用这些模板或者生成器的好处在于,在一开始你并不需要知道关于UVM的所有细节,当然,在此之前还是需要懂得SystemVerilog知识和UVM基本验证环境。所以,本文面向的是没有UVM验证经验的工程师。着重介绍了一个简单的模板和生成器,经过一些简单的修改,只需要在一个工作日内,一个新的基于UVM的testbench就建立并且能够正常运行起来了。

下图是一个理想的生成器

模板当然不是完全自动化的,根据你的特定需求,你需要在其中描述定义你的transaction、总线、driver和monitor的连接等。你必须要设计你的测试用例的产生方法,比如怎样测试多个接口等,可能还需要编写“golden model”。这些工作都会要求你在生成器所产生的样板文件中修改完成。虽然不需要懂UVM的细节,但是SystemVerilog还是必不可少。

基本的UVM Testbench

最基本的UVM testbench包含有 DUT、用于接口的agent、把所有agents收集到一起的environment和一个顶层的test。DUT和基于类的testbench间是使用virtual interface连接的。下图是一个有三个接口的简单DUT模型(其中一个并没有连接)。下面的UVM模板也是基于这个DUT模型展开的。

模板

模板并不是唯一的,不同的模板有不同的特性,没有正确的模板,只有合适的模板。模板系统本身是可独立运行的,即该模板可以被独立编译、仿真。对于一个可编译可仿真的系统,创建的模板bug较少。这篇文章介绍的模板简单普通,包含了共计500行代码的20个文件。生成器的脚本如下所示。

上面使用了tar命令为agent创建一个层级,然后处理新层级里的所有文件内容,使用sed把一般的模板名转换为特定的名字(即体现在我们自己具体设计中的名字),例如下面的这个sequencer模板

Transaction

Transaction用于描述你要与DUT之间进行怎样的交互联系。一个工程了里会有很多Transaction,诸如读写事务、寄存器事务和总线事务等。下面是一个包含有地址和数据的读写事务。

篇幅有限,路科原文链接如下:

一种自动编写UVM testbench的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值