uvm_info打印信息(整数/浮点数/字符串/数组/多个信号),快速更改冗余度及重载严重度

前言:

熟悉打印信息方法和更改冗余度及严重度有利于大型项目的debug。

一.打印信息

1.打印整数:%d

`uvm_info("MY_COMPONENT", $sformatf("my_signal value: %0d", my_signal), UVM_LOW)
2.打印浮点数: %f或%.nf(n为保留的几位小数)

`uvm_info("MY_COMPONENT", $sformatf("my_signal value: %.2f", my_signal), UVM_LOW)

3.打印字符串:%s

`uvm_info("MY_COMPONENT", $sformatf("my_signal value: %0s", my_signal), UVM_LOW)
4.打印多个信号

`uvm_info("MY_COMPONENT", $sformatf("Signal1: %0d, Signal2: %0h", signal1, signal2), UVM_LOW)
5.打印数组信号:常用于数据

int data[] = {1, 2, 3, 4, 5};
string msg = $sformatf("Data: %0d\n%0d\n%0d\n%0d\n%0d", data[0], data[1], data[2], data[3], data[4]);
`uvm_info("MY_COMPONENT", msg, UVM_LOW)

6.打印uvm对象值:obj.sprint() 生成对象的字符串表示。

my_class obj = new();
obj.data = 42;
obj.valid = 1;
`uvm_info("MY_COMPONENT", $sformatf("Object: %0s", obj.sprint()), UVM_LOW)

二.更改冗余度

1.冗余度

UVM_NONE :不打印任何信息(值为 0)。 UVM_LOW :打印低冗余度信息(值为 100)。

UVM_MEDIUM :打印中等冗余度信息(值为 200)。

UVM_HIGH :打印高冗余度信息(值为 300)。

UVM_FULL :打印完整信息(值为 400)。 UVM_DEBUG :打印调试信息(值为 500)。冗余度的默认值是 UVM_MEDIUM ,即只有冗余度小于等于 UVM_MEDIUM 的消息会被打印。

2.更改冗余度方法

2.1 局部设置:(base_test的connect_phase里)

使用  set_report_verbosity_level  或  set_report_verbosity_level_hier  方法设置特定组件的冗余度

// 设置某个组件的冗余度

env.i_agt.drv.set_report_verbosity_level(UVM_HIGH);

// 递归设置某个组件及其子组件的冗余度

env.i_agt.set_report_verbosity_level_hier(UVM_HIGH);

2.2 按ID设置

使用 set_report_id_verbosity 或 set_report_id_verbosity_hier 方法设置特定 ID 的冗余度

// 设置某个组件中特定 ID 的冗余度

env.i_agt.drv.set_report_id_verbosity("MY_ID", UVM_HIGH);

// 递归设置某个组件及其子组件中特定 ID 的冗余度

env.i_agt.set_report_id_verbosity_hier("MY_ID", UVM_HIGH);

2.3通过命令全局设置

+UVM_VERBOSITY=UVM_HIGH 或者

+UVM_VERBOSITY=HIGH

三.重载打印信息的严重性

比如跑仿真时出现将fatal,将它改为error,用于debug。

1.使用命令:例子如下

+uvm_set_severity=" uvm_test_top.env.i_agt.drv,my_driver,UVM_FATAL,UVM_ERROR"

将drv模块里的uvm_info的ID为my_driver的UVM_FATAL改为UVM_ERROR

2.将整个drv模块的UVM_FATAL改为UVM_ERROR:

只需将上面命令里的那个my_driver改为_ALL_

 


 


 

 

 

 

你可能感兴趣的:(经验分享,linux)