ian.keses@idt.com Posted March 9, 2012 Report Share Posted March 9, 2012 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? Quote Link to comment Share on other sites More sharing options...
dave_59 Posted March 10, 2012 Report Share Posted March 10, 2012 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. Quote Link to comment Share on other sites More sharing options...
ian.keses@idt.com Posted March 12, 2012 Author Report Share Posted March 12, 2012 Thank you for the information. Unfortunately I cannot find a "set_report_severity_id_override_hier()" method in UVM. Can you advise as to exact name of method to use to access top and all its children? ..and, by top, I assume you mean access to uvm_root handle, correct? Thanks again! Quote Link to comment Share on other sites More sharing options...
dave_59 Posted March 12, 2012 Report Share Posted March 12, 2012 Sorry, cut & paste error from your message. The method is set_report_severity_id_action_hier Quote Link to comment Share on other sites More sharing options...
Erling Posted March 13, 2012 Report Share Posted March 13, 2012 ...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? Erling Quote Link to comment Share on other sites More sharing options...
ian.keses@idt.com Posted March 16, 2012 Author Report Share Posted March 16, 2012 That worked, thank you! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.