Early randomization

Hi guys,
in my sequence body, I used an ovm_do_on_with macro to send my trsaction item to the driver with some constrains:

`ovm_do_on_with(req,my_sqr, {
data_size==seq_data_size ;
pkts_type==MCISYS_MCI_RAW_PKT ;
ep_name==seq_ep_name ;
wait_until_data_sent==seq_wait_until_data_sent;
}
)
seq_data_size, seq_ep_name and seq_wait_until_data_sent are fields in my sequence
seq_data_size=100
the req is of type dfx_base_transaction
i do not see that the the req was randomize at all , what could be the reason ?
somethg i notice in the ovm_do_on_macro is that the randomize is after the start_item, could be the reason ?

The start_item() call simply tells the sequencer that the sequence is ready to generate a sequence_item and is used for arbitration by the sequencer. Since start_item() is blocking, the randomization will only occur when the sequencer tells the sequence it is ready to handle the sequence_item. This is commonly referred to as ‘just in time’ randomization.

The recommendation is that you not use the `ovm_do_* macros and you should control the sequence_item generation using the sequence API.

The most likely reason that you aren’t seeing the request being randomized is that there is a constraint conflict which prevents randomization. The `ovm_do_* macros won’t catch this whereas using the API directly will allow you to catch this.