UVM——Callback机制(作用、使用步骤实例)


原文来自:https://blog.csdn.net/weixin_46022434/article/details/105750444?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

一、Callback机制的作用

Callback机制在UVM验证平台,最大用处就是为了提高验证平台的可重用性;
在不创建复杂的OOP层次结构前提下,针对组件中的某些行为,在其之前后之后,内置一些函数,增加或者修改UVM组件的操作,增加新的功能,从而实现一个环境多个用例;
还可以通过Callback机制构建异常的测试用例;

二、回调函数callback的使用步骤:

在UVM组件中内嵌callback函数或任务;
声明一个UVM callback空壳类;
从UVM callback空壳类中扩展UVM callback类;
在验证环境中创建并登记UVM callback实例。

三、代码code应用实例

3.1.声明一个UVM callback空壳类

1).通常都声明在同一个组件文件中;
2).所有的方法都声明为virtual,函数体为空;
在这里插入图片描述

3.2.在组件中的主操作函数或任务之前或者之后嵌入Callback函数

1). 使用宏`uvm_register_db在组件中登记UVM_callback;

2).使用宏`uvm_do_callbacks在组件中行为之前后之后嵌入callback函数或者任务;(如下例中的pre_send( )和post_send( )函数)
在这里插入图片描述

3.3.编写Callback函数具体实现方法(如:错误注入)

1).第二步的回调方法为空方法,什么操作也没有;

2).通过继承,覆盖上面定义的回调类中的回调方法:

在这里插入图片描述

3.4.在测试案例中创建并登记callback的实例(对象)

1)、在测试用例中创建并例化callback对象;
2)、调用uvm_callbacks #(T, CB) :: add(t,cb)将callback对象添加到test;

在这里插入图片描述

对于uvm_callbacks#(T, CB)::add(t,cb)方法,其几个参数的含义如下:

T:表示回调类所在的组件名,即实现Callback机制的组件名,回调类与组件类在同一组件文件中;

CB:表示空壳回调类的类名;

t:表示回调类所在的组件的实例名,也就是组件的对象名;

cb:表示回调类的实例名,也就是对象名;

四、Callback调试方法

在编译时,添加选项+UVM_CB_TRACE_ON即可; callbackhan函数一般成对出现

  • 4
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值