Overriding UVM_NONE messages

In my top-level env, there are multiple blocks developed by different engineers. Some of them used UVM_NONE verbosity.
I tried to override the verbosity based on ID and increase it to UVM_HIGH. But, it didnt work. I am still seeing those messages.
I understand that only macro checks the verbosity and sends it to handler. Handler doesnt check the verbosity again and prints it.
But,is there a way ,I can override the verbosity and not see the messages.

class verb_none_catcher extends uvm_report_catcher;
   function new(string name="verb_none_catcher");
     super.new(name);
   endfunction
   
   function action_e catch();
     if( (get_verbosity() == UVM_NONE)) begin
     set_verbosity(UVM_HIGH);
   return THROW;//CAUGHT here works. But,when I run with UVM_HIGH, these will not be displayed
   end

   if((get_fname() == "data_driver.sv") & (get_id() == "cellQ"))
     set_verbosity(UVM_HIGH);
   
   if((get_id() == "backdoor_write")|(get_id() == "backdoor_read"))
     set_verbosity(UVM_HIGH);
   
   if(get_id() == "map_imp")
     set_verbosity(UVM_HIGH);

   return THROW;
   
   endfunction
endclass

Did you try using command line verbosity control switches to control the verbosity of all components or a particular component? Command-Line Verbosity Control | UVM Cookbook | Siemens Verification Academy

1 Like

Command-line verbosity contro; doesnt filter out the UVM_NONE messages

Using these runtime options on the simulator command line usually suppresses all UVM_INFO messages:

+UVM_VERBOSITY=UVM_NONE +uvm_set_action=*,_ALL_,UVM_INFO,UVM_NO_ACTION

The UVM LRM has been updated to say

The report catcher callback is made after the verbosity filtering is applied, this has two consequences. The first is that if a UVM_INFO message if filtered by its verbosity setting, then the processing of the message is abandoned and the report catcher will not be invoked. The second is that any changes to the verbosity of the message by the report catcher would have no effect, the only way to stop a message being output is to return CAUGHT from the catch() method in the report catcher extended object.

What I suggest you do is call get_client().get_report_max_verbosity_level() and then decide if the report catcher should return CAUGHT or THROW.