Sync between DUT and Reference Model

Hi ,

I am writing a reference model for the first time. I have the following requirement to be modeled.
Step 1. Send 5 packets to the scoreboard ( I send it an order , and expected in the same order from DUT )
Step 2. Wait for the a signal from DUT marking the end of Step 1 from DUT ( or tracking the model queue got empty in the scoreboard )
Step 3. Parallel to waiting in step 2 , collect some transactions in model
Step 4. Use all the packets collected during Step 3 to calculate further new packets and go back to Step 1.

How do I wait for handshake with the DUT during Step 2 , while collecting the packets ?

Appreciate any help.
Regards,

In reply to uvm_user123:

to be honest, I did not really get your point. But I believe you are thinking too much in terms of clock or bus cycles. Your refernece model should be on the transaction level, i.e. it does not know anything about timing. It considers only the order of the data it gets. All the timing synchronisation should be done by your DUT. In the reference model you have to ensure 2 things. You should never loose any transaction and you should never change the order. Guaranteeing this all things are fine.

In reply to chr_sue:

Thanks for your response. The initial packets sent ( in Step 1 ) also has timing etc but i just care about the order and able to code without thinking about the timing .
But I need a handshake that DUT also sent those 5 packets ( Step 2 ) before going further in transaction.
Basically data is taken differently when it is received while waiting for the handshake with DUT .
Let me know if it makes sense ?

In reply to uvm_user123:

All data processed for compairing (in a scoreboard) or calculating functional coverage have to be TLM data, extracted form a monitor (as an example). All checking does not stop the processing in your DUT. Their is no handshake required. The monitor is extracting your transactions and providing this to further processing.