Build phase execution

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