UVM学习随笔(4)消息管理

消息管理

1、消息方法

1)、4个消息方法

uvm_report_info()、uvm_report_waring()、uvm_report_error()、uvm_report_fatal()

2)、方法原型

function void uvm_report_info/waring/error/fatal(string id,string message, int verbosity = UVM_MEDIUM/LOW/NONE,string filename = “”, int line = 0);

3)、方法说明

这4个方法通过函数名和参数传递消息的基本信息,函数名表示信息的严重级别,参数依次表示消息ID,消息信息,消息冗余度,文件名和行号。

严重级别

从低到高依次为UVM_INFO、UVM_WARING、UVM_ERROR、UVM_FATAL
仿真器对不同严重级别的消息处理方式也不一样:
1)、对于UVM_INFO、UVM_WARING级别的消息,默认消息处理方式为UVM_DISPLAY,将消息打印到输出端口;
2)、对于UVM_ERROR级别的消息,默认消息处理方式为UVM_DISPLAY和UVM_COUNT,除了打印消息,还对消息进行计数,当计数值达到设定的quit_count时,会提前结束仿真,即使objection没有被撤销;
3)、对于UVM_FATAL级别的消息,默认消息处理方式为UVM_DISPLAY和UVM_EXIT,除了打印消息,还会立即结束仿真。

消息ID

消息id用来标记消息,消息id会随被打印出来,方便后期处理仿真结果。

冗余度

冗余度控制消息打印的开关,冗余度由低到高依次为UVM_NONE、UVM_LOW、UVM_MEDIUM、UVM_HIGH、UVM_FULL、UVM_DEBUG,通过设置一个冗余度阈值来控制消息的打印,如默认阈值为UVM_MEDIUM,冗余度小于UVM_MEDIUM(如UVM_LOW),就会被打印,反之冗余度大于阈值,则不会打印。

可以通过set_report_verbosity_level()和set_report_verbosity_level_hier()方法来改变某个component的消息冗余度阈值或某个component及以下层次component的冗余度阈值。
如改变agent的阈值:env.agent.set_report_verbosity_level(UVM_LOW),改变agent及其下所有的component阈值:env.agent.set_report_verbosity_level_hier(UVM_LOW)

文件名和行号

文件名和行号提供消息发生的文件和行号,用于定位消息的具体位置。

2、消息处理

1)、NO_ACTIVE:不做任何处理;
2)、UVM_DISPLAY:将消息输出到标准输出端口;
3)、UVM_LOG:将消息写入文件中;
4)、UVM_COUNT:增加退出计数变量quit_count;
5)、UVM_EXIT:立刻退出仿真;
6)、UVM_CALL_HOOK:调用对应的回调函数;
7)、UVM_STOP:停止仿真。

3、消息宏

4个消息方法分别对应4个消息宏uvm_info(ID,MESSAGE,VERBOSITY)、uvm_waring(ID,MESSAGE)、uvm_error(ID,MESSAGE)、uvm_fatal(ID,MESSAGE)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值