vmm_log

vmm_log 类用于实现消息服务的接口。创建时指定接口名以及实例名。与特定接口名和实例名匹配的所有消息服务接口都受到这种方法的影响。

function new(string name, string instance)

在vmm_xactor, vmm_channel, vmm_env这些组件中都有vmm_log这一公共成员,可以说基本所有的基类都有。缺省的是vmm_log在这些基类构造时根据new的参数(name和instance)自动生成了相应的log实例。一般来说不需要将log句柄重新指向外部的某个log实例。因为这样做反而不容易分辨是哪个实例发出的消息。

而vmm_data是个特例,和transactor等组件不同transaction descriptor可以有千千万个,它们只需要共用一个vmm_log句柄就可以了,所以vmm_data不产生自己的log,在transaction descriptior中通常会如下指定一个静态log实例

 

static vmm_log log=new("Packet","class");    //一般通用俗程规定"class“ 代表只有一个实例

 

分析vmm_data基类我们知道vmm_log 在vmm_data中是个private属性的成员,显然只有在new的时候通过参数将static vmm_log 句柄实例传入。如下

 

class Packet extends vmm_data;
   static vmm_log log=new("Packet","class");....
   function new();
      super.new(this.log)
   endfunction
    ....
endclass

 

vmm_log 的通常运用形式是`vmm_error, `vmm_fatal,等宏多见于

`vmm_error(this.log, $psprintf("....%s,%h....", var1,var2,..)

 

在实际的仿真过程中会产生海量的消息,VMM提供了两种控制输出的消息的方法,一种是控制严重性,一种是控制消息类型。

在env build之后,可以通过

env.log.set_verbosity(vmm_log::DEBUG_SEV, "/./", "/./");     

来控制仅仅显示severity高于debug的消息服务。

在env build之后,也可以通过

env.log.disable_types(vmm_log::INTERNAL_TYP, "/./", "/./");

来控制不显示vmm library 自身的 INTERNAL_TYP 的消息服务。

通过命令行我们也能实现对serverity的控制

+vmm_log_default=DEBUG

 

 

关于vmm_notify 和 vmm_data的介绍请看下两章

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值