Two top components in UVM environment?

Top component means a component without parent (null). I used to think the single instance of uvm_root is the only top component and globally available. Inside top module, there is a initial block to call run_test, eventually uvm_root::run_test. In uvm_root::run_test(), create_component_by_name is used to create a test component.

I just noticed when test component is created in run_test, the parent is also null, meaning the created test component has no parent? In run_test, should this be used when creating a test component, instead of null? Since test is created by root, would it make sense to have root as its parent?


function uvm_root::new();
  super.new("__top__", **null**);
...........
endfunction

task uvm_root::run_test(string test_name="");
...........
$cast(uvm_test_top, factory.create_component_by_name(test_name,
          "", "uvm_test_top", **null**));
...........
endtask