UVM Basics
Reporting
John Aynsley
CTO, Doulos
[email protected]
www.verificationacademy.com
The Report Macros
`uvm_info
("id", "message", verbosity)
`uvm_warning("id", "message")
`uvm_error
("id", "message")
`uvm_fatal
("id", "message")
From uvm_component
From uvm_sequence
From SystemVerilog module
Details of the Report
function void write(my_transaction t);
`uvm_info("ja", "Transaction received", UVM_NONE)
Severity
Severity
ID/Originator
File
Line
Message
Time
Verbosity
Hierarchical path
ID
# UVM_INFO eg.sv(110) @ 100: uvm_test_top.m_env.m_driver [ja]
Transaction received
Message
Controlling Verbosity
`uvm_info("id", "message 1", UVM_NONE)
Always appear
`uvm_info("id", "message 2", UVM_LOW)
`uvm_info("id", "message 3", UVM_MEDIUM)
`uvm_info("id", "message 4", UVM_HIGH)
`uvm_info("id", "message 5", UVM_FULL)
Usually filtered out
uvm_top.set_report_verbosity_level_hier(UVM_LOW);
Top-level component
Applies to entire hierarchy
Output if verbosity <= UVM_LOW
Setting Actions
uvm_top.set_report_severity_action_hier(
UVM_INFO, UVM_NO_ACTION);
All info messages
Suppress messages
uvm_top.set_report_id_action_hier(
"ja", UVM_NO_ACTION);
Suppress all messages with ID = "ja"
Some Common Actions
UVM_NO_ACTION
Do nothing
UVM_DISPLAY
Send report to standard output (default)
UVM_LOG
Send report to a file
UVM_COUNT
Stop simulation when max count is reached (error)
UVM_EXIT
Finish simulation immediately (fatal)
UVM_STOP
Call $stop
Redirecting Reports to a File
file_h = $fopen("my.log", "w");
uvm_top.set_report_default_file_hier(file_h);
uvm_top.set_report_severity_action_hier(
UVM_INFO, UVM_DISPLAY + UVM_LOG);
_hier method must be called after build_phase
Summary 1
Separating tests from test bench
Configurable test bench
Summary 2
Layered sequences
Transaction-level communication
Reusable VIP
UVM Basics
Reporting
John Aynsley
CTO, Doulos
[email protected]
www.verificationacademy.com