Hi,
I want to change the verbosity of the message during simulation through "uvm_report_catcher". I used "set_verbosity" method and changed all UVM_LOW verbosity to UVM_FULL.
I ran test with UVM_MEDIUM verbosity but all messages declared with UVM_LOW verbosity are printed in the log file.
I have pasted an example in which there are some messages in "tb_env" class with UVM_LOW, UVM_MEDIUM and UVM_HIGH verbosity and the verbosity UVM_LOW is changed to UVM_HIGH. I ran this example with UVM_MEDIUM verbosity. But as shown in output, messages with UVM_LOW verbosity are printed.
Example:
program test;
import uvm_pkg::*;
`include "uvm_macros.svh"
class tb_env extends uvm_env;
`uvm_component_utils(tb_env)
function new(string name, uvm_component parent = null);
super.new(name, parent);
`uvm_info(get_full_name(),"Env class new function completed", UVM_HIGH)
endfunction
function void build_phase(uvm_phase phase);
uvm_config_db#(time)::set(null, "global_timer.*", "timeout", 1000);
uvm_config_db#(time)::set(null, "global_timer.main", "timeout", 3000);
uvm_config_db#(time)::set(null, "global_timer.run", "timeout", 0);
`uvm_info(get_full_name(),"Env class build function completed", UVM_HIGH)
endfunction
task reset_phase(uvm_phase phase);
`uvm_info(get_full_name(),"Env class reset_phase started", UVM_LOW)
phase.raise_objection(this);
#20;
phase.drop_objection(this);
`uvm_info(get_full_name(),"Env class reset_phase completed", UVM_MEDIUM)
endtask
task configure_phase(uvm_phase phase);
`uvm_info(get_full_name(),"Env class configure_phase started", UVM_LOW)
phase.raise_objection(this);
#200;
phase.drop_objection(this);
`uvm_info(get_full_name(),"Env class configure_phase completed", UVM_MEDIUM)
endtask
task main_phase(uvm_phase phase);
`uvm_info(get_full_name(),"Env class main_phase started", UVM_LOW)
phase.raise_objection(this);
#1000;
phase.drop_objection(this);
`uvm_info(get_full_name(),"Env class main_phase completed", UVM_MEDIUM)
endtask
task shutdown_phase(uvm_phase phase);
`uvm_info(get_full_name(),"Env class shutdown_phase started", UVM_LOW)
phase.raise_objection(this);
#10;
phase.drop_objection(this);
`uvm_info(get_full_name(),"Env class shutdown_phase completed", UVM_MEDIUM)
endtask
endclass
tb_env env;
class test1_demoter extends uvm_report_catcher;
`uvm_object_utils(test1_demoter)
function new(string name="test1_demoter");
super.new(name);
endfunction
function action_e catch();
if(get_severity() == UVM_INFO) begin
set_severity(UVM_WARNING);
`uvm_info("demoter", "Caught FATAL / demoted to ERROR", UVM_MEDIUM)
end
if(get_verbosity() == 100) begin
set_verbosity(400);
`uvm_info("demoter","Changing verbosity",UVM_LOW)
end
return THROW;
endfunction
endclass
class test extends uvm_test;
test1_demoter demoter;
`uvm_component_utils(test)
function new(string name, uvm_component parent = null);
super.new(name, parent);
`uvm_info(get_full_name(),"Test class new function completed", UVM_HIGH)
endfunction
function void build_phase(uvm_phase phase);
super.build_phase(phase);
env = tb_env::type_id::create("env",this);
demoter = test1_demoter::type_id::create("demoter");
uvm_report_cb::add(env, demoter);
`uvm_info(get_full_name(),"Test class build function completed", UVM_HIGH)
endfunction
task pre_main_phase(uvm_phase phase);
phase.raise_objection(this);
#100;
phase.drop_objection(this);
endtask
task main_phase(uvm_phase phase);
phase.raise_objection(this);
// Will cause a time-out
// because we forgot to drop the objection
endtask
task shutdown_phase(uvm_phase phase);
phase.raise_objection(this);
#100;
phase.drop_objection(this);
endtask
endclass
initial
begin
run_test("test");
end
endprogram
Command: vsim -sv_lib ../../../../lib/uvm_dpi -c "+UVM_VERBOSITY=UVM_MEDIUM" -do "run -all; q" -l questa.log -f questa.tops
Output:
# run -all
# UVM_INFO ../../../../src/base/uvm_root.svh(392) @ 0: reporter [UVM/RELNOTES]
# ----------------------------------------------------------------
# UVM-1.2
# © 2007-2014 Mentor Graphics Corporation
# © 2007-2014 Cadence Design Systems, Inc.
# © 2006-2014 Synopsys, Inc.
# © 2011-2013 Cypress Semiconductor Corp.
# © 2013-2014 NVIDIA Corporation
# ----------------------------------------------------------------
#
# *********** IMPORTANT RELEASE NOTES ************
#
# You are using a version of the UVM library that has been compiled
# with `UVM_NO_DEPRECATED undefined.
# See http://www.eda.org/svdb/view.php?id=3313 for more details.
#
# You are using a version of the UVM library that has been compiled
# with `UVM_OBJECT_DO_NOT_NEED_CONSTRUCTOR undefined.
# See http://www.eda.org/svdb/view.php?id=3770 for more details.
#
# (Specify +UVM_NO_RELNOTES to turn off this notice)
#
# UVM_INFO @ 0: reporter [RNTST] Running test test...
# UVM_INFO test.sv(87) @ 0: uvm_test_top.env [demoter] Caught FATAL / demoted to ERROR
# UVM_INFO test.sv(91) @ 0: uvm_test_top.env [demoter] Changing verbosity
# UVM_WARNING test.sv(45) @ 0: uvm_test_top.env [uvm_test_top.env] Env class reset_phase started
# UVM_INFO test.sv(87) @ 20: uvm_test_top.env [demoter] Caught FATAL / demoted to ERROR
# UVM_WARNING test.sv(49) @ 20: uvm_test_top.env [uvm_test_top.env] Env class reset_phase completed
# UVM_INFO test.sv(87) @ 20: uvm_test_top.env [demoter] Caught FATAL / demoted to ERROR
# UVM_INFO test.sv(91) @ 20: uvm_test_top.env [demoter] Changing verbosity
# UVM_WARNING test.sv(53) @ 20: uvm_test_top.env [uvm_test_top.env] Env class configure_phase started
# UVM_INFO test.sv(87) @ 220: uvm_test_top.env [demoter] Caught FATAL / demoted to ERROR
# UVM_WARNING test.sv(57) @ 220: uvm_test_top.env [uvm_test_top.env] Env class configure_phase completed
# UVM_INFO test.sv(87) @ 320: uvm_test_top.env [demoter] Caught FATAL / demoted to ERROR
# UVM_INFO test.sv(91) @ 320: uvm_test_top.env [demoter] Changing verbosity
# UVM_WARNING test.sv(61) @ 320: uvm_test_top.env [uvm_test_top.env] Env class main_phase started
# UVM_INFO test.sv(87) @ 1320: uvm_test_top.env [demoter] Caught FATAL / demoted to ERROR
# UVM_WARNING test.sv(65) @ 1320: uvm_test_top.env [uvm_test_top.env] Env class main_phase completed
# UVM_FATAL ../../../../src/base/uvm_phase.svh(1491) @ 9200000000000: reporter [PH_TIMEOUT] Default timeout of 9200000000000 hit, indicating a probable testbench issue
# UVM_INFO ../../../../src/base/uvm_report_catcher.svh(705) @ 9200000000000: reporter [UVM/REPORT/CATCHER]
# --- UVM Report catcher Summary ---
#
#
# Number of demoted UVM_FATAL reports : 0
# Number of demoted UVM_ERROR reports : 0
# Number of demoted UVM_WARNING reports: 0
# Number of caught UVM_FATAL reports : 0
# Number of caught UVM_ERROR reports : 0
# Number of caught UVM_WARNING reports : 0
#
# UVM_INFO ../../../../src/base/uvm_report_server.svh(847) @ 9200000000000: reporter [UVM/REPORT/SERVER]
# --- UVM Report Summary ---
#
# ** Report counts by severity
# UVM_INFO : 12
# UVM_WARNING : 6
# UVM_ERROR : 0
# UVM_FATAL : 1
# ** Report counts by id
# [PH_TIMEOUT] 1
# [RNTST] 1
# [UVM/RELNOTES] 1
# [UVM/REPORT/CATCHER] 1
# [demoter] 9
# [uvm_test_top.env] 6
#
# ** Note: $finish : ../../../../src/base/uvm_root.svh(135)
# Time: 9200 sec Iteration: 0 Region: /uvm_pkg::uvm_phase::execute_phase
# End time: 11:59:34 on Nov 06,2015, Elapsed time: 0:00:04
# Errors: 0, Warnings: 0