URL
https://opencores.org/ocsvn/lpffir/lpffir/trunk
Subversion Repositories lpffir
[/] [lpffir/] [trunk/] [uvm/] [tools/] [uvm_syoscb/] [src/] [cl_syoscb_queue_iterator_base.svh] - Rev 8
Go to most recent revision | Compare with Previous | Blame | View Log
//----------------------------------------------------------------------// Copyright 2014-2015 SyoSil ApS// 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.//----------------------------------------------------------------------/// Queue iterator base class defining the iterator API used for iterating queues.class cl_syoscb_queue_iterator_base extends uvm_object;//-------------------------------------// Non randomizable variables//-------------------------------------/// The owner of this iteratorprotected cl_syoscb_queue owner;/// Current position in the queueprotected int unsigned position = 0;// Local handle to the SCB sfgprotected cl_syoscb_cfg cfg;//-------------------------------------// UVM Macros//-------------------------------------`uvm_object_utils_begin(cl_syoscb_queue_iterator_base)`uvm_field_object(owner, UVM_DEFAULT)`uvm_field_int(position, UVM_DEFAULT)`uvm_field_object(cfg, UVM_DEFAULT)`uvm_object_utils_endfunction new(string name = "cl_syoscb_queue_iterator_base");super.new(name);endfunction: new//-------------------------------------// Iterator API//-------------------------------------extern virtual function bit next(); // Base 'next' function. Moves iterator to next item in queueextern virtual function bit previous(); // Base 'previous' function. Moves iterator to previous item in queueextern virtual function bit first(); // Base 'first' function. Moves iterator to first item in queueextern virtual function bit last(); // Base 'last' function. Moves iterator to last item in queueextern virtual function int unsigned get_idx(); // Base 'get_idx' function. Returns current iterator positionextern virtual function cl_syoscb_item get_item(); // Base 'get_item' function. Returns item at current iterator positionextern virtual function bit is_done(); // Base 'is_done' function. Returns 1 if iterator is at the end of the queue, otherwise 0extern protected function cl_syoscb_queue get_queue(); // Returns the queue that this iterator is associated withextern virtual function bit set_queue(cl_syoscb_queue owner); // Sets the queue that this iterator is associated withendclass: cl_syoscb_queue_iterator_base/// <b>Iterator API:</b> Moves the iterator to the next item in the queue./// It shall return 1'b0 if there is no next item, e.g. when it is either empty or/// the iterator has reached the end of the queue.function bit cl_syoscb_queue_iterator_base::next();`uvm_fatal("IMPL_ERROR", $sformatf("cl_syoscb_queue_iterator_base::next() *MUST* be overwritten"));return(1'b0);endfunction/// <b>Iterator API:</b> Moves the iterator to the previous item in the queue./// It shall return 1'b0 if there is no previous item, e.g. when it is either empty or/// the iterator has reached the very beginning of the queue.function bit cl_syoscb_queue_iterator_base::previous();`uvm_fatal("IMPL_ERROR", $sformatf("cl_syoscb_queue_iterator_base::previous() *MUST* be overwritten"));return(1'b0);endfunction/// <b>Iterator API:</b> Moves the iterator to the first item in the queue./// It shall return 1'b0 if there is no first item (Queue is empty).function bit cl_syoscb_queue_iterator_base::first();`uvm_fatal("IMPL_ERROR", $sformatf("cl_syoscb_queue_iterator_base::first() *MUST* be overwritten"));return(1'b0);endfunction/// <b>Iterator API:</b> Moves the iterator to the last item in the queue./// It shall return 1'b0 if there is no last item (Queue is empty).function bit cl_syoscb_queue_iterator_base::last();`uvm_fatal("IMPL_ERROR", $sformatf("cl_syoscb_queue_iterator_base::last() *MUST* be overwritten"));return(1'b0);endfunction/// <b>Iterator API:</b> Returns the current indexfunction int unsigned cl_syoscb_queue_iterator_base::get_idx();`uvm_fatal("IMPL_ERROR", $sformatf("cl_syoscb_queue_iterator_base::get_idx() *MUST* be overwritten"));return(0);endfunction/// <b>Iterator API:</b> Returns the current cl_syoscb_item object at the current indexfunction cl_syoscb_item cl_syoscb_queue_iterator_base::get_item();`uvm_fatal("IMPL_ERROR", $sformatf("cl_syoscb_queue_iterator_base::get_item() *MUST* be overwritten"));return(null);endfunction/// <b>Iterator API:</b> Returns 1'b0 as long as the iterator has not reached the end./// When the iterator has reached the end then it returns 1'b1.function bit cl_syoscb_queue_iterator_base::is_done();`uvm_fatal("IMPL_ERROR", $sformatf("cl_syoscb_queue_iterator_base::is_done() *MUST* be overwritten"));return(1'b0);endfunction/// <b>Iterator API:</b> Returns releated queuefunction cl_syoscb_queue cl_syoscb_queue_iterator_base::get_queue();if(this.owner == null) begin// An iterator should always have an associated queue`uvm_error("QUEUE_ERROR", $sformatf("Unable to find queue associated with iterator %s", this.get_name()));return null;end else beginreturn this.owner;endendfunction: get_queue/// <b>Iterator API:</b> Sets releated queuefunction bit cl_syoscb_queue_iterator_base::set_queue(cl_syoscb_queue owner);`uvm_fatal("IMPL_ERROR", $sformatf("cl_syoscb_queue_iterator_base::set_queue() *MUST* be overwritten"));return(1'b0);endfunction
Go to most recent revision | Compare with Previous | Blame | View Log
