前言
在基于UVM的验证环境中写代码的时候,经常需要打印一些参数进行调试。本文主要总结一下,在UVM中如何去打印,以及如何去控制打印信息。
一、UVM中提供的打印宏
如下图所示,uvm中提供了`uvm_info、 `uvm_warning、`uvm_error、`uvm_fatal这四个宏,分别用于打印不同严重等级的信息。其中,`uvm_info这个宏还提供五个等级的可见度,分别是UVM_LOW、UVM_MEDIUM、UVM_HIGH、UVM_FULL、UVM_DEBUG。默认的可见度是UVM_MEDIUM,
举个例子:
不同严重等级的打印信息对应的行为如下图所示,其中UVM_FATAL打印后会显示打印信息并退出仿真,UVM_ERROR打印后会显示打印信息并计数,UVM_WARNING和UVM_INFO只显示打印信息。
二、UVM打印宏打印参数
在调用UVM打印宏进行打印的时候,不仅仅只是打印一串固定的字符串,很多时候我们需要将一些参数打印出来进行调试,这时候我们就需要用到$sformatf()这个系统函数,这个系统函数能够传递带参数的字符串。
`uvm_info("ADDR_MAP", $sformatf("R addr = %0h", regmodel.R.get_address()), UVM_HIGH)
`uvm_info(`gfn, $sformatf("rcvd item:\n%0s", req.sprint()), UVM_HIGH)
`uvm_info("TRACE", $sformatf("%m"), UVM_HIGH);
SV中的打印格式输入描述如下:
三、命令行控制打印信息
分别介绍了三中命令行控制打印信息的方法:
1、控制某一个组件在特定的phase或者时间打印信息的可见度;
2、控制打印信息的行为;例如控制UVM_ERROR不进行显示和计数
3、控制打印信息的严重等级;例如将UVM_FATAL替换为UVM_ERROR