Jump to content

Unable to downgrade messaging severity from uvm_component

Recommended Posts

When I extend a class from uvm_component and make the following macro call within the extension:

`uvm_error("filter_me", "my error message");

I then try to filter the message from a testcase base class which contains the following code :

uvm_root top;

top = uvm_root::get();

top.set_report_severity_id_override(UVM_ERROR, "filter_me", UVM_WARNING);

UVM is not able to downgrade the error message.

If one extends from uvm_object (rather than uvm_component) the downgrade occurs successfully.

Therefore there appears to be a bug, whereby the search path to downgrade by ID is broken for uvm_component, but works from uvm_object.

FYI I found this issue using UVM 1.0. Can you please help?

Link to comment
Share on other sites

The problem is that top.set_report_severity_id_override() only sets the override for one component, the uvm_top. All classes not extended from uvm_report_object (effectively all classes not extended from uvm_component), refer to the uvm_top for their report settings. You need to use component_h.set_report_severity_id_override() or top.set_report_severity_id_override_hier() to set the override for top and all of it's children. The children have to been already constructed at the time of the override.

I don't remember if they ever implemented this, but I recall a feature being discussed that certain report settings of the parent are copied over to the children as they were constructed. You might search reference manual for that.

Link to comment
Share on other sites

...The method is set_report_severity_id_action_hier

With this method, there will easily be an override entry for the "filter_me" report in most every component in the environment. Testing this out in a testbench resulted in set_report_severity_id_action_hier() calling itself 600 times for a single override, thus for a report with one source (for a given id), there will be an unused override in 599 maps in 599 report handlers. Also, if there are multiple report sources, all of them will be overridden, and it seems to be no reasonable way to target a specific source. Not sure what the rationale behind this is. Why not simply log everything through a single report object, i.e multiple report sources (with unique id's), but one reporter, one handler and one server? Is this limiting, i.e what useful feature is enabled by a forest of report handlers? Also, what useful feature is enabled by the report catchers, that isn't already provided by the report object api?


Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...