I need to write a scoreboard for a DUT which has 3 AXI masters as input and one of them goes out on the other side to AXI slave…like 3 AXI masters-> DUT-> AXI slave. Please let me know if my understanding below is correct or are there any more ways to do it.
Since there are three AXI master interfaces and one goes out to the slave, i will need to instantiate the interface 4 times–> like axi_interface m1,m2,m3,m_out, am I correct ?
My scoreboard will get AXI transactions from one monitor which I can add in the env which will be sampling AXI transaction 1 (m_tran_1), AXI transaction 2(m_tran_2) and AXI transaction 3 (m_tran_3) from 3 instantiations of AXI master interface .In this monitor, I can wait for req1,req2 or req3 to go high and and based on round robin (for example ), it will make gnt_1, gnt_2 or gnt_3 high and send that transaction to the sb which will store it in a queue say expected_q, and sb will also get AXI output transaction (m_out_trans) from this monitor and stores as actual_q and compares both expected_q and actual_q transactions ?
Is my understanding correct ?
Is it okay to add a monitor in the env to get hold of all the 3 master transactions ?
Is there a better way of doing it ?