Question on uvm_object_registry::create() function

according to the uvm reference manual, the description of uvm_object_registry::create() is following:

static function T create (string name = "",
uvm_component parent = null,
string contxt = "" )

Returns an instance of the object type, T, represented by this proxy, subject to any
factory overrides based on the context provided by the parent’s full name. The contxt
argument, if supplied, supercedes the parent’s context. The new instance will have the
given leaf name, if provided.

What is the significance of the parent parameter in above? The UVM objects do not maintain hierarchical tree like uvm_components. In that case how is the parent defined in above? Is it the component in which the object is created? In what situation we need to use the parent argument in case of uvm_objects? Can someone elaborate this

-sunil puranik

In reply to

You don’t normally use these extra arguments when explicitly calling type_id::create()

They are used in the macro 'uvm_create() as in:

class my_sequence ...;
  task body();
    `uvm_info("REQ", req.get_full_name(), UVM_MEDIUM)

In reply to

The parent is just used to determine which factory instance overrides apply. This makes sense only when creating an object from within a class method extended from a uvm_component.