Your scoreboard is subscriber for three agents, you cann’t have single write function for all three. you need port implementation declaration macro for the each one here is the example mentioned below:
ovm_analysis_imp_decl(_rcv_txn_ag1)
ovm_analysis_imp_decl(_rcv_txn_ag2)
`ovm_analysis_imp_decl(_rcv_txn_ag3)
// Remember that the macro are declared above the class
class ur_scoreboard extend ovm_scoreboard;
// declare the implementation port.
ovm_analysis_imp_rcv_txn_ag1#(ur_txn_item, ur_scoreboard) rcvtxn_frm_agent1;
ovm_analysis_imp_rcv_txn_ag2#(ur_txn_item, ur_scoreboard) rcvtxn_frm_agent2;
ovm_analysis_imp_rcv_txn_ag3#(ur_txn_item, ur_scoreboard) rcvtxn_frm_agent3;
// The write function would be
function void write_rcv_txn_ag1();
endfunction
function void write_rcv_txn_ag2();
endfunction
function void write_rcv_txn_ag3();
endfunction
Regards,
Rupesh.