The comments for uvm_base_sequence::finish_item() specify that no time can be consumed between start_item() and finish_item():
// Function: finish_item
//
// finish_item, together with start_item together will initiate operation of
// a sequence_item. Finish_item must be called
// after start_item with no delays or delta-cycles. Randomization, or other
// functions may be called between the start_item and finish_item calls.
//
I’ve seen user code that (accidentally) did have delays between start_item() and finish_item() which ran without errors. Does anyone know if this really is a requirement and not just a good idea, and if so why?