【UVM源码学习】uvm_heartbeat


  uvm_heartbeat.svh实现了uvm_heartbeat类及回调类uvm_heartbeat_callback。uvm_heartbeat,心跳检测仪,用以监测环境内指定component的生命活动,若component hang住了,会报fatal。uvm_heartbeat监测期间需在component中提起(或撤销)objection才能实现有效监测。监测模式有4中,定义在了枚举类型uvm_heartbeat_modes中,分别为UVM_ALL_ACTIVE、UVM_ONE_ACTIVE、UVM_ANY_ACTIVE、UVM_NO_HB_MODE,各模式释义如下:

UVM_ALL_ACTIVE:受监测的所有component中,任意一个component没有触发event都会报fatal;
UVM_ANY_ACTIVE:受监测的所有component均没有触发event则报fatal;
UVM_ONE_ACTIVE:受监测的所有component中,若在多个component中监测到了event或任意component中都没有检测到event,则报fatal;
UVM_NO_HB_MODE:不启动heartbeat


  uvm_heartbeat类中主要实现了如下表格中的方法,来设置监测模式、启动/停止heartbeat监测、增加/移除监测的object等。

序号方法描述
1new例化指定uvm_component cntxt的heartbeat并创建cntxt的heartbeat_callback,cntxt为空则采采用uvm_component root
2set_mode设置uvm_heartbeat模式,默认UVM_NO_HB_MODE
3set_heartbeat调动了start(event),作用与start差不多,若某个component不存在则cnt及其此前触发时刻清零,若触发event与此前触发时间均为空则返回。
4start启动heartbeat监测。若当前event与start指定触发的event均为空则报警;若此前已经开始监测,start指定触发的event与当前event不同则会报错。
5stop停止监测。该function中触发stp_event、关闭callback。再次start之前必须stop
6add指定单个component加入受监测的component集合队列中。若未启动监控,该函数不会触发监控;若已启动监控,调用该函数直接把指定component加入监控队列。
7removeadd的反操作,把指定单个component从受监控component队列里删除。



  uvm_heartbeat_callback类,主要实现了以下方法:

序号方法描述
1raised每raise一次cnt计数加一,并更新raise时刻
2dropped调用raised
3reset_counts所有heartbeat计数器清零
4object_triggered计数,触发heartbeat检测的object数目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MangoPapa

请作者喝瓶可乐吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值