vmm_notify

vmm_notify类实现进行通知服务的接口。该通知服务可为并发线程或者事物提供同步机制。

1. 通知可以和某一个由vmm_data派生出的status descriptor实例相关联,以便以后重新得到这个关联的status descriptor。如下:

this.notify.indicate(int notification_id, vmm_data status);
....
$cast(status, this.notify.status(notification_id);

 

2. 配置notifycation

virtual function int configure(int notification_id=-1,sync_e sync=ONE_SHOT);

如果指示标号为负数(缺省为负数),则返回新的大于1000000的一个唯一标识号,否则标识号就是你指定的notification_id,而配置的类型有ONE_SHOT(脉冲), ON_OFF(电平),BLAST(更加强调broadcasting)

3. 哪些vmm基类中有vmm_notify 公共成员

同vmm_log,基本上所有的vmm基类中都有vmm_notify 公共成员。 包括vmm_data, vmm_xactor, vmm_channel, vmm_env. 因为同步事件是每个基类必须的。基类的构造函数new会根据自己的vmm_log接口创建自己的vmm_notify句柄。如下,

this.notify=new(vmm_log log);  //创建该类的新实例,使用指定的消息服务接口发出错误和调试信息

 

4. vmm各个基类中有哪些预定义的事件ID

vmm_data有ON_OFF类型的:

      EXECUTE      //一旦生成一个新的transaction就发出这个事件
      STARTED      // 未使用,(也许我们可以在transactor开始执行这个transaction时发出这个事件)
      ENDED          // 未使用

例如:用于等待各个transaction都完成了,  tr.notify.wait_for(vmm_data::ENDED);
一般ENDED在VIP里面是这样使用的,以后我们也应该这样使用:
recevier在get出某个transaction后,进一步对transaction作一些处理,然后transaction发出ENDED通知。


vmm_xactor中预定义了已经被基类使用的事件

       XACTOR_IDLE       // ON_OFF     transactor创建以后的default的起始状态
       XACTOR_BUSY      // ON_OFF
      XACTOR_STARTED  // ONE_SHOT      transactor进入启动状态
       XACTOR_STOPPED  // ONE_SHOT      transactor处在stop状态
       XACTOR_RESET       // ONE_SHOT      transactor 被reset了

例如:
在driver或reciever的send或rcv函数中加入
this.notify.indicate(vmm_xactor::XACTOR_IDLE);
...//处理一个transaction
this.notify.reset(vmm_xactor::XACTOR_IDLE);
在tb_env中的stop()中加入
drv.wait_for(vmm_xactor::XACTOR_IDLE);

 vmm_atomic_gen中预定义了已经被使用的事件

       GENERATED  //   ONE_SHOT   表明已经根据blueprint产生了transaction descriptor的一个产品
       DONE       //     ON_OFF       已经把所有的产品放入到channel中。


 

 

其他的不太常用,就不介绍了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值