Regarding usage of uvm_config_db :: set (cntxt, "inst_name*", field_name, T value)

Hello,

I was reading about the set() method of uvm_config_db in CookBook. In one of the examples, an asterik was used along with instance name:

uvm_config_db #( ahb_agent_config )::set( this , “m_ahb_agent*” , “ahb_agent_config” , ahb_agent_config_h );

Following was the explanation given for this usage:
We use “m_ahb_agent*” to ensure that we config both the agent and its children. Without the ‘*’ we would only
configure the agent itself and not the driver, sequencer and monitor inside it.

Question :

Does this mean that m_ahb_agent need not set ahb_agent_config_h for m_ahb_driver and m_ahb_monitor again, since they can obtain the config handle due to the use of Asterik?

In reply to desaivs1994:

The first and the second argument are Building the context. ‘this’ menas always a relative path, relative to the component where you are executing the corresponding command. If you want to Limit the Access to a certain component you can do this through the second Argument. In your case only blocks with the name ‘m_ahb_agent’ can retrieve the data. If you do not want to Limit this, use the wildcard ‘*’. uvm_config_db is also supporting globbing.

In reply to chr_sue:

In reply to desaivs1994:
The first and the second argument are Building the context. ‘this’ menas always a relative path, relative to the component where you are executing the corresponding command. If you want to Limit the Access to a certain component you can do this through the second Argument. In your case only blocks with the name ‘m_ahb_agent’ can retrieve the data. If you do not want to Limit this, use the wildcard ‘*’. uvm_config_db is also supporting globbing.

Thank you for the reply chr_sue,

So in my case, I guess “m_ahb_agent*” is an example of globbing.

In reply to desaivs1994:

No this is not globbing. This is another way as using Wildcards, but more specific, differentiating between characters, numbers etc.