I have one specific question in ragards to the communication/connection between predictor and RAL model in case where the predictor is an explicit component in the TB. What I understand is that the predictor udpates the RAL model based on transactions it receives from the agents.
However, in some of the testbenches I am using as a reference, I am unable to see this communciation.
For example, this is the code snippet I see in one of the examples available on in public domain.
function void connect_phase( uvm_phase phase );
super.connect_phase( phase );
jb_agent.jb_ap.connect( jb_fc_sub.analysis_export );
jb_agent.jb_ap.connect( jb_sb.jb_analysis_export );
if ( jb_env_cfg.jb_reg_block.get_parent() == null ) begin // if the top-level env
jb_env_cfg.jb_reg_block.reg_map.set_sequencer( .sequencer( jb_agent.jb_seqr ),
.adapter( jb_agent.jb_reg_adapter ) );
end
jb_env_cfg.jb_reg_block.reg_map.set_auto_predict( .on( 0 ) );
jb_reg_predictor.map = jb_env_cfg.jb_reg_block.reg_map;
jb_reg_predictor.adapter = jb_agent.jb_reg_adapter;
jb_agent.jb_ap.connect( jb_reg_predictor.bus_in );
endfunction: connect_phase
I dont see any specific connection between predictor and RAL model. The only one I see is the connection from predictor to reg_map object.
I tried to understand uvm_reg_map class but its quite complex.