Use of wild card "*" UVM_CONFIG_DB

Hi,

I was going through the following example given below

sfr_if SFR_IF(); // Declaration of SFR interface – This will be connected to modules
initial begin
uvm_config_db #(virtual sfr_if)::set(null, “uvm_test_top”, “SFR”, SFR_IF);
end

In the explanation of this example I am not able to figure out the meaning of the following line

The second argument of the set() method is a string used to identify the UVM component instance name(s) within the UVM testbench component hierarchy that may access the data object. This is “uvm_test_top” here to restrict access to the top level UVM test object. It could have been assigned a wildcard such as “*”, which means that all components in the UVM testbench could access it,but this may not be helpful, and carrys a potential lookup overhead in the get() process.

Here it’s mention that “this may not be helpful” so I am not able to understand that in what way It’s not hepful.

Please reply on that if anyone have idea over it!!

Thanks

In reply to Lalit K Singh:

The main reason that you only target “uvm_test_top” from the testbench is to prevent to possibility of conflicts in your agents. If you have multiple agents of the same type, each agent will use the same lookup string to get their associated configuration. You will use instance targeted configuration objects for each agent. Also, you will only get() the virtual agent interface handles at the test level and use an agent configuration object to store the handle, so there is no need to make it globally available.