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] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 vladimirar
<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
<html xmlns="http://www.w3.org/1999/xhtml">
4
<head>
5
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6
<title>SyoSil ApS UVM Scoreboard: cl_syoscb_queue.svh Source File</title>
7
<link href="tabs.css" rel="stylesheet" type="text/css"/>
8
<link href="search/search.css" rel="stylesheet" type="text/css"/>
9
<script type="text/javaScript" src="search/search.js"></script>
10
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
11
</head>
12
<body onload='searchBox.OnSelectItem(0);'>
13
<!-- Generated by Doxygen 1.6.1 -->
14
<script type="text/javascript"><!--
15
var searchBox = new SearchBox("searchBox", "search",false,'Search');
16
--></script>
17
<script type="text/javascript">
18
<!--
19
function changeDisplayState (e){
20
  var num=this.id.replace(/[^[0-9]/g,'');
21
  var button=this.firstChild;
22
  var sectionDiv=document.getElementById('dynsection'+num);
23
  if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){
24
    sectionDiv.style.display='block';
25
    button.src='open.gif';
26
  }else{
27
    sectionDiv.style.display='none';
28
    button.src='closed.gif';
29
  }
30
}
31
function initDynSections(){
32
  var divs=document.getElementsByTagName('div');
33
  var sectionCounter=1;
34
  for(var i=0;i<divs.length-1;i++){
35
    if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){
36
      var header=divs[i];
37
      var section=divs[i+1];
38
      var button=header.firstChild;
39
      if (button!='IMG'){
40
        divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);
41
        button=document.createElement('img');
42
        divs[i].insertBefore(button,divs[i].firstChild);
43
      }
44
      header.style.cursor='pointer';
45
      header.onclick=changeDisplayState;
46
      header.id='dynheader'+sectionCounter;
47
      button.src='closed.gif';
48
      section.id='dynsection'+sectionCounter;
49
      section.style.display='none';
50
      section.style.marginLeft='14px';
51
      sectionCounter++;
52
    }
53
  }
54
}
55
window.onload = initDynSections;
56
-->
57
</script>
58
<div class="navigation" id="top">
59
  <div class="tabs">
60
    <ul>
61
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
62
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
63
      <li><a href="annotated.html"><span>Classes</span></a></li>
64
      <li class="current"><a href="files.html"><span>Files</span></a></li>
65
      <li><a href="dirs.html"><span>Directories</span></a></li>
66
      <li>
67
        <div id="MSearchBox" class="MSearchBoxInactive">
68
        <img id="MSearchSelect" src="search/search.png"
69
             onmouseover="return searchBox.OnSearchSelectShow()"
70
             onmouseout="return searchBox.OnSearchSelectHide()"
71
             alt=""/>
72
        <input type="text" id="MSearchField" value="Search" accesskey="S"
73
             onfocus="searchBox.OnSearchFieldFocus(true)"
74
             onblur="searchBox.OnSearchFieldFocus(false)"
75
             onkeyup="searchBox.OnSearchFieldChange(event)"/>
76
        <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
77
        </div>
78
      </li>
79
    </ul>
80
  </div>
81
  <div class="tabs">
82
    <ul>
83
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
84
    </ul>
85
  </div>
86
  <div class="navpath"><a class="el" href="dir_562324e130495ce1321e3e3f14c8d761.html">src</a>
87
  </div>
