Hello -
I am reading sequences and having lot of doubts. Can anyone answer the following -
(1) suppose I have hierarchy of sequences (each instantiating each other) the start method should be called for which sequence instance?
e.g. seq_a instantiates seq_b; seq_b instantiates seq_c
I assume that we have to call start method for seq_a only.
(2) In one of the Mentor tutorial, it is mentioned that sequences can start sub-sequences.
A sequence may wish to start child sequences or other parent sequences. The sequence can itself start child
sequences.
sub_sequence.start(m_sequence_controller, this,
weighted_priority = 100);
This method is totally different from instantiating a subsequence and then randomizing it.
In this case, the subsequences all send transactions to sequencer. Is this correct?
In case of sub-sequences, the randomization continue until the final sequence is randomized
and the transaction item is sent. Is this correct?
(3) In the same Mentor tutorial, it is also mentioned about starting a parent sequence.
This is something I am not able to understand.
Parent start
After the declarations above are complete, the following code can be used to start a parent sequence. This
should be called from within the run task or some other task that is called when the simulation is in the run
phase.
sequence_a.start(my_sequence_controller, null,
weighted_priority = 100);
This task will return after the sequence is finished.
(4) when a sequence does randomization like this, there is nothing sent to sequencer from the sequence. For example,
virtual task body();
p_sequencer.ovm_report_info(get_type_name(),
$psprintf(“%s starting with count = %0d”,
get_sequence_path(), count), OVM_MEDIUM);
repeat(count) begin : repeat_block
`ovm_do_with(read_byte_seq0,
{ read_byte_seq0.start_addr == start_address;
read_byte_seq0.transmit_del == incr_transmit_del; } )
start_address++;
end : repeat_block
endtask : body
In the above case, the sequence above does not send a transaction item to sequencer.
Is this correct?
If this is true, what happens to send_request call?
Thank you …