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.