OpenCores
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&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;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&nbsp;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 = &quot;cl_syoscb_queue_iterator_std&quot;);
<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">/// &lt;b&gt;Iterator API:&lt;/b&gt; 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 &lt; 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(&quot;OUT_OF_BOUNDS&quot;, $sformatf(&quot;[%s]: Not possible to increment position of queue %s: at end of queue&quot;,
<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">/// &lt;b&gt;Iterator API:&lt;/b&gt; 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(&quot;OUT_OF_BOUNDS&quot;, $sformatf(&quot;[%s]: Not possible to decrement position of queue %s: at end of queue&quot;,
<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">/// &lt;b&gt;Iterator API:&lt;/b&gt; 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">/// &lt;b&gt;Iterator API:&lt;/b&gt; 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">/// &lt;b&gt;Iterator API:&lt;/b&gt; 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">/// &lt;b&gt;Iterator API:&lt;/b&gt; 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">/// &lt;b&gt;Iterator API:&lt;/b&gt; 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(&quot;QUEUE_ERROR&quot;, $sformatf(&quot;Unable to associate queue with iterator &quot;));
<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">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</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>
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.