Driver and monitor implementation

In reply to verif_learner:

I am implementing an agent for a DMA function. The sequence for the agent basically sends DMA descriptor and data information through transaction item to the driver. Driver sends both descriptor and data to the DUT upon request from the DUT.
The monitor has to reconstruct the data based on what is happening on the bus and send the same to scoreboard.
On the bus, one can only see data and address and other control signals. There is no such thing as descriptor transfer or data transfer. Only DUT or test/sequence knows what address is assigned to the descriptor or data in the memory space.
Further, one cannot infer this based on the addresses, as descriptors or data can reside anywhere in the system memory.
Given this, I am not sure, how monitor can get the same information that driver gets. I am not sending any information from driver to monitor as this would break a basic rule of vertical re-use.
So, I am essentially stuck at this point and looking for some directions.
I can provide more clarity if needed.

As you are describing the scenario, you have a responding driver. Waiting for a request coming from your DUT. If the driver gets trhe request it starts the driver protocol and is sending data to your DUT.
The monitor is observing your pinlevel interface. The monitor is doing nothing until it sees the request coming from the DUT. Then it can extract the data from the pinlevel interface and putting them into a transaction.
Where is the problem?