// The default implementation behaves like UVM_SEQ_ARB_FIFO, which returns the// entry at avail_sequences[0]. //externvirtualfunctionintegeruser_priority_arbitration(integeravail_sequences[$]);// Task: execute_item//// Executes the given transaction ~item~ directly on this sequencer. A temporary// parent sequence is automatically created for the ~item~. There is no capability to// retrieve responses. If the driver returns responses, they will accumulate in the// sequencer, eventually causing response overflow unless// <uvm_sequence_base::set_response_queue_error_report_disabled> is called.externvirtualtaskexecute_item(uvm_sequence_itemitem);// Hidden array, keeps track of running default sequencesprotecteduvm_sequence_process_wrapperm_default_sequences[uvm_phase];
// user_priority_arbitration// -------------------------functionintegeruvm_sequencer_base::user_priority_arbitration(integeravail_sequences[$]);returnavail_sequences[0];endfunction// grant_queued_locks// ------------------// Any lock or grab requests that are at the front of the queue will be// granted at the earliest possible time. This function grants any queues// at the front that are not locked outfunctionvoiduvm_sequencer_base::grant_queued_locks();// first remove sequences with dead lock control processbeginuvm_sequence_requestq[$];q=arb_sequence_q.find(item)with(item.request==SEQ_TYPE_LOCK&&item.process_id.statusinside{process::KILLED,process::FINISHED});
// @uvm-ieee 1800.2-2020 auto 15.3.2.3externvirtualfunctionintuser_priority_arbitration(intavail_sequences[$]);// Task -- NODOCS -- execute_item//// Executes the given transaction ~item~ directly on this sequencer. A temporary// parent sequence is automatically created for the ~item~. There is no capability to// retrieve responses. If the driver returns responses, they will accumulate in the// sequencer, eventually causing response overflow unless// <uvm_sequence_base::set_response_queue_error_report_enabled> is called.// @uvm-ieee 1800.2-2020 auto 15.3.2.5externvirtualtaskexecute_item(uvm_sequence_itemitem);// Hidden array, keeps track of running default sequencesprotecteduvm_sequence_process_wrapperm_default_sequences[uvm_phase];
// user_priority_arbitration// -------------------------functionintuvm_sequencer_base::user_priority_arbitration(intavail_sequences[$]);returnavail_sequences[0];endfunction// grant_queued_locks// ------------------// Any lock or grab requests that are at the front of the queue will be// granted at the earliest possible time. This function grants any queues// at the front that are not locked outfunctionvoiduvm_sequencer_base::grant_queued_locks();// remove and report any zombiesbeginuvm_sequence_requestzombies[$];zombies=arb_sequence_q.find(item)with(item.request==SEQ_TYPE_LOCK&&item.process_id.statusinside{process::KILLED,process::FINISHED});