`uvm_info有以下三种格式:
`uvm_info("TRACE",$sformatf("%m"),UVM_HIGH)
`uvm_info("TRACE",$sformatf("port_id value of %0d",port_id),UVM_HIGH)
`uvm_info("TRACE",{"\n",req.sprint()},UVM_HIGH)
“uvm_info”宏有三个参数:
- 第一个参数是一个字符串,用于对打印的信息进行归类或标识,例如指定一个模块名或特定的信息类别。
- 第二个参数也是字符串,是具体需要打印的信息内容。
- 第三个参数是冗余级别。在验证平台中,可以设置不同的冗余级别来控制信息的显示。常见的冗余级别有
uvm_low
、uvm_medium
和uvm_high
等。UVM 默认只显示uvm_medium
或uvm_low
的信息,而将uvm_high
级别的信息视为较为次要或不太关键的,可能不会显示出来,除非特别设置显示所有级别的信息。
uvm_info("my_driver", "data is driven", uvm_low)
//上述代码中,"my_driver" 是信息的类别或标识,"data is driven" 是具体要打印的消息,uvm_low 是冗余级别
uvm_info("get_full_name()", "data is driven", uvm_low)
uvm_info("get_type_name()", "data is driven", uvm_low)
uvm_info("get_name()", "data is driven", uvm_low)
/
///
///get_type_name():返回对象的类名。对于从uvm_component或uvm_object派生的类,它返回的是类的名称。这个名称通常是在定义类时指定的类名。如果派生类没有重写get_type_name()方法,那么它将返回原始定义的类名;如果使用了类似uvm_component_utils(my_compont)或uvm_object_utils()这样的宏来注册类,那么get_type_name()将返回注册时指定的名称。
get_name():返回创建对象时传入的字符串。通常是在使用new()或type_id::create()创建对象时指定的名称。
get_full_name():其返回值的具体表现取决于类的类型。对于uvm_component类(组件类),它会返回当前组件的完整路径,即从 UVM 树的根节点开始到该组件的路径名拼接。路径的开头不是从 UVM 树的根开始,而是根的下一级(根路径对应“top”),路径的结尾是创建对象时传入的名称。而对于uvm_object类(对象基类),它的返回值与get_name()一样,因为uvm_object类不作为 UVM 树的节点,所以路径没有其他层次。但如果是从uvm_object派生的uvm_sequence_item,并且该sequence挂载到了sequencer上,那么它的get_full_name返回值应该是m_sequencer.get_full_name + get_name();如果没有挂载到sequencer上,即m_sequencer == null,那么get_full_name的返回值就是get_name()。
typedef enum {
UVM_NONE = 0,
UVM_LOW = 100,
UVM_MEDIUM = 200,
UVM_HIGH = 300,
UVM_FULL = 400,
UVM_DEBUG = 500
} uvm_verbosity;
uvm_info的源头
将原始的 uvm_report_*
函数调用直接替换为对应的宏,只需修改函数名前缀,参数保持不变。
原始调用方式
uvm_report_info("MYINFO1", $sformatf("val: %0d", val), UVM_LOW);
uvm_report_warning("MYWARN1", "This is a warning");
uvm_report_error("MYERR", "This is an error");
uvm_report_fatal("MYFATAL", "A fatal error has occurred");
替换后的宏调用方式
`uvm_info("MYINFO1", $sformatf("val: %0d", val), UVM_LOW)
`uvm_warning("MYWARN1", "This is a warning")
`uvm_error("MYERR", "This is an error")
`uvm_fatal("MYFATAL", "A fatal error has occurred")
uvm_report宏
uvm_report宏强制将警告(warning)、错误(error)和致命错误(fatal)的详细级别设置为 UVM_NONE
,以避免因错误设置过低的详细级别而意外关闭这些消息(但仍可通过适当设置动作来关闭警告和错误)。
参考 https://blog.youkuaiyun.com/qq_55894557/article/details/126549732
https://verificationacademy.com/verification-methodology-reference/uvm/docs_1.2/html/index.html
https://www.chipverify.com/uvm/report-functions