In reply to manasa-n:
OK, the structural description does not look so bad.
Regarding the construction of the seq I meant it is not useful to do this in the build_phase.
But you have to create it in the run_phase.
Could you please implement the end_of_elaboration phase in the env and call there print_topology() like this
function void end_elaboration_phase (uvm_phase phase);
super.end_elaboration_phase (phase);
uvm_top.print_topology();
endfunction