OpenCores
URL https://opencores.org/ocsvn/lpffir/lpffir/trunk

Subversion Repositories lpffir

[/] [lpffir/] [trunk/] [uvm/] [tools/] [uvm_syoscb/] [docs/] [html/] [cl__syoscb__queue_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.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.svh</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/// Class which base concet of a queue. All queues must extend this class</span>
<a name="l00002"></a>00002 <span class="comment"></span><span class="comment">/// and implement the queue API.</span>
<a name="l00003"></a><a class="code" href="classcl__syoscb__queue.html">00003</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a> <span class="keyword">extends</span> uvm_component;
<a name="l00004"></a>00004   <span class="comment">//-------------------------------------</span>
<a name="l00005"></a>00005   <span class="comment">// Non randomizable variables</span>
<a name="l00006"></a>00006   <span class="comment">//-------------------------------------</span><span class="comment"></span>
<a name="l00007"></a>00007 <span class="comment">  /// Handle to the configuration</span>
<a name="l00008"></a><a class="code" href="classcl__syoscb__queue.html#ab92efb1fb67ec7cc8dfe928a474a3e2b">00008</a> <span class="comment"></span>  <span class="keyword">protected</span> <a class="code" href="classcl__syoscb__cfg.html" title="Configuration class for the SyoSil UVM scoreboard.">cl_syoscb_cfg</a> <a class="code" href="classcl__syoscb__queue.html#ab92efb1fb67ec7cc8dfe928a474a3e2b" title="Handle to the configuration.">cfg</a>;
<a name="l00009"></a>00009 <span class="comment"></span>
<a name="l00010"></a>00010 <span class="comment">  /// List of iterators registered with queue</span>
<a name="l00011"></a><a class="code" href="classcl__syoscb__queue.html#af73fa6ac19ef7a629ad5f5eddf918780">00011</a> <span class="comment"></span>  <span class="keyword">protected</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 class="code" href="classcl__syoscb__queue.html#af73fa6ac19ef7a629ad5f5eddf918780" title="List of iterators registered with queue.">iterators</a>[<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="l00012"></a>00012 <span class="comment"></span>
<a name="l00013"></a>00013 <span class="comment">  /// Current number of iterators</span>
<a name="l00014"></a><a class="code" href="classcl__syoscb__queue.html#a3b9f8500d7d93d01eda717aac6ef4c28">00014</a> <span class="comment"></span>  <span class="keyword">protected</span> int unsigned <a class="code" href="classcl__syoscb__queue.html#a3b9f8500d7d93d01eda717aac6ef4c28" title="Current number of iterators.">iter_idx</a>;
<a name="l00015"></a>00015 <span class="comment"></span>
<a name="l00016"></a>00016 <span class="comment">  /// Semaphore guarding exclusive access to the queue when</span>
<a name="l00017"></a>00017 <span class="comment">  /// multiple iterators are in play</span>
<a name="l00018"></a><a class="code" href="classcl__syoscb__queue.html#a7ce6c5e6c1b4fcd09f90ec2699cc594c">00018</a> <span class="comment"></span>  <span class="keyword">protected</span> semaphore <a class="code" href="classcl__syoscb__queue.html#a7ce6c5e6c1b4fcd09f90ec2699cc594c" title="Semaphore guarding exclusive access to the queue when multiple iterators are in play...">iter_sem</a>;
<a name="l00019"></a>00019 
<a name="l00020"></a>00020   <span class="comment">// Counter for counting the number of inserts</span>
<a name="l00021"></a>00021   <span class="keyword">protected</span> int unsigned cnt_add_item = 0;
<a name="l00022"></a>00022   
<a name="l00023"></a>00023   <span class="comment">//-------------------------------------</span>
<a name="l00024"></a>00024   <span class="comment">// UVM Macros</span>
<a name="l00025"></a>00025   <span class="comment">//-------------------------------------</span>
<a name="l00026"></a>00026   `uvm_component_utils_begin(cl_syoscb_queue)
<a name="l00027"></a>00027     `uvm_field_object(cfg,           UVM_DEFAULT)
<a name="l00028"></a>00028     <span class="comment">// TBD::JSA: Lacks a user defined implementation of field macro</span>
<a name="l00029"></a>00029     <span class="comment">//           for completeness since: `uvm_field_aa_object-object does not exist</span>
<a name="l00030"></a>00030     `uvm_field_int(iter_idx,         UVM_DEFAULT)
<a name="l00031"></a>00031     `uvm_field_int(cnt_add_item,     UVM_DEFAULT)
<a name="l00032"></a>00032   `uvm_component_utils_end
<a name="l00033"></a>00033 
<a name="l00034"></a>00034   <span class="comment">//-------------------------------------</span>
<a name="l00035"></a>00035   <span class="comment">// Constructor</span>
<a name="l00036"></a>00036   <span class="comment">//-------------------------------------</span>
<a name="l00037"></a>00037   extern function new(string name, uvm_component parent);
<a name="l00038"></a>00038 
<a name="l00039"></a>00039   <span class="comment">//-------------------------------------</span>
<a name="l00040"></a>00040   <span class="comment">// UVM Phase methods</span>
<a name="l00041"></a>00041   <span class="comment">//-------------------------------------</span>
<a name="l00042"></a>00042   extern function void <a class="code" href="classcl__syoscb__queue.html#a14e4b7b0e2931b2b1e7f54e7cde32152" title="Gets the global scoreboard configuration.">build_phase</a>(uvm_phase phase);
<a name="l00043"></a>00043   extern function void <a class="code" href="classcl__syoscb__queue.html#a28b1b880efb1f93eeb48890914685e43" title="Checks if the queue is empty. If not then a UVM error is issued.">check_phase</a>(uvm_phase phase);
<a name="l00044"></a>00044   extern function void <a class="code" href="classcl__syoscb__queue.html#aac9a0b845a8b1947365fcddc7f37206a" title="Prints queue stats.">report_phase</a>(uvm_phase phase);
<a name="l00045"></a>00045 
<a name="l00046"></a>00046   <span class="comment">//-------------------------------------</span>
<a name="l00047"></a>00047   <span class="comment">// Queue API</span>
<a name="l00048"></a>00048   <span class="comment">//-------------------------------------</span>
<a name="l00049"></a>00049   <span class="comment">// Basic queue functions</span>
<a name="l00050"></a>00050   extern <span class="keyword">virtual</span> function bit <a class="code" href="classcl__syoscb__queue.html#ada66fbc0eb1ef86b417fcdeaa5e9b9e0" title="Queue API: Adds an uvm_sequence_item.">add_item</a>(string producer, uvm_sequence_item item);
<a name="l00051"></a>00051   extern <span class="keyword">virtual</span> function bit <a class="code" href="classcl__syoscb__queue.html#a0ff5e60a18767a97056e02baf47b26b8" title="Queue API: Deletes the item at index idx from the queue">delete_item</a>(int unsigned idx);
<a name="l00052"></a>00052   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.html#a5610529db04d89e3ad4173e9960b04fa" title="Queue API: Gets the item at index idx from the queue">get_item</a>(int unsigned idx);
<a name="l00053"></a>00053   extern <span class="keyword">virtual</span> function int unsigned <a class="code" href="classcl__syoscb__queue.html#aa5f825cc085c487e603257e10bcc3f86" title="Queue API: Returns the current size of the queue">get_size</a>();
<a name="l00054"></a>00054   extern <span class="keyword">virtual</span> function bit <a class="code" href="classcl__syoscb__queue.html#a5b02ba85e905f5119ee18239f0e471d3" title="Queue API: Returns whether or not the queue is empty.">empty</a>();
<a name="l00055"></a>00055   extern <span class="keyword">virtual</span> function bit <a class="code" href="classcl__syoscb__queue.html#adbb41d1162a0f3dbb84c657d2274c0cb" title="Queue API: Inserts a uvm_sequence_item at index idx.">insert_item</a>(string producer, uvm_sequence_item item, int unsigned idx);
<a name="l00056"></a>00056 
<a name="l00057"></a>00057   <span class="comment">// Iterator support functions</span>
<a name="l00058"></a>00058   extern <span class="keyword">virtual</span> function <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 class="code" href="classcl__syoscb__queue.html#a443750e1bf6c4a231438e821466f1d7e" title="Queue API: Creates an iterator for this queue.">create_iterator</a>();
<a name="l00059"></a>00059   extern <span class="keyword">virtual</span> function bit <a class="code" href="classcl__syoscb__queue.html#a21e2463b97abce478edd3aa94d17372e" title="Queue API: Deletes a given iterator for this queue.">delete_iterator</a>(cl_syoscb_queue_iterator_base iterator);
<a name="l00060"></a>00060   
<a name="l00061"></a>00061   <span class="comment">// Locator support functions</span>
<a name="l00062"></a>00062   <span class="comment">// TBD::JSA: Locator not implemented yet</span>
<a name="l00063"></a>00063 
<a name="l00064"></a>00064   <span class="comment">// Misc support functions  </span>
<a name="l00065"></a>00065   extern function <a class="code" href="classcl__syoscb__cfg.html" title="Configuration class for the SyoSil UVM scoreboard.">cl_syoscb_cfg</a> get_cfg();
<a name="l00066"></a>00066 endclass: <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>
<a name="l00067"></a>00067 
<a name="l00068"></a>00068 function <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>::new(string name, uvm_component parent);
<a name="l00069"></a>00069   super.new(name, parent);
<a name="l00070"></a>00070 
<a name="l00071"></a>00071   this.<a class="code" href="classcl__syoscb__queue.html#a7ce6c5e6c1b4fcd09f90ec2699cc594c" title="Semaphore guarding exclusive access to the queue when multiple iterators are in play...">iter_sem</a> = new(1);
<a name="l00072"></a>00072   this.<a class="code" href="classcl__syoscb__queue.html#a3b9f8500d7d93d01eda717aac6ef4c28" title="Current number of iterators.">iter_idx</a> = 0;
<a name="l00073"></a>00073 endfunction: new
<a name="l00074"></a>00074 <span class="comment"></span>
<a name="l00075"></a>00075 <span class="comment">/// Gets the global scoreboard configuration</span>
<a name="l00076"></a><a class="code" href="classcl__syoscb__queue.html#a14e4b7b0e2931b2b1e7f54e7cde32152">00076</a> <span class="comment"></span>function void <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>::<a class="code" href="classcl__syoscb__queue.html#a14e4b7b0e2931b2b1e7f54e7cde32152" title="Gets the global scoreboard configuration.">build_phase</a>(uvm_phase phase);
<a name="l00077"></a>00077   if (!uvm_config_db #(cl_syoscb_cfg)::get(this, &quot;&quot;, &quot;cfg&quot;, this.cfg)) begin
<a name="l00078"></a>00078     `uvm_fatal(&quot;CFG_ERROR&quot;, $sformatf(&quot;[%s]: Configuration object not passed.&quot;, this.cfg.get_scb_name()))
<a name="l00079"></a>00079   end
<a name="l00080"></a>00080 endfunction
<a name="l00081"></a>00081 <span class="comment"></span>
<a name="l00082"></a>00082 <span class="comment">/// Checks if the queue is empty. If not then a UVM error is issued.</span>
<a name="l00083"></a><a class="code" href="classcl__syoscb__queue.html#a28b1b880efb1f93eeb48890914685e43">00083</a> <span class="comment"></span>function void <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>::<a class="code" href="classcl__syoscb__queue.html#a28b1b880efb1f93eeb48890914685e43" title="Checks if the queue is empty. If not then a UVM error is issued.">check_phase</a>(uvm_phase phase);
<a name="l00084"></a>00084   <span class="comment">// Check that this queue is empty. If not then issue an error</span>
<a name="l00085"></a>00085   if(!this.empty()) begin
<a name="l00086"></a>00086     <span class="comment">// *NOTE*: Using this.get_name() is sufficient since the component</span>
<a name="l00087"></a>00087     <span class="comment">//         instance name is the queue name by definition</span>
<a name="l00088"></a>00088     `uvm_error(&quot;QUEUE_ERROR&quot;, $sformatf(&quot;[%s]: Queue %s not empty, entries: %0d&quot;, this.cfg.get_scb_name(), this.get_name(), this.get_size()));
<a name="l00089"></a>00089   end
<a name="l00090"></a>00090 endfunction
<a name="l00091"></a>00091 <span class="comment"></span>
<a name="l00092"></a>00092 <span class="comment">/// Prints queue stats</span>
<a name="l00093"></a><a class="code" href="classcl__syoscb__queue.html#aac9a0b845a8b1947365fcddc7f37206a">00093</a> <span class="comment"></span>function void <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>::<a class="code" href="classcl__syoscb__queue.html#aac9a0b845a8b1947365fcddc7f37206a" title="Prints queue stats.">report_phase</a>(uvm_phase phase);
<a name="l00094"></a>00094   string stats;
<a name="l00095"></a>00095   
<a name="l00096"></a>00096   stats = $sformatf(&quot;Inserts: %0d, Macthed: %0d, Orphans: %0d&quot;, this.cnt_add_item, this.cnt_add_item-this.get_size(), this.get_size());
<a name="l00097"></a>00097   
<a name="l00098"></a>00098   <span class="comment">// *NOTE*: Using this.get_name() is sufficient since the component</span>
<a name="l00099"></a>00099   <span class="comment">//         instance name is the queue name by definition</span>
<a name="l00100"></a>00100   `uvm_info(&quot;QUEUE&quot;, $sformatf(&quot;[%s]: Statistics for queue: %s:\n%s&quot;, this.cfg.get_scb_name(), this.get_name(), stats), UVM_NONE)
<a name="l00101"></a>00101 endfunction
<a name="l00102"></a>00102 <span class="comment"></span>
<a name="l00103"></a>00103 <span class="comment">/// &lt;b&gt;Queue API:&lt;/b&gt; Adds an uvm_sequence_item. The implementation must wrap this in a</span>
<a name="l00104"></a>00104 <span class="comment">/// cl_syoscb_item object before the item is inserted</span>
<a name="l00105"></a><a class="code" href="classcl__syoscb__queue.html#ada66fbc0eb1ef86b417fcdeaa5e9b9e0">00105</a> <span class="comment"></span>function bit <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>::<a class="code" href="classcl__syoscb__queue.html#ada66fbc0eb1ef86b417fcdeaa5e9b9e0" title="Queue API: Adds an uvm_sequence_item.">add_item</a>(string producer, uvm_sequence_item item);
<a name="l00106"></a>00106   `uvm_fatal(&quot;IMPL_ERROR&quot;, $sformatf(&quot;[%s]: cl_syoscb_queue::add_item() *MUST* be overwritten&quot;, this.cfg.get_scb_name()));
<a name="l00107"></a>00107   return(1&apos;b0);
<a name="l00108"></a>00108 endfunction
<a name="l00109"></a>00109 <span class="comment"></span>
<a name="l00110"></a>00110 <span class="comment">/// &lt;b&gt;Queue API:&lt;/b&gt; Deletes the item at index idx from the queue</span>
<a name="l00111"></a><a class="code" href="classcl__syoscb__queue.html#a0ff5e60a18767a97056e02baf47b26b8">00111</a> <span class="comment"></span>function bit <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>::<a class="code" href="classcl__syoscb__queue.html#a0ff5e60a18767a97056e02baf47b26b8" title="Queue API: Deletes the item at index idx from the queue">delete_item</a>(int unsigned idx);
<a name="l00112"></a>00112   `uvm_fatal(&quot;IMPL_ERROR&quot;, $sformatf(&quot;[%s]: cl_syoscb_queue::delete_item() *MUST* be overwritten&quot;, this.cfg.get_scb_name()));
<a name="l00113"></a>00113   return(1&apos;b0);
<a name="l00114"></a>00114 endfunction
<a name="l00115"></a>00115 <span class="comment"></span>
<a name="l00116"></a>00116 <span class="comment">/// &lt;b&gt;Queue API:&lt;/b&gt; Gets the item at index idx from the queue</span>
<a name="l00117"></a><a class="code" href="classcl__syoscb__queue.html#a5610529db04d89e3ad4173e9960b04fa">00117</a> <span class="comment"></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.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>::<a class="code" href="classcl__syoscb__queue.html#a5610529db04d89e3ad4173e9960b04fa" title="Queue API: Gets the item at index idx from the queue">get_item</a>(int unsigned idx);
<a name="l00118"></a>00118   `uvm_fatal(&quot;IMPL_ERROR&quot;, $sformatf(&quot;[%s]: cl_syoscb_queue::get_item() *MUST* be overwritten&quot;, this.cfg.get_scb_name()));
<a name="l00119"></a>00119   return(null);
<a name="l00120"></a>00120 endfunction
<a name="l00121"></a>00121 <span class="comment"></span>
<a name="l00122"></a>00122 <span class="comment">/// &lt;b&gt;Queue API:&lt;/b&gt; Returns the current size of the queue</span>
<a name="l00123"></a><a class="code" href="classcl__syoscb__queue.html#aa5f825cc085c487e603257e10bcc3f86">00123</a> <span class="comment"></span>function int unsigned <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>::<a class="code" href="classcl__syoscb__queue.html#aa5f825cc085c487e603257e10bcc3f86" title="Queue API: Returns the current size of the queue">get_size</a>();
<a name="l00124"></a>00124   `uvm_fatal(&quot;IMPL_ERROR&quot;, $sformatf(&quot;[%s]: cl_syoscb_queue::get_size() *MUST* be overwritten&quot;, this.cfg.get_scb_name()));
<a name="l00125"></a>00125   return(0);
<a name="l00126"></a>00126 endfunction
<a name="l00127"></a>00127 <span class="comment"></span>
<a name="l00128"></a>00128 <span class="comment">/// &lt;b&gt;Queue API:&lt;/b&gt; Returns whether or not the queue is empty. 1&apos;b0 means thet te queue</span>
<a name="l00129"></a>00129 <span class="comment">/// is not empty. 1&apos;b1 means that the queue is empty</span>
<a name="l00130"></a><a class="code" href="classcl__syoscb__queue.html#a5b02ba85e905f5119ee18239f0e471d3">00130</a> <span class="comment"></span>function bit <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>::<a class="code" href="classcl__syoscb__queue.html#a5b02ba85e905f5119ee18239f0e471d3" title="Queue API: Returns whether or not the queue is empty.">empty</a>();
<a name="l00131"></a>00131   `uvm_fatal(&quot;IMPL_ERROR&quot;, $sformatf(&quot;[%s]: cl_syoscb_queue::empty() *MUST* be overwritten&quot;, this.cfg.get_scb_name()));
<a name="l00132"></a>00132   return(0);
<a name="l00133"></a>00133 endfunction
<a name="l00134"></a>00134 <span class="comment"></span>
<a name="l00135"></a>00135 <span class="comment">/// &lt;b&gt;Queue API:&lt;/b&gt; Inserts a uvm_sequence_item at index idx. The implementation must wrap</span>
<a name="l00136"></a>00136 <span class="comment">/// the uvm_sequence_item in a cl_syoscb_item before it is inserted.</span>
<a name="l00137"></a><a class="code" href="classcl__syoscb__queue.html#adbb41d1162a0f3dbb84c657d2274c0cb">00137</a> <span class="comment"></span>function bit <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>::<a class="code" href="classcl__syoscb__queue.html#adbb41d1162a0f3dbb84c657d2274c0cb" title="Queue API: Inserts a uvm_sequence_item at index idx.">insert_item</a>(string producer, uvm_sequence_item item, int unsigned idx);
<a name="l00138"></a>00138   `uvm_fatal(&quot;IMPL_ERROR&quot;, $sformatf(&quot;[%s]: cl_syoscb_queue::insert_item() *MUST* be overwritten&quot;, this.cfg.get_scb_name()));
<a name="l00139"></a>00139   return(1&apos;b0);
<a name="l00140"></a>00140 endfunction
<a name="l00141"></a>00141 <span class="comment"></span>
<a name="l00142"></a>00142 <span class="comment">/// &lt;b&gt;Queue API:&lt;/b&gt; Creates an iterator for this queue.</span>
<a name="l00143"></a><a class="code" href="classcl__syoscb__queue.html#a443750e1bf6c4a231438e821466f1d7e">00143</a> <span class="comment"></span>function <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 class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>::<a class="code" href="classcl__syoscb__queue.html#a443750e1bf6c4a231438e821466f1d7e" title="Queue API: Creates an iterator for this queue.">create_iterator</a>();
<a name="l00144"></a>00144   `uvm_fatal(&quot;IMPL_ERROR&quot;, $sformatf(&quot;[%s]: cl_syoscb_queue::create_iterator() *MUST* be overwritten&quot;, this.cfg.get_scb_name()));
<a name="l00145"></a>00145   return(null);
<a name="l00146"></a>00146 endfunction
<a name="l00147"></a>00147 <span class="comment"></span>
<a name="l00148"></a>00148 <span class="comment">/// &lt;b&gt;Queue API:&lt;/b&gt; Deletes a given iterator for this queue.</span>
<a name="l00149"></a><a class="code" href="classcl__syoscb__queue.html#a21e2463b97abce478edd3aa94d17372e">00149</a> <span class="comment"></span>function bit <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>::<a class="code" href="classcl__syoscb__queue.html#a21e2463b97abce478edd3aa94d17372e" title="Queue API: Deletes a given iterator for this queue.">delete_iterator</a>(cl_syoscb_queue_iterator_base iterator);
<a name="l00150"></a>00150   `uvm_fatal(&quot;IMPL_ERROR&quot;, $sformatf(&quot;[%s]: cl_syoscb_queue::delete_item() *MUST* be overwritten&quot;, this.cfg.get_scb_name()));
<a name="l00151"></a>00151   return(1&apos;b0);
<a name="l00152"></a>00152 endfunction
<a name="l00153"></a>00153 
<a name="l00154"></a>00154 function <a class="code" href="classcl__syoscb__cfg.html" title="Configuration class for the SyoSil UVM scoreboard.">cl_syoscb_cfg</a> <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a>::get_cfg();
<a name="l00155"></a>00155   return(this.cfg);
<a name="l00156"></a>00156 endfunction
</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.