callback机制提高平台的可重用性,其使得在用例里面可以加入一些新的特性,而不需要修改验证平台。 call的使用可以分为以下几步: 1.定义一个callback基类,基类需要继承自uvm_callback;同时需要定义callback需要执行的方法,方法需要定义为虚方法以被重载;callback基类定义如下图所示:
class drv_cb extends uvm_callback;
virtual task pre_send(driver drv,ref tran);
endtask
emdclass
2.申明一个drv_cb的pool
typedef uvm_callbacks#(driver,drv_cb) drv_cb_pool;
3.driver内call的使用包括两个部分: 1)·uvm_register_cb声明;
typedef class drv_cb;
class drv extends uvm_driver#(tran);
`uvm_component_utils(drv)
`uvm_register_cb(drv,drv_cb)
endclass
2)使用·uvm_do_callback调用;
while(1) begin
seq_itrm_port.get_next_item(req);
`uvm_do_callbacks(drv,drv_cb,pre_send(this,req))
drive_pkt(req);
seq_item_port.item_done();
end
|