Difference Between UVM_OBJECT and UVM_COMPONENT

In reply to sudheer:

UVM class reference manual would give you a more comprehensive description about the difference.

uvm_component Class Hierarchy

  • uvm_void
    • uvm_object
      • uvm_report_object
        • uvm_component

17.1 uvm_component
The uvm_component class is the root base class for UVM components. In addition to the features inherited from uvm_object and uvm_report_object,uvm_component provides the following interfaces:

Hierarchy - provides methods for searching and traversing the component hierarchy.
Phasing - defines a phased test flow that all components follow, with a group of standard phase methods and an API for custom phases and multiple independent phasing domains to mirror DUT behavior e.g. power
Reporting - provides a convenience interface to the uvm_report_handler. All messages, warnings, and errors are processed through this interface.
Transaction recording - provides methods for recording the transactions produced or consumed by the component to a transaction database (vendor specific).
Factory - provides a convenience interface to the uvm_factory. The factory is used to create new components and other objects based on type-wide and instance-specific configuration.

The uvm_component is automatically seeded during construction using UVM seeding, if enabled. All other objects must be manually reseeded, if appropriate. See uvm_object::reseed for more information.