Jump to content
Sign in to follow this  
drianf0

Disable UVM_INFO printout by verbosity

Recommended Posts

Hello,

I have a library with the sequence which exploits `uvm_info to print messages. It uses UVM_MEDIUM verbosity and AXI4STREAM_SLAVE id. I would like to disable those messages, however I can't change code of the library. For this reason, I have tried to call  m_sequencer.set_report_severity_id_verbosity(UVM_INFO, "AXI4STREAM_SLAVE", UVM_HIGH). Please notice, the function is called for sequencer on which the sequence is spawned. The report configuration of the sequencer:

 

 

# report handler state dump
#
#
# +-----------------+
# |   Verbosities   |
# +-----------------+
#
# max verbosity level =         200
# *** verbosities by id
#
# *** verbosities by id and severity
# UVM_INFO:AXI4STREAM_SLAVE --> UVM_HIGH
#
# +-------------+
# |   actions   |
# +-------------+
#
# *** actions by severity
# UVM_INFO = DISPLAY
# UVM_WARNING = DISPLAY
# UVM_ERROR = DISPLAY COUNT
# UVM_FATAL = DISPLAY EXIT
#
# *** actions by id
#
# *** actions by id and severity
#
# +-------------+
# |    files    |
# +-------------+
#
# default file handle =           0
#
# *** files by severity
# UVM_INFO =           0
# UVM_WARNING =           0
# UVM_ERROR =           0
# UVM_FATAL =           0
#
# *** files by id
#
# *** files by id and severity
# report server state

 

 

The problem is that the message is still displayed. I debugged the issue and noticed that the problem is in uvm_sequence_item.svh (I use UVM-1.1d). In the uvm_report_enabled function, there is a part:

if (m_client.get_report_verbosity_level(severity, id) < verbosity ||
        m_client.get_report_action(severity,id) == uvm_action'(UVM_NO_ACTION))
      return 0;
    else
      return 1;

As one can see, even if the message will be rejected by get_report_verbosity_level, it will get the default action from get_report_action and be printed at the end. According to my understanding, it's not a behaviour described in the documentation (uvm_report_object):

If the verbosity level of a report is greater than the configured maximum verbosity level of its report object, it is ignored.  If a report passes the verbosity filter in effect, the report’s action is determined.

The decision whether the message is printed is based on the assigned action, not verbosity. Moreover, I don't see sense of verbosity usage in this case. I would be grateful, if somebody could clarify my concerns.

 

Of course, another workaround is to call: m_sequencer.set_report_severity_id_action(UVM_INFO, "AXI4STREAM_SLAVE", UVM_NO_ACTION) however, I don't understand, why I couldn't get the same behaviour modifying verbosity.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×