《UVM白皮书》关于driver的介绍
一、只有driver —— 最简单的验证平台
UVM是一个库,其中的driver等组件都是派生(extends)自UVM库中的类(class)。类中通过 function 和 task 实现组件功能。
UVM常用类及树形结构_uvm树-CSDN博客 下边这张图展示了UVM常用的类之间的派生关系。可以看到构建验证平台的大都是继承自uvm_component。
1. function new
关于派生自uvm_component的类 ,它们的 function new 都有两个参数:name 和 parent. 示例如下:这是一个简单的driver。
class a_driver extends uvm_driver;
function new (string name = "my_driver", uvm_component parent=null);
super.new(name,parent);
endfunction
extern virtual task main_phase(uvm_phase phase);
endclass
task my_driver::main_phase(uvm_phase phase);
...
`uvm_info("a_driver","data is drived",UVM_LOW)
endtask
示例中出现了main_phase。driver所做的事情几乎都在main_phase中完成。
2. main_phase
UVM是由phase来管理验证平台运行。UVMphase的命名为 xx_phase,都有一个类型为uvm_phase 名字为phase的参数。
3. uvm_info
`uvm_info("a_driver","data is drived",UVM_LOW)
*******************************************************************
UVM_INFO a_driver.sv(20) @245000.000 ns : drv [a_driver] data is drived
第一个参数是字符串,用于把打印信息归类;第二个参数的字符串是具体要打印的信息;第三个参数是冗余级别。
打印效果:UVM_INFO关键字 a_driver.sv(20)此条打印信息的文件来源和行号 @24500.000 ns 仿真中此条信息的打印时间 : drv 逻辑节点信息,即在UVM树中的路径索引
关于路径索引,UVM采用树形结构,其中的任何一个节点,都有一个与之对应的路径索引,是字符串类型。路径索引可以通过get_full_name函数来获得。
$dispaly("the full name of current component is : %s",get_full_name());
[a_driver] 是uvm_info宏传递的第一个字符串 data is drived 是uvm_info宏传递的第二个字符串,也就是要打印的信息
在搭建验证平台时,尽量用uvm_info代替display
二、实例化driver搭建的最简单验证平台
上边介绍了最简单的driver完成了,我们怎么才能使用它呢?—— 实例化driver。 在自己验证平台driver层次的上一级进行其实例化。
这里介绍最简单的只有driver验证平台,那上一层次就是我们的top_tb了。下边例子里harness是top_tb的名字,名字是自由的,都可以啦
`timescale 1ns/1ps//时间精度
`include "uvm_macros.svh"//导入uvm中一个包含很多宏定义的文件
import uvm_pkg::*;//导入uvm,前文有提到uvm是一个库
`include “a_driver.sv”
`ifndef HARNESS_SV
`define HARNESS_SV
module harness();
reg clk;
...信号声明...
dut my_dut(.clk(clk),
...)
initial begin
a_driver drv; //实例化drv 第一步
drv = new("drv",null); //实例化drv 第二步
drv.main_phase(null);
$finish();
end
...
endmodule
上例中的null只是代替。除了上边写的实例化语句,还有一种:
a_driver drv;
drv = a_driver::type_id::create ("drv",null);
这样就是最简单的验证平台结构了,只用了简单的driver,目前还并不怎么涉及UVM。
标签:1.2,driver,drv,UVM,phase,main,uvm From: https://blog.csdn.net/yanwenyu123/article/details/142630740