Reporting Function and Verbosity
Reporting Function and Verbosity
1|Page
@shraddha_pawankar Date:23/03/2024
Report macros: UVM provides a set of macros that are wrappers around
uvm_report_* functions as shown below:
`uvm_info uvm_report_info
`uvm_warning uvm_report_warning
`uvm_error uvm_report_error
`uvm_fatal uvm_report_fatal
Reporting functions in UVM are essential for providing feedback and insights
into the behavior of the verification environment, allowing engineers to identify
and address issues effectively during the verification process.
Syntax:
Macros Syntax
`uvm_info `uvm_info(ID,MSG,VERBOSITY)
`uvm_warning `uvm_warning(ID,MSG)
`uvm_error `uvm_error(ID,MSG)
`uvm_fatal `uvm_fatal(ID,MSG)
Where,
ID: message tag
MSG: A text message
2|Page
@shraddha_pawankar Date:23/03/2024
UVM_VERBOSITY:
3|Page
@shraddha_pawankar Date:23/03/2024
Verbosity level
Example 1:
`include "uvm_macros.svh"
import uvm_pkg::*;
4|Page
@shraddha_pawankar Date:23/03/2024
`uvm_info(get_type_name(),"THIS IS INFO",UVM_NONE)
`uvm_warning(get_type_name(),"This is warning")
`uvm_error(get_type_name(),"This is error")
`uvm_fatal(get_type_name(),"this is fatal")
phase.drop_objection(this);
endtask
endclass
//////////////////////////////////////
module tb;
initial
begin
run_test("component");
end
endmodule
Output :
5|Page
@shraddha_pawankar Date:23/03/2024
--------------------------------------------------------------------------------------------------------
Example 2:
`include "uvm_macros.svh"
import uvm_pkg::*;
module tb;
initial begin
`uvm_info("INFO","This is INFO",UVM_NONE);
6|Page
@shraddha_pawankar Date:23/03/2024
`uvm_info("INFO","This is INFO",UVM_LOW);
`uvm_warning("WARN", "This is Warning");
`uvm_error("ERROR", "This is Error")
`uvm_fatal("FATAL", "This is fatal error");
end
Endmodule
Output:
# KERNEL: UVM_INFO /home/runner/testbench.sv(8) @ 0: reporter [INFO] This is
INFO
# KERNEL: UVM_INFO /home/runner/testbench.sv(9) @ 0: reporter [INFO] This is
INFO
# KERNEL: UVM_WARNING /home/runner/testbench.sv(10) @ 0: reporter [WARN]
This is Warning
# KERNEL: UVM_ERROR /home/runner/testbench.sv(11) @ 0: reporter [ERROR]
This is Error
# KERNEL: UVM_FATAL /home/runner/testbench.sv(13) @ 0: reporter [FATAL] This
is fatal error
# KERNEL: UVM_INFO /home/build/vlib1/vlib/uvm-1800.2-
2017/src/base/uvm_report_server.svh(886) @ 0: reporter [UVM/REPORT/SERVER]
# KERNEL: --- UVM Report Summary ---
# KERNEL:
# KERNEL: ** Report counts by severity
# KERNEL: UVM_INFO : 3
# KERNEL: UVM_WARNING : 1
# KERNEL: UVM_ERROR : 1
# KERNEL: UVM_FATAL : 1
# KERNEL: ** Report counts by id
# KERNEL: [ERROR] 1
# KERNEL: [FATAL] 1
# KERNEL: [INFO] 2
# KERNEL: [UVM/RELNOTES] 1
# KERNEL: [WARN] 1
7|Page
@shraddha_pawankar Date:23/03/2024
Example 3:
`include "uvm_macros.svh"
import uvm_pkg::*;
module tb;
initial begin
//`uvm_info("INFO","This is INFO",UVM_NONE);
//`uvm_info("INFO","This is INFO",UVM_LOW);
`uvm_info("INFO","This is INFO",UVM_HIGH);
`uvm_warning("WARN", "This is Warning");
`uvm_error("ERROR", "This is Error");
`uvm_fatal("FATAL", "This is fatal error"); end
endmodule
Output:
# KERNEL: UVM_WARNING /home/runner/testbench.sv(10) @ 0: reporter [WARN]
This is Warning
# KERNEL: UVM_ERROR /home/runner/testbench.sv(11) @ 0: reporter [ERROR]
This is Error
# KERNEL: UVM_FATAL /home/runner/testbench.sv(12) @ 0: reporter [FATAL] This
is fatal error
# KERNEL: UVM_INFO /home/build/vlib1/vlib/uvm-
1.2/src/base/uvm_report_server.svh(869) @ 0: reporter [UVM/REPORT/SERVER]
# KERNEL: --- UVM Report Summary ---
# KERNEL:
# KERNEL: ** Report counts by severity
# KERNEL: UVM_INFO : 1
# KERNEL: UVM_WARNING : 1
# KERNEL: UVM_ERROR : 1
8|Page
@shraddha_pawankar Date:23/03/2024
# KERNEL: UVM_FATAL : 1
# KERNEL: ** Report counts by id
# KERNEL: [ERROR] 1
# KERNEL: [FATAL] 1
# KERNEL: [UVM/RELNOTES] 1
# KERNEL: [WARN] 1
# KERNEL:
# RUNTIME: Info: RUNTIME_0068 uvm_root.svh (135): $finish called.
`include "uvm_macros.svh"
import uvm_pkg::*;
module tb;
integer data1 = 50;
reg [15:0] data2= 16'h1234;
initial begin
`uvm_info("INFO",$sformatf("data1=%0d",data1),UVM_NONE)
`uvm_info("INFO",$sformatf("data1=%0b",data1),UVM_NONE)
`uvm_info("INFO",$sformatf("data2=%0d",data2),UVM_NONE)
`uvm_info("INFO",$sformatf("data2=%0b",data2),UVM_NONE)
9|Page
@shraddha_pawankar Date:23/03/2024
`uvm_info("INFO",$sformatf("data1=%0x",data1),UVM_NONE)
`uvm_info("INFO",$sformatf("data1=%0x",data2),UVM_NONE)
end
endmodule
Output:
# KERNEL: UVM_INFO /home/runner/testbench.sv(10) @ 0: reporter [INFO]
data1=50
# KERNEL: UVM_INFO /home/runner/testbench.sv(11) @ 0: reporter [INFO]
data1=110010
# KERNEL: UVM_INFO /home/runner/testbench.sv(12) @ 0: reporter [INFO]
data2=4660
# KERNEL: UVM_INFO /home/runner/testbench.sv(13) @ 0: reporter [INFO]
data2=1001000110100
# KERNEL: UVM_INFO /home/runner/testbench.sv(14) @ 0: reporter [INFO]
data1=32
# KERNEL: UVM_INFO /home/runner/testbench.sv(15) @ 0: reporter [INFO]
data1=1234
Code :
`include "uvm_macros.svh"
import uvm_pkg::*;
rand int a;
`uvm_component_utils(abc)
endclass
module top;
abc h1;
initial begin
h1=abc::type_id::create("h1",null);
h1.randomize();
h1.display();
end
endmodule
Output :
OUTPUT:
11 | P a g e
@shraddha_pawankar Date:23/03/2024
Code:
`include "uvm_macros.svh"
import uvm_pkg::*;
rand int a;
int b=2;
`uvm_component_utils(abc)
super.new(name,parent);
endfunction
task display();
`uvm_info("INFO",$sformatf("a=%0d",a),UVM_HIGH)
12 | P a g e
@shraddha_pawankar Date:23/03/2024
`uvm_info("INFO",$sformatf("b=%0b",b),UVM_HIGH)
endtask
endclass
module top;
abc h1;
initial begin
h1=abc::type_id::create("h1",null);
h1.set_report_verbosity_level(UVM_HIGH);
h1.randomize();
h1.display();
end
endmodule
Output :
13 | P a g e
@shraddha_pawankar Date:23/03/2024
Assume that you have four variables initialized to the constant values as mentioned
below. Use UVM_INFO to display the values of the variables on the Console in the
hexadecimal Format. 1) reg [3:0] a = 4'b1010 2) reg [15:0 ] b = 16'h1122 3) integer
c =12; 4) reg d = 1;
`include "uvm_macros.svh"
import uvm_pkg::*;
module tb;
reg [3:0] a=4'b1010; reg[15:0]
b=16'h1122;
integer c=12;reg
d = 1; initial
begin
`uvm_info("INFO",$sformatf("a=%0h",a),UVM_LOW)
`uvm_info("INFO",$sformatf("b=%0h",b),UVM_LOW)
`uvm_info("INFO",$sformatf("c=%0h",c),UVM_LOW)
`uvm_info("INFO",$sformatf("d=%0h",d),UVM_LOW)
end
endmodule
14 | P a g e
@shraddha_pawankar Date:23/03/2024
Output:
# KERNEL: UVM_INFO /home/runner/testbench.sv(12) @ 0: reporter [INFO] a=a
# KERNEL: UVM_INFO /home/runner/testbench.sv(13) @ 0: reporter
[INFO] b=1122# KERNEL: UVM_INFO /home/runner/testbench.sv(14) @
0: reporter [INFO] c=c
# KERNEL: UVM_INFO /home/runner/testbench.sv(15) @ 0: reporter [INFO] d=1
-------------------------------------------------------------------------------------------------------------
15 | P a g e
@shraddha_pawankar Date:23/03/2024
16 | P a g e