In reply to Rsignori92:
The extended_seq_item class in this case is created in the Monitor class in the Agent and is sent to the Predictor via the analysis_ports. The analysis_ports are connected this way : Monitor -> Agent -> Predictor.bus_in
In theory I shouldn't need to create the same extended_seq_item class again in the bus2reg method as the object is sent to this method and I just want to cast it to the handle of the same class (ext) hence the 'ext' handle should then point to the object that is sent from the Monitor for further access.
I've checked that the uvm_reg_predictor are instantiated with the same extended_seq_item and parameterised the same way:
uvm_reg_predictor #(extended_seq_item #(config_class)) predictor_h;
The 'extended_seq_item' created in the Monitor that is sent also have the same parameterisation:
extended_seq_item #(config_class) ext_in_monitor;
The analysis_ports are also created with the same parameterisation:
uvm_analysis_port #(extended_seq_item #(config_class)) ext_seq_item_ap;
Can anyone suggest if there's anything else that I've missed?