URL
https://opencores.org/ocsvn/lpffir/lpffir/trunk
Subversion Repositories lpffir
[/] [lpffir/] [trunk/] [uvm/] [tools/] [uvm_syoscb/] [docs/] [html/] [cl__syoscb__queue__iterator__std_8svh_source.html] - Rev 4
Compare with Previous | Blame | View Log
<!-- This comment will put IE 6, 7 and 8 in quirks mode --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>SyoSil ApS UVM Scoreboard: cl_syoscb_queue_iterator_std.svh Source File</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javaScript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body onload='searchBox.OnSelectItem(0);'> <!-- Generated by Doxygen 1.6.1 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> <script type="text/javascript"> <!-- function changeDisplayState (e){ var num=this.id.replace(/[^[0-9]/g,''); var button=this.firstChild; var sectionDiv=document.getElementById('dynsection'+num); if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){ sectionDiv.style.display='block'; button.src='open.gif'; }else{ sectionDiv.style.display='none'; button.src='closed.gif'; } } function initDynSections(){ var divs=document.getElementsByTagName('div'); var sectionCounter=1; for(var i=0;i<divs.length-1;i++){ if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){ var header=divs[i]; var section=divs[i+1]; var button=header.firstChild; if (button!='IMG'){ divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild); button=document.createElement('img'); divs[i].insertBefore(button,divs[i].firstChild); } header.style.cursor='pointer'; header.onclick=changeDisplayState; header.id='dynheader'+sectionCounter; button.src='closed.gif'; section.id='dynsection'+sectionCounter; section.style.display='none'; section.style.marginLeft='14px'; sectionCounter++; } } } window.onload = initDynSections; --> </script> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <img id="MSearchSelect" src="search/search.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </div> </li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="dir_562324e130495ce1321e3e3f14c8d761.html">src</a> </div> </div> <div class="contents"> <h1>cl_syoscb_queue_iterator_std.svh</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/// Queue iterator class defining the iterator API used for iterating std queues.</span> <a name="l00002"></a><a class="code" href="classcl__syoscb__queue__iterator__std.html">00002</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classcl__syoscb__queue__iterator__std.html" title="Queue iterator class defining the iterator API used for iterating std queues.">cl_syoscb_queue_iterator_std</a> <span class="keyword">extends</span> <a class="code" href="classcl__syoscb__queue__iterator__base.html" title="Queue iterator base class defining the iterator API used for iterating queues.">cl_syoscb_queue_iterator_base</a>; <a name="l00003"></a>00003 <span class="comment">//-------------------------------------</span> <a name="l00004"></a>00004 <span class="comment">// UVM Macros</span> <a name="l00005"></a>00005 <span class="comment">//-------------------------------------</span> <a name="l00006"></a>00006 `uvm_object_utils(cl_syoscb_queue_iterator_std) <a name="l00007"></a>00007 <a name="l00008"></a>00008 function new(string name = "cl_syoscb_queue_iterator_std"); <a name="l00009"></a>00009 super.new(name); <a name="l00010"></a>00010 endfunction: new <a name="l00011"></a>00011 <a name="l00012"></a>00012 <span class="comment">//-------------------------------------</span> <a name="l00013"></a>00013 <span class="comment">// Iterator API</span> <a name="l00014"></a>00014 <span class="comment">//-------------------------------------</span> <a name="l00015"></a>00015 extern <span class="keyword">virtual</span> function bit <a class="code" href="classcl__syoscb__queue__iterator__base.html#a70293656ff0720b611c94eda8cfe0ce5" title="Iterator API: Moves the iterator to the next item in the queue.">next</a>(); <a name="l00016"></a>00016 extern <span class="keyword">virtual</span> function bit <a class="code" href="classcl__syoscb__queue__iterator__std.html#a1d541f020eec023d6ef261af533c5cfe" title="Iterator API: See cl_syoscb_queue_iterator_base for details">previous</a>(); <a name="l00017"></a>00017 extern <span class="keyword">virtual</span> function bit <a class="code" href="classcl__syoscb__queue__iterator__std.html#a58ca395f3020e094a9b467ceb77f8824" title="Iterator API: See cl_syoscb_queue_iterator_base for details">first</a>(); <a name="l00018"></a>00018 extern <span class="keyword">virtual</span> function bit <a class="code" href="classcl__syoscb__queue__iterator__std.html#af407a396c06a4da3934f64e25641a5a8" title="Iterator API: Moves the iterator to the last item in the queue.">last</a>(); <a name="l00019"></a>00019 extern <span class="keyword">virtual</span> function int unsigned <a class="code" href="classcl__syoscb__queue__iterator__std.html#a7ea9b4bab944e55369f9eb92caf2c468" title="Iterator API: See cl_syoscb_queue_iterator_base for details">get_idx</a>(); <a name="l00020"></a>00020 extern <span class="keyword">virtual</span> function <a class="code" href="classcl__syoscb__item.html" title="The UVM scoreboard item.">cl_syoscb_item</a> <a class="code" href="classcl__syoscb__queue__iterator__std.html#ab3965dd048dceb3907c12bdcb2828890" title="Iterator API: See cl_syoscb_queue_iterator_base for details">get_item</a>(); <a name="l00021"></a>00021 extern <span class="keyword">virtual</span> function bit <a class="code" href="classcl__syoscb__queue__iterator__std.html#a80774408e410cafb645abf56eea28580" title="Iterator API: See cl_syoscb_queue_iterator_base for details">is_done</a>(); <a name="l00022"></a>00022 extern <span class="keyword">virtual</span> function bit <a class="code" href="classcl__syoscb__queue__iterator__std.html#a5602156978b849fdf81d8fed97cc0907" title="Iterator API: See cl_syoscb_queue_iterator_base for details">set_queue</a>(cl_syoscb_queue owner); <a name="l00023"></a>00023 endclass: <a class="code" href="classcl__syoscb__queue__iterator__std.html" title="Queue iterator class defining the iterator API used for iterating std queues.">cl_syoscb_queue_iterator_std</a> <a name="l00024"></a>00024 <span class="comment"></span> <a name="l00025"></a>00025 <span class="comment">/// <b>Iterator API:</b> See cl_syoscb_queue_iterator_base for details</span> <a name="l00026"></a>00026 <span class="comment"></span>function bit <a class="code" href="classcl__syoscb__queue__iterator__std.html" title="Queue iterator class defining the iterator API used for iterating std queues.">cl_syoscb_queue_iterator_std</a>::<a class="code" href="classcl__syoscb__queue__iterator__base.html#a70293656ff0720b611c94eda8cfe0ce5" title="Iterator API: Moves the iterator to the next item in the queue.">next</a>(); <a name="l00027"></a>00027 <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a> qh = this.<a class="code" href="classcl__syoscb__queue__iterator__base.html#a2e37464d479306e3998012cb7c75a9b1" title="Iterator API: Returns releated queue">get_queue</a>(); <a name="l00028"></a>00028 <a name="l00029"></a>00029 if(this.position < qh.get_size()) begin <a name="l00030"></a>00030 this.position++; <a name="l00031"></a>00031 return 1; <a name="l00032"></a>00032 end else begin <a name="l00033"></a>00033 <span class="comment">// Debug print when unable to advance to the next element (When at the end of the queue)</span> <a name="l00034"></a>00034 `uvm_info("OUT_OF_BOUNDS", $sformatf("[%s]: Not possible to increment position of queue %s: at end of queue", <a name="l00035"></a>00035 this.cfg.get_scb_name(), qh.get_name()), UVM_DEBUG); <a name="l00036"></a>00036 return 0; <a name="l00037"></a>00037 end <a name="l00038"></a>00038 endfunction: next <a name="l00039"></a>00039 <span class="comment"></span> <a name="l00040"></a>00040 <span class="comment">/// <b>Iterator API:</b> See cl_syoscb_queue_iterator_base for details</span> <a name="l00041"></a><a class="code" href="classcl__syoscb__queue__iterator__std.html#a1d541f020eec023d6ef261af533c5cfe">00041</a> <span class="comment"></span>function bit cl_syoscb_queue_iterator_std::previous(); <a name="l00042"></a>00042 if(this.position != 0) begin <a name="l00043"></a>00043 this.position--; <a name="l00044"></a>00044 return 1; <a name="l00045"></a>00045 end else begin <a name="l00046"></a>00046 cl_syoscb_queue qh = this.get_queue(); <a name="l00047"></a>00047 <a name="l00048"></a>00048 <span class="comment">// Debug print when unable to advance to the previous element (When at the beginning of the queue)</span> <a name="l00049"></a>00049 `uvm_info("OUT_OF_BOUNDS", $sformatf("[%s]: Not possible to decrement position of queue %s: at end of queue", <a name="l00050"></a>00050 this.cfg.get_scb_name(), qh.get_name()), UVM_DEBUG); <a name="l00051"></a>00051 return 0; <a name="l00052"></a>00052 end <a name="l00053"></a>00053 endfunction: previous <a name="l00054"></a>00054 <span class="comment"></span> <a name="l00055"></a>00055 <span class="comment">/// <b>Iterator API:</b> See cl_syoscb_queue_iterator_base for details</span> <a name="l00056"></a><a class="code" href="classcl__syoscb__queue__iterator__std.html#a58ca395f3020e094a9b467ceb77f8824">00056</a> <span class="comment"></span>function bit cl_syoscb_queue_iterator_std::first(); <a name="l00057"></a>00057 <span class="comment">// Std queue uses an SV queue for its items, first item is always 0</span> <a name="l00058"></a>00058 this.position = 0; <a name="l00059"></a>00059 return 1; <a name="l00060"></a>00060 endfunction: first <a name="l00061"></a>00061 <a name="l00062"></a><a class="code" href="classcl__syoscb__queue__iterator__std.html#af407a396c06a4da3934f64e25641a5a8">00062</a> function bit cl_syoscb_queue_iterator_std::last(); <a name="l00063"></a>00063 cl_syoscb_queue qh = this.get_queue(); <a name="l00064"></a>00064 <a name="l00065"></a>00065 this.position = qh.get_size()-1; <a name="l00066"></a>00066 return 1; <a name="l00067"></a>00067 endfunction: last <a name="l00068"></a>00068 <span class="comment"></span> <a name="l00069"></a>00069 <span class="comment">/// <b>Iterator API:</b> See cl_syoscb_queue_iterator_base for details</span> <a name="l00070"></a><a class="code" href="classcl__syoscb__queue__iterator__std.html#a7ea9b4bab944e55369f9eb92caf2c468">00070</a> <span class="comment"></span>function int unsigned cl_syoscb_queue_iterator_std::get_idx(); <a name="l00071"></a>00071 return this.position; <a name="l00072"></a>00072 endfunction: get_idx <a name="l00073"></a>00073 <span class="comment"></span> <a name="l00074"></a>00074 <span class="comment">/// <b>Iterator API:</b> See cl_syoscb_queue_iterator_base for details</span> <a name="l00075"></a><a class="code" href="classcl__syoscb__queue__iterator__std.html#ab3965dd048dceb3907c12bdcb2828890">00075</a> <span class="comment"></span>function cl_syoscb_item cl_syoscb_queue_iterator_std::get_item(); <a name="l00076"></a>00076 cl_syoscb_queue qh = this.get_queue(); <a name="l00077"></a>00077 <a name="l00078"></a>00078 return qh.get_item(this.position); <a name="l00079"></a>00079 endfunction: get_item <a name="l00080"></a>00080 <span class="comment"></span> <a name="l00081"></a>00081 <span class="comment">/// <b>Iterator API:</b> See cl_syoscb_queue_iterator_base for details</span> <a name="l00082"></a><a class="code" href="classcl__syoscb__queue__iterator__std.html#a80774408e410cafb645abf56eea28580">00082</a> <span class="comment"></span>function bit cl_syoscb_queue_iterator_std::is_done(); <a name="l00083"></a>00083 cl_syoscb_queue qh = this.get_queue(); <a name="l00084"></a>00084 <a name="l00085"></a>00085 if(this.position == qh.get_size()) begin <a name="l00086"></a>00086 return 1; <a name="l00087"></a>00087 end else begin <a name="l00088"></a>00088 return 0; <a name="l00089"></a>00089 end <a name="l00090"></a>00090 endfunction: is_done <a name="l00091"></a>00091 <span class="comment"></span> <a name="l00092"></a>00092 <span class="comment">/// <b>Iterator API:</b> See cl_syoscb_queue_iterator_base for details</span> <a name="l00093"></a><a class="code" href="classcl__syoscb__queue__iterator__std.html#a5602156978b849fdf81d8fed97cc0907">00093</a> <span class="comment"></span>function bit cl_syoscb_queue_iterator_std::set_queue(cl_syoscb_queue owner); <a name="l00094"></a>00094 if(owner == null) begin <a name="l00095"></a>00095 <span class="comment">// An iterator should always have an associated queue</span> <a name="l00096"></a>00096 `uvm_error("QUEUE_ERROR", $sformatf("Unable to associate queue with iterator ")); <a name="l00097"></a>00097 return 0; <a name="l00098"></a>00098 end else begin <a name="l00099"></a>00099 this.owner = owner; <a name="l00100"></a>00100 this.cfg = owner.get_cfg(); <a name="l00101"></a>00101 return 1; <a name="l00102"></a>00102 end <a name="l00103"></a>00103 endfunction: set_queue </pre></div></div> <!--- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <!--*************************************************************************--> <!-- $Id: idv_dox_footer.html 136 2010-05-31 19:13:27Z seanoboyle $ --> <!--*************************************************************************--> <!-- This program is free software: you can redistribute it and/or modify --> <!-- it under the terms of the GNU General Public License as published by --> <!-- the Free Software Foundation, either version 3 of the License, or --> <!-- (at your option) any later version. --> <!-- --> <!-- This program is distributed in the hope that it will be useful, --> <!-- but WITHOUT ANY WARRANTY; without even the implied warranty of --> <!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --> <!-- GNU General Public License for more details. --> <!-- --> <!-- You should have received a copy of the GNU General Public License --> <!-- along with this program. If not, see http://www.gnu.org/licenses/. --> <!-- --> <!--*************************************************************************--> <!-- Title: IDV Doxygen Footer File --> <!-- Description: This file is a doxygen footer with the IDV logo and a --> <!-- and a reference to the GNU FDL License. --> <!-- --> <!-- Original Author: Sean O'Boyle --> <!-- Contact: seanoboyle@intelligentdv.com --> <!-- Company: Intelligent Design Verification --> <!-- Company URL: http://intelligentdv.com --> <!-- --> <!-- Download the most recent version here: --> <!-- http://intelligentdv.com/downloads --> <!-- --> <!-- File Bugs Here: http://bugs.intelligentdv.com --> <!-- Project: DoxygenFilterSV --> <!-- --> <!-- File: idv_dox_header.xml --> <!-- $LastChangedBy: seanoboyle $ --> <!-- $LastChangedDate: 2010-05-31 12:13:27 -0700 (Mon, 31 May 2010) $ --> <!-- $LastChangedRevision: 136 $ --> <!-- --> <!--*************************************************************************--> <br> <table border="1" width = "100%"> <tr> <td width = "20%"> <img src="syosil.jpg"> </td> <td width = "60%"> <address style="text-align: center;"> Project: SyoSil ApS UVM Scoreboard, Revision: 1.0.2.5<br> <br> Copyright 2014-2015 SyoSil ApS<br> All Rights Reserved Worldwide<br> <br> 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<br> <br> <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a><br> <br> 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. </address> </td> <td width = "20%"> <address style="text-align: right;"><small> <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a><br> <a href="http://www.doxygen.org/index.html">Doxygen</a> Version: 1.6.1<br> <a href="http://www.intelligentdv.com/index.html">IDV SV Filter</a> Version: 2.6.2<br> Sat Nov 28 05:41:54 2015</small></address> </td> </tr> </table> <address style="text-align: left;"><small> Find a documentation bug? Report bugs to: <a href="http://bugs.intelligentdv.com/">bugs.intelligentdv.com</a> Project: DoxygenFilterSV </small></address> </body> </html>