In reply to peaceos7:
The only class that is required to be registered with the factory are your test classes, since ‘run_test()’ uses the factory to create the required test.
When you create a component, you specify it’s location within the environment hierarchy using the ‘parent’ handle. The uvm scheduler traverses the environment’s hierarchy to call the appropriate phases of the component. If you specify ‘null’ as the parent, then the component will exist outside of the environment’s hierarchy, and none of the component phases will be called.