In reply to Alex K.:
No. That macros has little to do with phasing. You pass the parent component to the constructor of the child component, and that’s where the child is registered.
The
`uvm_component_utils_begin macro does two things:
- It makes the class usable by the factory by registering the type and a string name in a global database, and by declaring the necessary functions to do the factory create and overrides.
- It adds a lot of code that makes the field automation macros work. The only thing related to the build_phase is when you call super.build_phase(), it executes code that calls uvm_config_db::get() for each field you have registered.
We strongly discourage the use of the field automation macros and prefer that you just use
`uvm_component_utils instead. See MacroCostBenefit | Verification Academy