I have 4 slave sequences where the body() is comprised as shown
virtual task body()
virtual function void write(trans trns);
trans local_trans = trans::type_id::create("ltrans",this);
while(local_trans_q.size() > 0) begin
l2_trans = local_trans_q.pop_front();
local_rsp_item.req = l2_trans.req;
Each of these 4 sequences are running in parallel on different sequencers and drive transactions on 4 identical interfaces. If I need to add a condition that if these independent interfaces receive req's on the same clk, then the sequences need to execute in priority order of seq1,seq2,seq3,seq4. If there are no concurrent transactions each sequence can execute normally as above. What is the best implementation to establish this arbitration scheme? Currently all these sequences are started in parallel in the uvm_test in parallel using a fork.
How should I include the arbitration order within this seq body?