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

Subversion Repositories lpffir

[/] [lpffir/] [trunk/] [uvm/] [tools/] [uvm_syoscb/] [docs/] [html/] [cl__syoscb__compare__io_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_compare_io.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_compare_io.svh</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/// Class which implements the in order compare algorithm</span>
91
<a name="l00002"></a><a class="code" href="classcl__syoscb__compare__io.html">00002</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classcl__syoscb__compare__io.html" title="Class which implements the in order compare algorithm.">cl_syoscb_compare_io</a> <span class="keyword">extends</span> <a class="code" href="classcl__syoscb__compare__base.html" title="Base class for all comapre algorithms.">cl_syoscb_compare_base</a>;
92
<a name="l00003"></a>00003   <span class="comment">//-------------------------------------</span>
93
<a name="l00004"></a>00004   <span class="comment">// UVM Macros</span>
94
<a name="l00005"></a>00005   <span class="comment">//-------------------------------------</span>
95
<a name="l00006"></a>00006   `uvm_object_utils(cl_syoscb_compare_io)
96
<a name="l00007"></a>00007
97
<a name="l00008"></a>00008   <span class="comment">//-------------------------------------</span>
98
<a name="l00009"></a>00009   <span class="comment">// Constructor</span>
99
<a name="l00010"></a>00010   <span class="comment">//-------------------------------------</span>
100
<a name="l00011"></a>00011   extern function new(string name = &quot;cl_syoscb_compare_io&quot;);
101
<a name="l00012"></a>00012
102
<a name="l00013"></a>00013   <span class="comment">//-------------------------------------</span>
103
<a name="l00014"></a>00014   <span class="comment">// Compare API</span>
104
<a name="l00015"></a>00015   <span class="comment">//-------------------------------------</span>
105
<a name="l00016"></a>00016   extern <span class="keyword">virtual</span> function void <a class="code" href="classcl__syoscb__compare__io.html#a6ba722d061b733c113e184105cdcc259" title="Compare API: Mandatory overwriting of the base class&amp;#39; compare method.">compare</a>();
106
<a name="l00017"></a>00017   extern function void <a class="code" href="classcl__syoscb__compare__io.html#a68a58577ea0d6fc8a5d2612ff1b76162" title="Compare API: Mandatory overwriting of the base class&amp;#39; do_compare method.">compare_do</a>();
107
<a name="l00018"></a>00018 endclass: <a class="code" href="classcl__syoscb__compare__io.html" title="Class which implements the in order compare algorithm.">cl_syoscb_compare_io</a>
108
<a name="l00019"></a>00019
109
<a name="l00020"></a>00020 function <a class="code" href="classcl__syoscb__compare__io.html" title="Class which implements the in order compare algorithm.">cl_syoscb_compare_io</a>::new(string name = &quot;cl_syoscb_compare_io&quot;);
110
<a name="l00021"></a>00021   super.new(name);
111
<a name="l00022"></a>00022 endfunction: new
112
<a name="l00023"></a>00023 <span class="comment"></span>
113
<a name="l00024"></a>00024 <span class="comment">/// &lt;b&gt;Compare API&lt;/b&gt;: Mandatory overwriting of the base class&apos; compare method.</span>
114
<a name="l00025"></a>00025 <span class="comment">/// Currently, this just calls do_compare() blindly </span>
115
<a name="l00026"></a><a class="code" href="classcl__syoscb__compare__io.html#a6ba722d061b733c113e184105cdcc259">00026</a> <span class="comment"></span>function void <a class="code" href="classcl__syoscb__compare__io.html" title="Class which implements the in order compare algorithm.">cl_syoscb_compare_io</a>::<a class="code" href="classcl__syoscb__compare__io.html#a6ba722d061b733c113e184105cdcc259" title="Compare API: Mandatory overwriting of the base class&amp;#39; compare method.">compare</a>();
116
<a name="l00027"></a>00027   <span class="comment">// Here any state variables should be queried</span>
117
<a name="l00028"></a>00028   <span class="comment">// to compute if the compare should be done or not</span>
118
<a name="l00029"></a>00029   this.<a class="code" href="classcl__syoscb__compare__io.html#a68a58577ea0d6fc8a5d2612ff1b76162" title="Compare API: Mandatory overwriting of the base class&amp;#39; do_compare method.">compare_do</a>();
119
<a name="l00030"></a>00030 endfunction: <a class="code" href="classcl__syoscb__compare__io.html#a6ba722d061b733c113e184105cdcc259" title="Compare API: Mandatory overwriting of the base class&amp;#39; compare method.">compare</a>
120
<a name="l00031"></a>00031 <span class="comment"></span>
121
<a name="l00032"></a>00032 <span class="comment">/// &lt;b&gt;Compare API&lt;/b&gt;: Mandatory overwriting of the base class&apos; do_compare method.</span>
122
<a name="l00033"></a>00033 <span class="comment">/// Here the actual in order compare is implemented.</span>
123
<a name="l00034"></a>00034 <span class="comment">///</span>
124
<a name="l00035"></a>00035 <span class="comment">/// The algorithm gets the primary queue and then loops over all other queues to see if</span>
125
<a name="l00036"></a>00036 <span class="comment">/// it can find primary item as the first item in all of the other queues. If so then the items</span>
126
<a name="l00037"></a>00037 <span class="comment">/// are removed from all queues. If not then a UVM error is issued.</span>
127
<a name="l00038"></a><a class="code" href="classcl__syoscb__compare__io.html#a68a58577ea0d6fc8a5d2612ff1b76162">00038</a> <span class="comment"></span>function void <a class="code" href="classcl__syoscb__compare__io.html" title="Class which implements the in order compare algorithm.">cl_syoscb_compare_io</a>::<a class="code" href="classcl__syoscb__compare__io.html#a68a58577ea0d6fc8a5d2612ff1b76162" title="Compare API: Mandatory overwriting of the base class&amp;#39; do_compare method.">compare_do</a>();
128
<a name="l00039"></a>00039   string primary_queue_name;
129
<a name="l00040"></a>00040   <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a> primary_queue;
130
<a name="l00041"></a>00041   <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> primary_queue_iter;
131
<a name="l00042"></a>00042   string queue_names[];
132
<a name="l00043"></a>00043   int unsigned secondary_item_found[string];
133
<a name="l00044"></a>00044   bit compare_continue = 1&apos;b1;
134
<a name="l00045"></a>00045   bit compare_result = 1&apos;b0;
135
<a name="l00046"></a>00046   <a class="code" href="classcl__syoscb__item.html" title="The UVM scoreboard item.">cl_syoscb_item</a> primary_item;
136
<a name="l00047"></a>00047
137
<a name="l00048"></a>00048   <span class="comment">// Initialize state variables</span>
138
<a name="l00049"></a>00049   primary_queue_name = this.<a class="code" href="classcl__syoscb__compare__base.html#a35dfc9824d56bacb7ddf21437afa5b7b" title="Compare API: Gets the primary queue. Convinience method.">get_primary_queue_name</a>();
139
<a name="l00050"></a>00050   this.<a class="code" href="classcl__syoscb__compare__base.html#a50220bf3939fd5d2c17f1e1ae7a794ba" title="Handle to the configuration.">cfg</a>.get_queues(queue_names);
140
<a name="l00051"></a>00051
141
<a name="l00052"></a>00052   primary_queue = this.<a class="code" href="classcl__syoscb__compare__base.html#a50220bf3939fd5d2c17f1e1ae7a794ba" title="Handle to the configuration.">cfg</a>.get_queue(primary_queue_name);
142
<a name="l00053"></a>00053   if(primary_queue == null) begin
143
<a name="l00054"></a>00054     `uvm_fatal(&quot;QUEUE_ERROR&quot;, $sformatf(&quot;[%s]: cmp-io: Unable to retrieve primary queue handle&quot;, this.cfg.get_scb_name()));
144
<a name="l00055"></a>00055   end
145
<a name="l00056"></a>00056
146
<a name="l00057"></a>00057   primary_queue_iter = primary_queue.create_iterator();
147
<a name="l00058"></a>00058
148
<a name="l00059"></a>00059   `uvm_info(&quot;DEBUG&quot;, $sformatf(&quot;[%s]: cmp-io: primary queue: %s&quot;, this.cfg.get_scb_name(), primary_queue_name), UVM_FULL);
149
<a name="l00060"></a>00060   `uvm_info(&quot;DEBUG&quot;, $sformatf(&quot;[%s]: cmp-io: number of queues: %0d&quot;, this.cfg.get_scb_name(), queue_names.size()), UVM_FULL);
150
<a name="l00061"></a>00061
151
<a name="l00062"></a>00062   <span class="comment">// Outer loop loops through all</span>
152
<a name="l00063"></a>00063   while(!primary_queue_iter.is_done()) begin
153
<a name="l00064"></a>00064     primary_item = primary_queue_iter.get_item();
154
<a name="l00065"></a>00065
155
<a name="l00066"></a>00066     `uvm_info(&quot;DEBUG&quot;, $sformatf(&quot;[%s]: cmp-io: Now comparing primary transaction:\n%s&quot;, this.cfg.get_scb_name(), primary_item.sprint()), UVM_FULL);
156
<a name="l00067"></a>00067
157
<a name="l00068"></a>00068     <span class="comment">// Clear list of found slave items before starting new inner loop</span>
158
<a name="l00069"></a>00069     secondary_item_found.delete();
159
<a name="l00070"></a>00070
160
<a name="l00071"></a>00071     <span class="comment">// Inner loop through all queues</span>
161
<a name="l00072"></a>00072     foreach(queue_names[i]) begin
162
<a name="l00073"></a>00073       `uvm_info(&quot;DEBUG&quot;, $sformatf(&quot;[%s]: cmp-io: Looking at queue: %s&quot;, this.cfg.get_scb_name(), queue_names[i]), UVM_FULL);
163
<a name="l00074"></a>00074
164
<a name="l00075"></a>00075       if(queue_names[i] != primary_queue_name) begin
165
<a name="l00076"></a>00076         <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a> secondary_queue;
166
<a name="l00077"></a>00077         <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> secondary_queue_iter;
167
<a name="l00078"></a>00078         <a class="code" href="classcl__syoscb__item.html" title="The UVM scoreboard item.">cl_syoscb_item</a> sih;
168
<a name="l00079"></a>00079
169
<a name="l00080"></a>00080         `uvm_info(&quot;DEBUG&quot;, $sformatf(&quot;[%s]: cmp-io: %s is a secondary queue - now comparing&quot;, this.cfg.get_scb_name(), queue_names[i]), UVM_FULL);
170
<a name="l00081"></a>00081
171
<a name="l00082"></a>00082         <span class="comment">// Get the secondary queue</span>
172
<a name="l00083"></a>00083         secondary_queue = this.<a class="code" href="classcl__syoscb__compare__base.html#a50220bf3939fd5d2c17f1e1ae7a794ba" title="Handle to the configuration.">cfg</a>.get_queue(queue_names[i]);
173
<a name="l00084"></a>00084
174
<a name="l00085"></a>00085         if(secondary_queue == null) begin
175
<a name="l00086"></a>00086           `uvm_fatal(&quot;QUEUE_ERROR&quot;, $sformatf(&quot;[%s]: cmp-io: Unable to retrieve secondary queue handle&quot;, this.cfg.get_scb_name()));
176
<a name="l00087"></a>00087         end
177
<a name="l00088"></a>00088
178
<a name="l00089"></a>00089         `uvm_info(&quot;DEBUG&quot;, $sformatf(&quot;[%s]: cmp-io: %0d items in queue: %s&quot;, this.cfg.get_scb_name(), secondary_queue.get_size(), queue_names[i]), UVM_FULL);
179
<a name="l00090"></a>00090
180
<a name="l00091"></a>00091         <span class="comment">// Get an iterator for the secondary queue</span>
181
<a name="l00092"></a>00092         secondary_queue_iter = secondary_queue.create_iterator();
182
<a name="l00093"></a>00093
183
<a name="l00094"></a>00094         <span class="comment">// Only do the compare if there are actually an item in the secondary queue</span>
184
<a name="l00095"></a>00095         if(!secondary_queue_iter.is_done()) begin
185
<a name="l00096"></a>00096           <span class="comment">// Get the first item from the secondary queue       </span>
186
<a name="l00097"></a>00097           sih = secondary_queue_iter.get_item();
187
<a name="l00098"></a>00098
188
<a name="l00099"></a>00099           if(sih.compare(primary_item) == 1&apos;b1) begin
189
<a name="l00100"></a>00100             secondary_item_found[queue_names[i]] = secondary_queue_iter.get_idx();
190
<a name="l00101"></a>00101             `uvm_info(&quot;DEBUG&quot;, $sformatf(&quot;[%s]: cmp-io: Secondary item found at index: %0d:\n%s&quot;, this.cfg.get_scb_name(), secondary_queue_iter.get_idx(), sih.sprint()), UVM_FULL);
191
<a name="l00102"></a>00102           end else begin
192
<a name="l00103"></a>00103             `uvm_error(&quot;COMPARE_ERROR&quot;, $sformatf(&quot;[%s]: cmp-io: Item:\n%s\nfrom primary queue: %s not found in secondary queue: %s. Found this item in %s instead:\n%s&quot;, this.cfg.get_scb_name(), primary_item.sprint(), primary_queue_name, queue_names[i], queue_names[i], sih.sprint()))
193
<a name="l00104"></a>00104
194
<a name="l00105"></a>00105             <span class="comment">// The first element was not a match =&gt; break since this is an in order compare  </span>
195
<a name="l00106"></a>00106             break;
196
<a name="l00107"></a>00107           end
197
<a name="l00108"></a>00108         end else begin
198
<a name="l00109"></a>00109           `uvm_info(&quot;DEBUG&quot;, $sformatf(&quot;[%s]: cmp-io: %s is empty - skipping&quot;, this.cfg.get_scb_name(), queue_names[i]), UVM_FULL);
199
<a name="l00110"></a>00110         end
200
<a name="l00111"></a>00111
201
<a name="l00112"></a>00112         if(!secondary_queue.delete_iterator(secondary_queue_iter)) begin
202
<a name="l00113"></a>00113           `uvm_fatal(&quot;QUEUE_ERROR&quot;, $sformatf(&quot;[%s]: cmp-io: Unable to delete iterator from secondaery queue: %s&quot;, this.cfg.get_scb_name(), queue_names[i]));
203
<a name="l00114"></a>00114         end
204
<a name="l00115"></a>00115       end else begin
205
<a name="l00116"></a>00116         `uvm_info(&quot;DEBUG&quot;, $sformatf(&quot;[%s]: cmp-io: %s is the primary queue - skipping&quot;, this.cfg.get_scb_name(), queue_names[i]), UVM_FULL);
206
<a name="l00117"></a>00117       end
207
<a name="l00118"></a>00118     end
208
<a name="l00119"></a>00119
209
<a name="l00120"></a>00120     <span class="comment">// Only start to remove items if all slave items are found (One from each slave queue)</span>
210
<a name="l00121"></a>00121     if(secondary_item_found.size() == queue_names.size()-1) begin
211
<a name="l00122"></a>00122       string queue_name;
212
<a name="l00123"></a>00123       <a class="code" href="classcl__syoscb__item.html" title="The UVM scoreboard item.">cl_syoscb_item</a> pih;
213
<a name="l00124"></a>00124
214
<a name="l00125"></a>00125       <span class="comment">// Get the item from the primary queue</span>
215
<a name="l00126"></a>00126       pih = primary_queue_iter.get_item();
216
<a name="l00127"></a>00127
217
<a name="l00128"></a>00128       `uvm_info(&quot;DEBUG&quot;, $sformatf(&quot;[%s]: cmp-io: Found match for primary queue item :\n%s&quot;, this.cfg.get_scb_name(), pih.sprint()), UVM_FULL);
218
<a name="l00129"></a>00129
219
<a name="l00130"></a>00130       <span class="comment">// Remove from primary</span>
220
<a name="l00131"></a>00131       if(!primary_queue.delete_item(primary_queue_iter.get_idx())) begin
221
<a name="l00132"></a>00132         `uvm_error(&quot;QUEUE_ERROR&quot;, $sformatf(&quot;[%s]: cmp-io: Unable to delete item idx %0d from queue %s&quot;,
222
<a name="l00133"></a>00133                                             this.cfg.get_scb_name(), primary_queue_iter.get_idx(), primary_queue.get_name()));
223
<a name="l00134"></a>00134       end
224
<a name="l00135"></a>00135
225
<a name="l00136"></a>00136       <span class="comment">// Remove from all secondaries</span>
226
<a name="l00137"></a>00137       while(secondary_item_found.next(queue_name)) begin
227
<a name="l00138"></a>00138         <a class="code" href="classcl__syoscb__queue.html" title="Class which base concet of a queue.">cl_syoscb_queue</a> secondary_queue;
228
<a name="l00139"></a>00139
229
<a name="l00140"></a>00140    <span class="comment">// Get the secondary queue</span>
230
<a name="l00141"></a>00141         secondary_queue = this.<a class="code" href="classcl__syoscb__compare__base.html#a50220bf3939fd5d2c17f1e1ae7a794ba" title="Handle to the configuration.">cfg</a>.get_queue(queue_name);
231
<a name="l00142"></a>00142
232
<a name="l00143"></a>00143         if(secondary_queue == null) begin
233
<a name="l00144"></a>00144           `uvm_fatal(&quot;QUEUE_ERROR&quot;, $sformatf(&quot;[%s]: cmp-io: Unable to retrieve secondary queue handle&quot;, this.cfg.get_scb_name()));
234
<a name="l00145"></a>00145         end
235
<a name="l00146"></a>00146
236
<a name="l00147"></a>00147         if(!secondary_queue.delete_item(secondary_item_found[queue_name])) begin
237
<a name="l00148"></a>00148           `uvm_error(&quot;QUEUE_ERROR&quot;, $sformatf(&quot;[%s]: cmp-io: Unable to delete item idx %0d from queue %s&quot;,
238
<a name="l00149"></a>00149                                               this.cfg.get_scb_name(), secondary_item_found[queue_name], secondary_queue.get_name()));
239
<a name="l00150"></a>00150         end
240
<a name="l00151"></a>00151       end
241
<a name="l00152"></a>00152     end
242
<a name="l00153"></a>00153
243
<a name="l00154"></a>00154     <span class="comment">// Call .next() blindly since we do not care about the</span>
244
<a name="l00155"></a>00155     <span class="comment">// return value, since we might be at the end of the queue.</span>
245
<a name="l00156"></a>00156     <span class="comment">// Thus, .next() will return 1&apos;b0 at the end of the queue</span>
246
<a name="l00157"></a>00157     void&apos;(primary_queue_iter.next());
247
<a name="l00158"></a>00158   end
248
<a name="l00159"></a>00159
249
<a name="l00160"></a>00160   if(!primary_queue.delete_iterator(primary_queue_iter)) begin
250
<a name="l00161"></a>00161     `uvm_fatal(&quot;QUEUE_ERROR&quot;, $sformatf(&quot;[%s]: cmp-io: Unable to delete iterator from primary queue: %s&quot;, this.cfg.get_scb_name(), primary_queue_name));
251
<a name="l00162"></a>00162   end
252
<a name="l00163"></a>00163 endfunction: <a class="code" href="classcl__syoscb__compare__io.html#a68a58577ea0d6fc8a5d2612ff1b76162" title="Compare API: Mandatory overwriting of the base class&amp;#39; do_compare method.">compare_do</a>
253
</pre></div></div>
254
<!--- window showing the filter options -->
255
<div id="MSearchSelectWindow"
256
     onmouseover="return searchBox.OnSearchSelectShow()"
257
     onmouseout="return searchBox.OnSearchSelectHide()"
258
     onkeydown="return searchBox.OnSearchSelectKey(event)">
259
<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>
260
 
261
<!-- iframe showing the search results (closed by default) -->
262
<div id="MSearchResultsWindow">
263
<iframe src="" frameborder="0"
264
        name="MSearchResults" id="MSearchResults">
265
</iframe>
266
</div>
267
 
268
<!--*************************************************************************-->
269
<!-- $Id: idv_dox_footer.html 136 2010-05-31 19:13:27Z seanoboyle $          -->
270
<!--*************************************************************************-->
271
<!--   This program is free software: you can redistribute it and/or modify  -->
272
<!--   it under the terms of the GNU General Public License as published by  -->
273
<!--   the Free Software Foundation, either version 3 of the License, or     -->
274
<!--   (at your option) any later version.                                   -->
275
<!--                                                                         -->
276
<!--   This program is distributed in the hope that it will be useful,       -->
277
<!--   but WITHOUT ANY WARRANTY; without even the implied warranty of        -->
278
<!--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         -->
279
<!--   GNU General Public License for more details.                          -->
280
<!--                                                                         -->
281
<!--   You should have received a copy of the GNU General Public License     -->
282
<!--   along with this program.  If not, see http://www.gnu.org/licenses/.   -->
283
<!--                                                                         -->
284
<!--*************************************************************************-->
285
<!-- Title:        IDV Doxygen Footer File                                   -->
286
<!-- Description:  This file is a doxygen footer with the IDV logo and a     -->
287
<!--               and a reference to the GNU FDL License.                   -->
288
<!--                                                                         -->
289
<!-- Original Author: Sean O'Boyle                                           -->
290
<!-- Contact:         seanoboyle@intelligentdv.com                           -->
291
<!-- Company:         Intelligent Design Verification                        -->
292
<!-- Company URL:     http://intelligentdv.com                               -->
293
<!--                                                                         -->
294
<!-- Download the most recent version here:                                  -->
295
<!--                  http://intelligentdv.com/downloads                     -->
296
<!--                                                                         -->
297
<!-- File Bugs Here:  http://bugs.intelligentdv.com                          -->
298
<!--        Project:  DoxygenFilterSV                                        -->
299
<!--                                                                         -->
300
<!-- File: idv_dox_header.xml                                                -->
301
<!-- $LastChangedBy: seanoboyle $                                            -->
302
<!-- $LastChangedDate: 2010-05-31 12:13:27 -0700 (Mon, 31 May 2010) $        -->
303
<!-- $LastChangedRevision: 136 $                                             -->
304
<!--                                                                         -->
305
<!--*************************************************************************-->
306
 
307
<br>
308
<table border="1" width = "100%">
309
  <tr>
310
    <td width = "20%">
311
     <img src="syosil.jpg">
312
    </td>
313
    <td width = "60%">
314
       <address style="text-align: center;">
315
       Project: SyoSil ApS UVM Scoreboard, Revision: 1.0.2.5<br>
316
       <br>
317
       Copyright 2014-2015 SyoSil ApS<br>
318
       All Rights Reserved Worldwide<br>
319
       <br>
320
      Licensed under the Apache License, Version 2.0 (the "License"); you may not
321
      use this file except in compliance with the License.  You may obtain a copy of
322
      the License at<br>
323
      <br>
324
       <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a><br>
325
      <br>
326
      Unless required by applicable law or agreed to in writing, software distributed under the License is
327
      distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
328
      implied. See the License for the specific language governing permissions and limitations under
329
      the License.
330
      </address>
331
    </td>
332
    <td width = "20%">
333
      <address style="text-align: right;"><small>
334
      <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a><br>
335
      <a href="http://www.doxygen.org/index.html">Doxygen</a> Version: 1.6.1<br>
336
      <a href="http://www.intelligentdv.com/index.html">IDV SV Filter</a> Version: 2.6.2<br>
337
      Sat Nov 28 05:41:54 2015</small></address>
338
   </td>
339
  </tr>
340
</table>
341
<address style="text-align: left;"><small>
342
Find a documentation bug?  Report bugs to: <a href="http://bugs.intelligentdv.com/">bugs.intelligentdv.com</a> Project: DoxygenFilterSV
343
</small></address>
344
</body>
345
</html>

powered by: WebSVN 2.1.0

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