Sequencer arbitration with lock

Hi…i am starting 3 sequences in fork-join as shown below :

task body();
sqr.set_arbitration(SEQ_ARB_STRICT_FIFO);
wr_seq=wr_sequence::type_id::create(“wr_seq”);
rd_seq=rd_sequence::type_id::create(“rd_seq”);
wr1_seq=wr1_sequence::type_id::create(“wr1_seq”);
fork
wr_seq.start(sqr,this,500);//not using lock/grab
rd_seq.start(sqr,this,300);//not using lock/grab
wr1_seq.start(sqr,this,200);//using lock
join
endtask

Sequencer is picking wr1_seq first then wr_seq & then rd_seq. I studied that lock is granted using normal arbitration mechanism. So it must be granted after all high priority sequences completed as it has lowest priority. So why it is chosen first by sequencer ?

In reply to shekher201778:

Are you talking about the ordering of the sequence execution, or the sequence_items sent to the driver? Arbitration is only with items sent to the driver.

In reply to dave_59:

Hi Dave…yes i am talking about sequence_item(s) sent to driver. Here wr1_seq sequence & other 2 are starting in parallel on same sequencer. Sequencer will choose only one sequence_item at a time from its fifo using arbitration mechanism. I studied that sequence using lock will be given exclusive access using normal arbitration mechanism. But when it get access, sequencer will not pick sequence_item from any other sequence until all sequence_items from lock are sent to driver. Here, although wr1_seq is using lock, it has lowest priority. So sequencer using SEQ_ARB_STRICT_FIFO arbitration must first sent items from wr_seq then from rd_seq & at last from wr1_seq. In case if 2 sequences have same priority, then it must choose items in strict fifo order. Correct me if i am wrong.

Thanks