88
</div>
89
<div class="contents">
90
<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>
91
<a name="l00002"></a>00002 <span class="comment"></span><span class="comment">/// and implement the queue API.</span>
92
<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;
93
<a name="l00004"></a>00004   <span class="comment">//-------------------------------------</span>
94
<a name="l00005"></a>00005   <span class="comment">// Non randomizable variables</span>
95
<a name="l00006"></a>00006   <span class="comment">//-------------------------------------</span><span class="comment"></span>
96
<a name="l00007"></a>00007 <span class="comment">  /// Handle to the configuration</span>
97
<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>;
98
<a name="l00009"></a>00009 <span class="comment"></span>
99
<a name="l00010"></a>00010 <span class="comment">  /// List of iterators registered with queue</span>
100
<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>];
101
<a name="l00012"></a>00012 <span class="comment"></span>
102
<a name="l00013"></a>00013 <span class="comment">  /// Current number of iterators</span>
103
<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>;
104
<a name="l00015"></a>00015 <span class="comment"></span>
105
<a name="l00016"></a>00016 <span class="comment">  /// Semaphore guarding exclusive access to the queue when</span>
106
<a name="l00017"></a>00017 <span class="comment">  /// multiple iterators are in play</span>
107
<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>;
108
<a name="l00019"></a>00019
109
<a name="l00020"></a>00020   <span class="comment">// Counter for counting the number of inserts</span>
110
<a name="l00021"></a>00021   <span class="keyword">protected</span> int unsigned cnt_add_item = 0;
111
<a name="l00022"></a>00022
112
<a name="l00023"></a>00023   <span class="comment">//-------------------------------------</span>
113
<a name="l00024"></a>00024   <span class="comment">// UVM Macros</span>
114
<a name="l00025"></a>00025   <span class="comment">//-------------------------------------</span>
115
<a name="l00026"></a>00026   `uvm_component_utils_begin(cl_syoscb_queue)
116
<a name="l00027"></a>00027     `uvm_field_object(cfg,           UVM_DEFAULT)
117
<a name="l00028"></a>00028     <span class="comment">// TBD::JSA: Lacks a user defined implementation of field macro</span>
118
<a name="l00029"></a>00029     <span class="comment">//           for completeness since: `uvm_field_aa_object-object does not exist</span>
119
<a name="l00030"></a>00030     `uvm_field_int(iter_idx,         UVM_DEFAULT)
120
<a name="l00031"></a>00031     `uvm_field_int(cnt_add_item,     UVM_DEFAULT)
121
<a name="l00032"></a>00032   `uvm_component_utils_end
122
<a name="l00033"></a>00033
123
<a name="l00034"></a>00034   <span class="comment">//-------------------------------------</span>
124
<a name="l00035"></a>00035   <span class="comment">// Constructor</span>
125
<a name="l00036"></a>00036   <span class="comment">//-------------------------------------</span>
126
<a name="l00037"></a>00037   extern function new(string name, uvm_component parent);
127
<a name="l00038"></a>00038
128
<a name="l00039"></a>00039   <span class="comment">//-------------------------------------</span>
129
<a name="l00040"></a>00040   <span class="comment">// UVM Phase methods</span>
130
<a name="l00041"></a>00041   <span class="comment">//-------------------------------------</span>
131
<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);
132
<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);
133
<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);
134
<a name="l00045"></a>00045
135
<a name="l00046"></a>00046   <span class="comment">//-------------------------------------</span>
136
<a name="l00047"></a>00047   <span class="comment">// Queue API</span>
137
<a name="l00048"></a>00048   <span class="comment">//-------------------------------------</span>
138
<a name="l00049"></a>00049   <span class="comment">// Basic queue functions</span>
139
<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);
140
<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);
141
<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);
142
<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>();
143
<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>();
144
<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);
145
<a name="l00056"></a>00056
146
<a name="l00057"></a>00057   <span class="comment">// Iterator support functions</span>
147
<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>();
148
<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);
149
<a name="l00060"></a>00060
150
<a name="l00061"></a>00061   <span class="comment">// Locator support functions</span>
151
<a name="l00062"></a>00062   <span class="comment">// TBD::JSA: Locator not implemented yet</span>
152
<a name="l00063"></a>00063
153
<a name="l00064"></a>00064   <span class="comment">// Misc support functions  </span>
154
<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();
155
<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>
156
<a name="l00067"></a>00067
157
<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);
158
<a name="l00069"></a>00069   super.new(name, parent);
159
<a name="l00070"></a>00070
160
<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);
161
<a name="l00072"></a>00072   this.<a class="code" href="classcl__syoscb__queue.html#a3b9f8500d7d93d01eda717aac6ef4c28" title="Current number of iterators.">iter_idx</a> = 0;
162
<a name="l00073"></a>00073 endfunction: new
163
<a name="l00074"></a>00074 <span class="comment"></span>
164
<a name="l00075"></a>00075 <span class="comment">/// Gets the global scoreboard configuration</span>
165
<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);
166
<a name="l00077"></a>00077   if (!uvm_config_db #(cl_syoscb_cfg)::get(this, &quot;&quot;, &quot;cfg&quot;, this.cfg)) begin
167
<a name="l00078"></a>00078     `uvm_fatal(&quot;CFG_ERROR&quot;, $sformatf(&quot;[%s]: Configuration object not passed.&quot;, this.cfg.get_scb_name()))
168
<a name="l00079"></a>00079   end
169
<a name="l00080"></a>00080 endfunction
170
<a name="l00081"></a>00081 <span class="comment"></span>
171
<a name="l00082"></a>00082 <span class="comment">/// Checks if the queue is empty. If not then a UVM error is issued.</span>
172
<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);
173
<a name="l00084"></a>00084   <span class="comment">// Check that this queue is empty. If not then issue an error</span>
174
<a name="l00085"></a>00085   if(!this.empty()) begin
175
<a name="l00086"></a>00086     <span class="comment">// *NOTE*: Using this.get_name() is sufficient since the component</span>
176
<a name="l00087"></a>00087     <span class="comment">//         instance name is the queue name by definition</span>
177
<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()));
178
<a name="l00089"></a>00089   end
179
<a name="l00090"></a>00090 endfunction
180
<a name="l00091"></a>00091 <span class="comment"></span>
181
<a name="l00092"></a>00092 <span class="comment">/// Prints queue stats</span>
182
<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);
183
<a name="l00094"></a>00094   string stats;
184
<a name="l00095"></a>00095
185
<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());
186
<a name="l00097"></a>00097
187
<a name="l00098"></a>00098   <span class="comment">// *NOTE*: Using this.get_name() is sufficient since the component</span>
188
<a name="l00099"></a>00099   <span class="comment">//         instance name is the queue name by definition</span>
189
<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)
190
<a name="l00101"></a>00101 endfunction
191
<a name="l00102"></a>00102 <span class="comment"></span>
192
<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>
193
<a name="l00104"></a>00104 <span class="comment">/// cl_syoscb_item object before the item is inserted</span>
194
<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);
195
<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()));
196
<a name="l00107"></a>00107   return(1&apos;b0);
197
<a name="l00108"></a>00108 endfunction
198
<a name="l00109"></a>00109 <span class="comment"></span>
199
<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>
200
<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);
201
<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()));
202
<a name="l00113"></a>00113   return(1&apos;b0);
203
<a name="l00114"></a>00114 endfunction
204
<a name="l00115"></a>00115 <span class="comment"></span>
205
<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>
206
<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);
207
<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()));
208
<a name="l00119"></a>00119   return(null);
209
<a name="l00120"></a>00120 endfunction
210
<a name="l00121"></a>00121 <span class="comment"></span>
211
<a name="l00122"></a>00122 <span class="comment">/// &lt;b&gt;Queue API:&lt;/b&gt; Returns the current size of the queue</span>
212
<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>();
213
<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()));
214
<a name="l00125"></a>00125   return(0);
215
<a name="l00126"></a>00126 endfunction
216
<a name="l00127"></a>00127 <span class="comment"></span>
217
<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>
218
<a name="l00129"></a>00129 <span class="comment">/// is not empty. 1&apos;b1 means that the queue is empty</span>
219
<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>();
220
<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()));
221
<a name="l00132"></a>00132   return(0);
222
<a name="l00133"></a>00133 endfunction
223
<a name="l00134"></a>00134 <span class="comment"></span>
224
<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>
225
<a name="l00136"></a>00136 <span class="comment">/// the uvm_sequence_item in a cl_syoscb_item before it is inserted.</span>
226
<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);
227
<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()));
228
<a name="l00139"></a>00139   return(1&apos;b0);
229
<a name="l00140"></a>00140 endfunction
230
<a name="l00141"></a>00141 <span class="comment"></span>
231
<a name="l00142"></a>00142 <span class="comment">/// &lt;b&gt;Queue API:&lt;/b&gt; Creates an iterator for this queue.</span>
232
<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>();
233
<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()));
234
<a name="l00145"></a>00145   return(null);
235
<a name="l00146"></a>00146 endfunction
236
<a name="l00147"></a>00147 <span class="comment"></span>
237
<a name="l00148"></a>00148 <span class="comment">/// &lt;b&gt;Queue API:&lt;/b&gt; Deletes a given iterator for this queue.</span>
238
<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);
239
<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()));
240
<a name="l00151"></a>00151   return(1&apos;b0);
241
<a name="l00152"></a>00152 endfunction
242
<a name="l00153"></a>00153
243
<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();
244
<a name="l00155"></a>00155   return(this.cfg);
245
<a name="l00156"></a>00156 endfunction
246
</pre></div></div>
247
<!--- window showing the filter options -->
248
<div id="MSearchSelectWindow"
249
     onmouseover="return searchBox.OnSearchSelectShow()"
