Uvm reg block override using factory override

I am not clear on the need to use factory override in this case.
You should instead define a top_reg_block which has all these 3 reg_blocks as sub-blocks.
This top_reg_block would act as your root register block.

Based on this idea for Sub-system level Tb’s we re-use each of the IP’s reg_block as sub-block of our user-defined ss_top_reg_block