Best way to introduce delay between sequences

In reply to uvmsd:

The uvm_event_pool is a construct useful for horizontal synchronization between different agents. If you are in the same agent you can simply use uvm_event.
With respect to your questions.

ev.trigger(req);

accepts as argument any uvm_object, like a seq_item because it is extended from uvm_object.

ev.wait_trigger();
$cast(req, ev.get_trigger_data());

get_trigger returns an object of uvm_object and we have to cast this to our seq_item type.