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.