uvm_info打印

`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_lowuvm_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_NONEReport is always printed.  Verbosity level setting can not disable it.
UVM_LOWReport is issued if configured verbosity is set to UVM_LOW or above.
UVM_MEDIUMReport is issued if configured verbosity is set to UVM_MEDIUM or above.
UVM_HIGHReport is issued if configured verbosity is set to UVM_HIGH or above.
UVM_FULLReport is issued if configured verbosity is set to UVM_FULL or above.

UVM_INFOInformative messsage.
UVM_WARNINGIndicates a potential problem.
UVM_ERRORIndicates a real problem.  Simulation continues subject to the configured message action.
UVM_FATALIndicates a problem from which simulation can not recover.  Simulation exits via $finish after a #0 delay.

       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 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值