Why object configuration is not automatic

In the example of Object Configuration, set() method is called before the end of build_phase(). Why driver has to execute get() in order to receive the configuration from the test?

In reply to jromeror:

None of the examples in the UVM cookbook have automatic configuration because none of the use the `uvm_field macros. They don’t use them because the can incur poor performance, and people are always getting confused about or can never remember which types of config objects have automatic configuration, as well as only those config objects in classes derived from uvm_component. See MacroCostBenefit | Verification Academy

In reply to dave_59:

Thanks Dave for the quick response. I was trying to use automatic configuration of an ovm_object, but is not working. I would like to know under which circumstances automatic configuration of an object is allowed (if there’s any). Macro Cost-Benefit paper mentions that auto-config code is never used for ovm_objects, but do not explain why.

In reply to jromeror:

I can’t say for sure why, but there are a limited number of uvm_components constructed at time 0, and there are potentially many more uvm_objects constructed as your test runs. There is a lot of overhead checking each field of every object constructed to see if auto config is enabled for that field, and then a string lookup to see if that field has been set.