// will produce a run-time error.//------------------------------------------------------------------------------classuvm_sequence_baseextendsuvm_sequence_item;protecteduvm_sequence_statem_sequence_state;intm_next_transaction_id=1;localintm_priority=-1;uvm_recorderm_tr_recorder;intm_wait_for_grant_semaphore;// Each sequencer will assign a sequence id. When a sequence is talking to multiple// sequencers, each sequence_id is managed separatelyprotectedintm_sqr_seq_ids[int];protectedbitchildren_array[uvm_sequence_base];protecteduvm_sequence_itemresponse_queue[$];protectedintresponse_queue_depth=8;
////------------------------------------------------------------------------------classuvm_sequencer_baseextendsuvm_component;typedefenum{SEQ_TYPE_REQ,SEQ_TYPE_LOCK,SEQ_TYPE_GRAB}seq_req_t;// FIXME SEQ_TYPE_GRAB is unused// queue of sequences waiting for arbitrationprotecteduvm_sequence_requestarb_sequence_q[$];protectedbitarb_completed[int];protecteduvm_sequence_baselock_list[$];protecteduvm_sequence_basereg_sequences[int];protectedintm_sequencer_id;protectedintm_lock_arb_size;// used for waiting processesprotectedintm_arb_size;// used for waiting processes
//------------------------------------------------------------------------------// @uvm-ieee 1800.2-2020 auto 14.2.1virtualclassuvm_sequence_baseextendsuvm_sequence_item;`uvm_object_abstract_utils(uvm_sequence_base)// This semaphore is provided to ensure that a sequence is only being// run from a single thread at a time.protectedsemaphorem_sequence_state_mutex;protecteduvm_sequence_statem_sequence_state;intm_next_transaction_id=1;localintm_priority=-1;uvm_recorderm_tr_recorder;intm_wait_for_grant_semaphore;// Each sequencer will assign a sequence id. When a sequence is talking to multiple// sequencers, each sequence_id is managed separatelyprotectedintm_sqr_seq_ids[int];
// were defined as abstract, meaning they can't be arbitrarily instanced.// classuvm_compat_proxy_sequence#(typeREQ=uvm_sequence_item,typeRSP=REQ)extendsuvm_sequence#(REQ,RSP);`uvm_object_param_utils(uvm_compat_proxy_sequence#(REQ,RSP))functionnew(stringname="unnamed-uvm_compat_proxy_sequence");super.new(name);endfunction:newendclass:uvm_compat_proxy_sequence