Use of start() of sequences in UVM
The prototype of start()
is:
virtual task start ( uvm_sequencer_base sequencer,
uvm_sequene_base parent_sequence = null,
int this_priority = -1,
bit call_pre_post = 1 );
The first argument must be set, others being optional. After calling seq.start()
, following methods will execute in order and in demand:
seq.pre_start();
seq.pre_body(); // if call_pre_post == 1
parent_seq.pre_do(); // if parent_seq != null
parent_seq_mid_do(this); // if parent_seq != null
seq.bosy();
parent_seq_post_do(this); // if parent_seq != null
seq.post_body(); // if call_pre_post == 1
sub_seq.post_start();
Reference:
[1] https://www.chipverify.com/uvm/how-to-execute-sequences-via-start-method