UVM_CALLBACK机制

1.作用

实现验证平台的可重用性。

2.步骤

2.1实现一个callback基类

注意:这里callback基类里提供的两个方法必须为virtual类型(目的:为了实现多态)且为空(具体实现内容在子callback类里实现)并且要继承自uvm_callback。

2.2 在组件中调用callback基类中提供的方法

在my_driver.sv中调用callback方法,需要用到两个宏:`uvm_register_cb(CMP,CALLBACK_BASE)、`uvm_do_callbacks(CMP,CALLBACK_BASE,function_or_task)

解析这两个宏:

(1)`uvm_register_cb(CMP,CALLBACK_BASE)

第一个参数CMP:表示要调用callback函数的组件类,这里就是my_driver;

第二个参数CALLBACK_BASE:表示实现callback机制的基类,这里就是my_driver_base_callback

(2)`uvm_do_callbacks(CMP,CALLBACK_BASE,function_or_task)

前两个参数和`uvm_register_cb的两个参数一致;

第三个参数function_or_task:即要调用的callback方法。

2.3 在具体的callback类中实现具体的方法

注意:具体的callback类必须继承自callback基类,这里对pre_send方法进行了重载,这里只是打印了一句信息。

2.4 在特定的testcase中与具体的callback类关联上

在testcase中,首先要例化具体的callback类,最后调用uvm_callbacks#( CMP,CALLBACK_BASE)::add(cmp_inst,callback_inst)将具体的callback类关联到具体的组件中。

解析uvm_callbacks#( CMP,CALLBACK_BASE)::add(cmp_inst,callback_inst):

第一个参数CMP:表示要调用callback函数的组件类,这里就是my_driver;

第二个参数CALLBACK_BASE:表示实现callback机制的基类,这里就是my_driver_base_callback

第三个参数cmp_inst:即要调用callback方法的具体组件实例

第四个参数callback_inst:即实现具体功能的具体callback类的实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值