路科验证的个人空间 https://blog.eetop.cn/1561828 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

UVM世界观篇之十一:消息管理(上)

已有 4142 次阅读| 2017-6-12 00:35 |个人分类:验证系统思想|系统分类:芯片设计


我们已经在SV部分的《测试环境的报告规范》中提出了关于一个好的验证系统应该具有的消息管理特性,它们分别是:
  • 通过一种标准化的方式打印信息
  • 过滤(重要级别)信息
  • 打印通道

而这些特性在UVM中均有支持。UVM提供了一系列丰富的类和方法来生成和过滤消息。接下来,本节分别就基本的消息方法、消息处理、以及消息机制给出分析。

消息方法
在UVM环境中或者在UVM环境之外,只要有引入uvm_pkg,均可以通过下面的方法来按照消息的严重级别和冗余度来打印消息。
  • function void uvm_report_info(string id, string message, int verbosity = UVM_MEDIUM, string filename = "", int line = 0);
  • function void uvm_report_warning(string id, string message, int verbosity = UVM_MEDIUM, string filename = "", int line = 0);
  • function void uvm_report_error(string id, string message, int verbosity = UVM_LOW, string filename = "", int line = 0);
  • function void uvm_report_fatal(string id, string message, int verbosity = UVM_NONE, string filename = "", int line = 0);

上面的这四个消息函数中,有若干共同的消息,分别是严重级别(severity)、冗余度(verbosity)、消息ID、消息、文件名和行号:
严重级别:从函数名本身也可以得出,这四个严重级别分别是UVM_INFO、UVM_WARNING、UVM_ERROR、UVM_FATAL。这些不同的严重级别在打印出的消息中也会有不同的指示来区别,同时仿真器对不同严重级别消息的处理方式也不一样。例如对于UVM_FATAL的消息,默认情况下仿真器会停止。
消息ID:该ID可以是任意的字符串,用来标记该消息。这个标记会同消息本身打印出来。同时,不同的标记也可以用来进行消息处理。
消息:即消息文本的主体。
冗余度:冗余度与消息处理中的过滤直接相关。冗余度的设置如果低于过滤的开关,那么该消息会打印出来,否则不会被打印出来。但是,无论信息是否会被打印出来,这都与对消息采取的其它措施没有任何关系,例如仿真停止。
文件名和行号:这些信息用来提供消息发生时所在的文件和行号。用户可以使用默认值,而UVM后台会自动填补它们原本的文件和行号,同时也在打印时将文件名和行号输出。


消息处理
与每一条消息对应的是如何处理这些消息。通常情况下,消息处理的方式是同消息的严重级别对应的。如果用户有额外的需求,也可以修改各个严重级别下,对消息的处理方式。首先来看看有哪些消息的处理方式:
处理方式说明
NO_ACTION不做任何处理
UVM_DISPLAY将消息输出到标准输出端口
UVM_LOG将消息写入到文件中
UVM_COUNT增加退出计数变量quit_count。当quit_count达到一定数值时,停止仿真
UVM_EXIT立刻退出仿真
UVM_CALL_HOOK调用对应的回调函数
UVM_STOP停止仿真

上面的这些消息方式,用户可以使用默认的消息处理方式:
严重级别默认处理方式
UVM_INFOUVM_DISPLAY
UVM_WARNINGUVM_DISPLAY
UVM_ERRORUVM_DISPLAY | UVM_COUNT
UVM_FATALUVM_DISPLAY | UVM_FATAL

如果要做自定义的消息处理方式管理,用户可以通过uvm_report_object类提供的方法进行配置。关于uvm_report_object类,它是间与uvm_object类与uvm_component类之间的中间类,它的主要功能即完成了与消息打印和管理的相关功能。
方法调用宏调用
uvm_report_info()`uvm_info(ID, MESSAGE, VERBOSITY)
uvm_report_warning()`uvm_warning(ID, MESSAGE)
uvm_report_error()`uvm_error(ID, MESSAGE)
uvm_report_fatal()`uvm_fatal(ID, MESSAGE)

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-27 00:56 , Processed in 0.025125 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部