您当前的位置: 首页 > 

FPGA硅农

暂无认证

  • 3浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

UVM 中的消息机制

FPGA硅农 发布时间:2022-05-26 13:35:17 ,浏览量:3

UVM消息属性

UVM 中的消息有三种属性,分别是:严重度(severity)、冗余度(verbosity)、以及消息的关联行为,此外还有消息的标签 ID。UVM 的消息机制基于该三种属性和标签 ID, 实现对消息的处理。

严重度(severity)

在调试和仿真的过程中,我们需要输出消息,那么如何区分消息的严重度?UVM 中用对应的枚举值来标识,更具体来说是用消息宏来标识。不同严重度的枚举值及其缺省的关联操作如下: 在这里插入图片描述

冗余度(verbosity)

UVM 定义了一些枚举值表示预定义的消息冗余(消息的冗余就是该条消息是否被打印出来的敏感阈值,敏感阈值越小,则越容易被打印出来)。这些值被用在两个地方。一个是消息自身有一个冗余度,另一个是发出消息的uvm_compoment 也有一个冗余度。这些枚举值为: 在这里插入图片描述 UVM_NONE 阈值最低,为 0;UVM_DEBUG的阈值最高,为 500。对于UVM 来说,阈值越高,则越不容易被打印出来。 在 UVM 中,一个有着低冗余等级的消息会更容易打印出来。一个有着UVM_NONE 冗余等级的消息总会打印出来。 对于一条消息来说,这条消息本身有一个冗余等级,此外,发出该消息的组件也会有一个冗余等级,当这两个冗余等级发生冲突时,将如何处理?对于 UVM来说,发出该消息组件的冗余等级的优先级高于消息本身的冗余等级的。即当一个冗余等级为 UVM_DEBUG 的 compoment 发出所有等级的消息时,该消息总是会被打印出来的;而一个冗余等级为 UVM_NONE 的 compoment 发出一条所有等级的消息时,只有等级为 UVM_NONE 的消息才会被打印出来。 这里说明:给一个组件设置更高的冗余等级将会暴露该组件更多的细节。组件和消息缺省的冗余等级是 UVM_MEDIUM。

关联行为(action)

关联行为是指仿真平台执行到该消息时执行的动作。关联行为对应的枚举值 如下: 在这里插入图片描述 在仿真过程中 UVM 对消息严重度为 warning、 error、 fatal 的条目自动进行计数,不需要另外配置。

关联 ID

每一个打印出来的消息都包括一个和该消息相关的 ID。该 ID 字段可以用来完成用户指定的、甚至在仿真之外的任何鉴别或者过滤工作。在仿真中,该 ID能够指示严重度、等级等消息的属性或者做其他修改或者废止该报告的决定。因为冗余等级能够处理一个 ID 的粒度级别,一般建议将 get_type_name()和第 二 个 字 符 串 连 接 在 一 起 的 模 式 。 这 个 get_type_name() 函 数 ( 由`uvm_component/object_utils() 宏生成)能够通知用户该字符串来自哪个类。第二个字符串被用于表示消息来自那个函数/任务或用于进一步需要的粒度。

Using Messaging 消息宏

使用消息宏是使用UVM消息传递系统的推荐方法,这是由于其会自动将消息源的文件名和行号插入到UVM消息字符串中,这对debug来说非常有用。对uvm_info消息,扩展的宏代码还会检查消息的详细设置,以确定是否应该在进行字符串处理之前打印该消息。

`uvm_fatal(“message_id”, “message_string”) 
`uvm_error(“message_id”, “message_string”) 
`uvm_warning(“message_id”, “message_string”) 
`uvm_info(“message_id”, “message_string”, uvm_verbosity)

message_id是一个字符串,可以用来标识消息的来源。它在消息传递系统中用作参考,允许使用者控制消息行为的其他方面。message_string是将在消息体中打印的内容,它可以是一个简单的字符串,也可以是字符串格式化函数(如$sformatf())的结果。uvm_verbosity是一种枚举类型,用于定义消息的冗余度。 更多内容参见链接

关注
打赏
1658642721
查看更多评论
立即登录/注册

微信扫码登录

0.0543s