In reply to chr_sue:
I completely agree that handling of transaction delays and wait for resets should be handled in the UVC driver. I will typically include a delay field in a sequence item that will allow you to delay a transaction for a given number of interface clocks.
However, the utility agent can give some more flexibility in creating various sequences where perhaps you want two transactions to start at the same time even if they have different interface clocks. By using a utility agent, you can start the two sequences at the same time after a delay.