目录
SV中验证组件按功能可分为激励器(stimulator)、监测器(monitor)、检查器(checker)。这三个核心组件与验证环境中三个关键特性对应,即激励、监测和检查.
UVM验证方法学都有其对应的组件,验证环境中所有的组件都继承于uvm_component ,同时也继承了component中的phase机制。常见的组件类有:uvm_driver/uvm_monitor/ uvm_sequencer/ uvm_agent/ uvm_scoreboard/ uvm_env/ uvm_test。上述所有的组件类型不能直接使用,必须先定义新的类型继承于上面相对应的类型后,才能使用。
1 uvm_driver
作用:从sequencer中获取事务(transaction),经接口传入到dut进行时序激励。
定义:该类是参数化类,应声明参数类型
class uvm_driver #(type REQ=uvm_sequence_item,type RSP=REQ)
extends uvm_component;
特点:1.在定义新类时,应声明需获取事务参数REQ类型,默认RSP和REQ同一类型
2 driver类和sequencer类的通信就是为了获取事务对象,一般通过TLM端口连接,
实例:
class dut_driver extends uvm_driver#(basic_transaction);//参数化为sequence item类型
virtual chip_if vif; //虚接口
bit[7:0] addr, data;
`uvm_component_utils(dut_driver) //在factory中注册dut_driver
function new(string name, uvm_component parent);
super.new(name, parent);
endfunction
extern task run_phase(uvm_phase phase);//在运行过程中自动执行的run_phase
endclass
extern有两个作用:1 方便代码查看,提供一个清晰的接口。2.加密
2 uvm_monitor
作用:监测接口的数据
定义:并没有添加新的成员和方法,但还是建议将新定义的monitor继承于uvm_monitor,利于将来代码的使用。
特点:1.观测dut的interface,并且收集总线信息
2.永远保持PASSIVE模式,不