Driver and monitor implementation

In reply to tfitz:

In reply to verif_learner:
At this point, you should ask yourself not “How would I verify this in UVM?” but “How would I verify this at all?”
You are correct that at the block level, having the driver send the descriptor information to the monitor so that the monitor knows what to look for makes sense. However, it is not always the case that the monitor has to be able to recreate everything on its own. You could have the monitor detect all the data/descriptors that occur on the bus and send them to the scoreboard, for example. But your driver could also send the descriptor information to the scoreboard which could, perhaps, wait until it sees the same descriptor reported by the monitor. Then you could have the scoreboard do whatever data checking is appropriate.
Given the nature of your system, even when this DMA function is put into a larger system, you’re still going to need to give your verification environment a hint as to what to look for. Having the scoreboard be told about descriptors is portable in that the descriptor information can come from anywhere in your system that you’re able to detect/predict it.

Thank you, Sir. You are correct that the way I am approaching has a fundamental issue and probably has nothing to do with UVM itself. I was a bit fixated on the fact that driver gets direct information about where what information is kept and not the monitor. I was also trying to do process a whole lot of information in monitor to make scoreboard simple.

I stepped back and took a look at the testbench architecture once again. While this specific driver gets information from test/sequence about descriptor and data, the DUT is initiated for DMA transfer through another interface (that is another agent).

So, I will keep the monitor (in question) simple and have it just send transaction information as it is to scoreboard. The other agent will send register transfers to DUT and also to the scoreboard. This is sufficient for scoreboard to decipher complete details.

Also, I have a comment on your comment to have driver send information to scoreboard.
I beg to differ here. Having driver send this information to scoreboard would make it difficult to re-use this environment at the next level, which is one of the primary reasons why I raised this question.