250
     onmouseout="return searchBox.OnSearchSelectHide()"
251
     onkeydown="return searchBox.OnSearchSelectKey(event)">
252
<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>
253
 
254
<!-- iframe showing the search results (closed by default) -->
255
<div id="MSearchResultsWindow">
256
<iframe src="" frameborder="0"
257
        name="MSearchResults" id="MSearchResults">
258
</iframe>
259
</div>
260
 
261
<!--*************************************************************************-->
262
<!-- $Id: idv_dox_footer.html 136 2010-05-31 19:13:27Z seanoboyle $          -->
263
<!--*************************************************************************-->
264
<!--   This program is free software: you can redistribute it and/or modify  -->
265
<!--   it under the terms of the GNU General Public License as published by  -->
266
<!--   the Free Software Foundation, either version 3 of the License, or     -->
267
<!--   (at your option) any later version.                                   -->
268
<!--                                                                         -->
269
<!--   This program is distributed in the hope that it will be useful,       -->
270
<!--   but WITHOUT ANY WARRANTY; without even the implied warranty of        -->
271
<!--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         -->
272
<!--   GNU General Public License for more details.                          -->
273
<!--                                                                         -->
274
<!--   You should have received a copy of the GNU General Public License     -->
275
<!--   along with this program.  If not, see http://www.gnu.org/licenses/.   -->
276
<!--                                                                         -->
277
<!--*************************************************************************-->
278
<!-- Title:        IDV Doxygen Footer File                                   -->
279
<!-- Description:  This file is a doxygen footer with the IDV logo and a     -->
280
<!--               and a reference to the GNU FDL License.                   -->
281
<!--                                                                         -->
282
<!-- Original Author: Sean O'Boyle                                           -->
283
<!-- Contact:         seanoboyle@intelligentdv.com                           -->
284
<!-- Company:         Intelligent Design Verification                        -->
285
<!-- Company URL:     http://intelligentdv.com                               -->
286
<!--                                                                         -->
287
<!-- Download the most recent version here:                                  -->
288
<!--                  http://intelligentdv.com/downloads                     -->
289
<!--                                                                         -->
290
<!-- File Bugs Here:  http://bugs.intelligentdv.com                          -->
291
<!--        Project:  DoxygenFilterSV                                        -->
292
<!--                                                                         -->
293
<!-- File: idv_dox_header.xml                                                -->
294
<!-- $LastChangedBy: seanoboyle $                                            -->
295
<!-- $LastChangedDate: 2010-05-31 12:13:27 -0700 (Mon, 31 May 2010) $        -->
296
<!-- $LastChangedRevision: 136 $                                             -->
297
<!--                                                                         -->
298
<!--*************************************************************************-->
299
 
