Difference Between UVM_OBJECT and UVM_COMPONENT

In reply to Jonathan_Alvarez:

Hi Jonathan,

you are saying a fwe things which are really incorrect.
In the UVM we know uvm_components and uvm_objects.

(1) uvm_components are used to construct the UVM environment. They are used to make testbench components. The registration with the factory is made with the macro uvm_component_utils. (2) uvm_objects are used for UVM transient objects like uvm_seq_item, uvm_transaction, uvm_sequence. The base class uvm_object is also used for configuration objects, i.e. classes which contain configuration data to configure uvm_components or other uvm_objects, like sequences, etc. They are regsitered with the factory using the macro uvm_object_utils.

The macros uvm_component_param_utils and uvm_object_param_utils are used for factory registration of parameterized classes.

It is recommended to avoid the factory registration of configuration objects. This gives you freedom to define the constructor. Then there is no need to have exactly one argument (name).