URL
https://opencores.org/ocsvn/uart2bus_testbench/uart2bus_testbench/trunk
Subversion Repositories uart2bus_testbench
[/] [uart2bus_testbench/] [trunk/] [tb/] [uvm_src/] [base/] [uvm_queue.svh] - Rev 16
Compare with Previous | Blame | View Log
////------------------------------------------------------------------------------// Copyright 2007-2010 Mentor Graphics Corporation// Copyright 2007-2010 Cadence Design Systems, Inc.// Copyright 2010 Synopsys, Inc.// All Rights Reserved Worldwide//// Licensed under the Apache License, Version 2.0 (the// "License"); you may not use this file except in// compliance with the License. You may obtain a copy of// the License at//// http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in// writing, software distributed under the License is// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR// CONDITIONS OF ANY KIND, either express or implied. See// the License for the specific language governing// permissions and limitations under the License.//------------------------------------------------------------------------------`ifndef UVM_QUEUE_SVH`define UVM_QUEUE_SVH//------------------------------------------------------------------------------//// CLASS: uvm_queue #(T)////------------------------------------------------------------------------------// Implements a class-based dynamic queue. Allows queues to be allocated on// demand, and passed and stored by reference.//------------------------------------------------------------------------------class uvm_queue #(type T=int) extends uvm_object;const static string type_name = "uvm_queue";typedef uvm_queue #(T) this_type;static local this_type m_global_queue;protected T queue[$];// Function: new//// Creates a new queue with the given ~name~.function new (string name="");super.new(name);endfunction// Function: get_global_queue//// Returns the singleton global queue for the item type, T.//// This allows items to be shared amongst components throughout the// verification environment.static function this_type get_global_queue ();if (m_global_queue==null)m_global_queue = new("global_queue");return m_global_queue;endfunction// Function: get_global//// Returns the specified item instance from the global item queue.static function T get_global (int index);this_type gqueue;gqueue = get_global_queue();return gqueue.get(index);endfunction// Function: get//// Returns the item at the given ~index~.//// If no item exists by that key, a new item is created with that key// and returned.virtual function T get (int index);T default_value;if (index >= size() || index < 0) beginuvm_report_warning("QUEUEGET",$sformatf("get: given index out of range for queue of size %0d. Ignoring get request",size()));return default_value;endreturn queue[index];endfunction// Function: size//// Returns the number of items stored in the queue.virtual function int size ();return queue.size();endfunction// Function: insert//// Inserts the item at the given ~index~ in the queue.virtual function void insert (int index, T item);if (index >= size() || index < 0) beginuvm_report_warning("QUEUEINS",$sformatf("insert: given index out of range for queue of size %0d. Ignoring insert request",size()));return;endqueue.insert(index,item);endfunction// Function: delete//// Removes the item at the given ~index~ from the queue; if ~index~ is// not provided, the entire contents of the queue are deleted.virtual function void delete (int index=-1);if (index >= size() || index < -1) beginuvm_report_warning("QUEUEDEL",$sformatf("delete: given index out of range for queue of size %0d. Ignoring delete request",size()));return;endif (index == -1)queue.delete();elsequeue.delete(index);endfunction// Function: pop_front//// Returns the first element in the queue (index=0),// or ~null~ if the queue is empty.virtual function T pop_front();return queue.pop_front();endfunction// Function: pop_back//// Returns the last element in the queue (index=size()-1),// or ~null~ if the queue is empty.virtual function T pop_back();return queue.pop_back();endfunction// Function: push_front//// Inserts the given ~item~ at the front of the queue.virtual function void push_front(T item);queue.push_front(item);endfunction// Function: push_back//// Inserts the given ~item~ at the back of the queue.virtual function void push_back(T item);queue.push_back(item);endfunctionvirtual function uvm_object create (string name="");this_type v;v=new(name);return v;endfunctionvirtual function string get_type_name ();return type_name;endfunctionvirtual function void do_copy (uvm_object rhs);this_type p;super.do_copy(rhs);if (rhs == null || !$cast(p, rhs))return;queue = p.queue;endfunctionvirtual function string convert2string();return $sformatf("%p",queue);endfunctionendclass`endif // UVM_QUEUE_SVH