300
<br>
301
<table border="1" width = "100%">
302
  <tr>
303
    <td width = "20%">
304
     <img src="syosil.jpg">
305
    </td>
306
    <td width = "60%">
307
       <address style="text-align: center;">
308
       Project: SyoSil ApS UVM Scoreboard, Revision: 1.0.2.5<br>
309
       <br>
310
       Copyright 2014-2015 SyoSil ApS<br>
311
       All Rights Reserved Worldwide<br>
312
       <br>
313
      Licensed under the Apache License, Version 2.0 (the "License"); you may not
314
      use this file except in compliance with the License.  You may obtain a copy of
315
      the License at<br>
316
      <br>
317
       <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a><br>
318
      <br>
319
      Unless required by applicable law or agreed to in writing, software distributed under the License is
320
      distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
321
      implied. See the License for the specific language governing permissions and limitations under
322
      the License.
323
      </address>
324
    </td>
325
    <td width = "20%">
326
      <address style="text-align: right;"><small>
327
      <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a><br>
328
      <a href="http://www.doxygen.org/index.html">Doxygen</a> Version: 1.6.1<br>
329
      <a href="http://www.intelligentdv.com/index.html">IDV SV Filter</a> Version: 2.6.2<br>
330
      Sat Nov 28 05:41:54 2015</small></address>
331
   </td>
332
  </tr>
333
</table>
334
<address style="text-align: left;"><small>
335
Find a documentation bug?  Report bugs to: <a href="http://bugs.intelligentdv.com/">bugs.intelligentdv.com</a> Project: DoxygenFilterSV
336
</small></address>
337
</body>
338
</html>

powered by: WebSVN 2.1.0

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