Thanks Mayur, Dave for the explanations. I have one more question:
while creating objects, we supply only one argument (name string) to the create. (unlike component where we supply name and parent handle to create method) If uvm_object_registry::create method is not provided second argument (uvm_component argument) it will take default value of null. So how does an object know its hierarchical path? The hierarchical path will be required for example, to implement instance based overrides for objects. As an example, function :
function void set_inst_override_by_type (uvm_object_wrapper original_type, uvm_object_wrapper override_type,string full_inst_path) will require full instance path if an instance is an object.
rgs,
-sunil