In reply to puttasatish:
The factory and field automation are independent features. It’s just that the uvm_component_utils_begin macro adds the code for both. The
uvm_component_utils macro just adds the factory registration code. There is no documented macro that just adds field automation, although if you look at the source code, you could easily figure it out.
The uvm_component::build_phase() method calls uvm_component::apply_config_settings().
Searches for all config settings matching this component’s instance path. For each match, the appropriate set_local method is called using the matching config setting’s field_name and value. Provided the set_local method is implemented, the component property associated with the field_name is assigned the given value.
In addition to the overhead of searching through the config db, many users are unaware of the difference in this behavior between uvm_components versus uvm_objects. There are also unaware of which types have the set_*_local methods defined.