1) Why run phase is task based and all other phases are function based? why can't we write all the phases in either task or function? Can anyone explain detail about this? 2) Can we connect multiple driver to a single sequence and vice versa?

In reply to giridhar.ece@gmail.com:

The objective is to have the dynamic part of the UVM environment completed at runtime zero. If we would use tasks instead of functions for constructing/connecting and checking the UVM environment it could be ready at any time after runtime zero. You would not know when starting when the environment is ready for execution. This would make your life quite complicated.