UVM component have different phases like build() , connect() , end_of_elaboration() , start_of_simulation(), run() , extract() , check() & report(). Except run() all other phases are virtual functions , run() phase is a virtual task.
phases operate in a particular sequence as follows build -> connect --> end_of_elaboration --> start_of_simulation --> run --> extract --> check --> report. All the phases except build() phase is bottom up , build phase is top down. In UVM we have provision to add custom phase.