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

Subversion Repositories lpffir

[/] [lpffir/] [trunk/] [uvm/] [tools/] [uvm_syoscb/] [docs/] [html/] [cl__syoscb__item_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_item.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_item.svh</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/// The UVM scoreboard item. This item wraps the uvm_sequence_items. This ensures that future</span>
<a name="l00002"></a>00002 <span class="comment"></span><span class="comment">/// extensions to the UVM scoreboard will always be able to use all uvm_sqeuence_items from</span>
<a name="l00003"></a>00003 <span class="comment"></span><span class="comment">/// already existing testbenches etc. even though more META data is added to the wrapping item.</span>
<a name="l00004"></a><a class="code" href="classcl__syoscb__item.html">00004</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classcl__syoscb__item.html" title="The UVM scoreboard item.">cl_syoscb_item</a> <span class="keyword">extends</span> uvm_object;
<a name="l00005"></a>00005   <span class="comment">//-------------------------------------</span>
<a name="l00006"></a>00006   <span class="comment">// Non randomizable variables</span>
<a name="l00007"></a>00007   <span class="comment">//-------------------------------------</span><span class="comment"></span>
<a name="l00008"></a>00008 <span class="comment">  /// Hold the name of the producer</span>
<a name="l00009"></a>00009 <span class="comment"></span>  local string producer;
<a name="l00010"></a>00010 <span class="comment"></span>
<a name="l00011"></a>00011 <span class="comment">  /// Handle to the wrapped uvm_sequence_item</span>
<a name="l00012"></a>00012 <span class="comment"></span>  local uvm_sequence_item item;
<a name="l00013"></a>00013 
<a name="l00014"></a>00014   <span class="comment">//-------------------------------------</span>
<a name="l00015"></a>00015   <span class="comment">// UVM Macros</span>
<a name="l00016"></a>00016   <span class="comment">//-------------------------------------</span>
<a name="l00017"></a>00017   `uvm_object_utils_begin(cl_syoscb_item)
<a name="l00018"></a>00018 `ifdef SYOSIL_APPLY_TLM_GP_CMP_WORKAROUND
<a name="l00019"></a>00019     <span class="comment">// Use NOCOMPARE when do_compare is implemented. Otherwise the compare is done twice since</span>
<a name="l00020"></a>00020     <span class="comment">// the super of uvm field automation is called before do_compare. This will invoke the compare</span>
<a name="l00021"></a>00021     <span class="comment">// since the functions are virtual</span>
<a name="l00022"></a>00022     `uvm_field_string(producer, UVM_DEFAULT | UVM_NOCOMPARE)
<a name="l00023"></a>00023     `uvm_field_object(item,     UVM_DEFAULT | UVM_NOCOMPARE)
<a name="l00024"></a>00024 `else
<a name="l00025"></a>00025     `uvm_field_string(producer, UVM_DEFAULT)
<a name="l00026"></a>00026     `uvm_field_object(item,     UVM_DEFAULT)
<a name="l00027"></a>00027 `endif
<a name="l00028"></a>00028   `uvm_object_utils_end
<a name="l00029"></a>00029 
<a name="l00030"></a>00030   <span class="comment">//-------------------------------------</span>
<a name="l00031"></a>00031   <span class="comment">// Constructor</span>
<a name="l00032"></a>00032   <span class="comment">//-------------------------------------</span>
<a name="l00033"></a>00033   extern function new(string name = &quot;cl_syoscb_item&quot;);
<a name="l00034"></a>00034 
<a name="l00035"></a>00035   <span class="comment">//-------------------------------------</span>
<a name="l00036"></a>00036   <span class="comment">// Item API</span>
<a name="l00037"></a>00037   <span class="comment">//-------------------------------------</span>
<a name="l00038"></a>00038   extern function string <a class="code" href="classcl__syoscb__item.html#a856bc5754caaf121b2297775423a9da5" title="Item API: Returns the producer">get_producer</a>();
<a name="l00039"></a>00039   extern function void <a class="code" href="classcl__syoscb__item.html#a3f7a926f3e4e1b57f992dcf2b053593f" title="Item API: Sets the producer">set_producer</a>(string producer);
<a name="l00040"></a>00040   extern function uvm_sequence_item <a class="code" href="classcl__syoscb__item.html#a479775c83c85427005d8709061bb42cb" title="Item API: Returns the wrapped uvm_sequence_item">get_item</a>();
<a name="l00041"></a>00041   extern function void <a class="code" href="classcl__syoscb__item.html#a4739ab1d56e8afe6452af21bd64f5ceb" title="Item API: Sets the to be wrapped uvm_sequence_item">set_item</a>(uvm_sequence_item item);
<a name="l00042"></a>00042 
<a name="l00043"></a>00043 `ifdef SYOSIL_APPLY_TLM_GP_CMP_WORKAROUND
<a name="l00044"></a>00044   <span class="comment">//-------------------------------------</span>
<a name="l00045"></a>00045   <span class="comment">// UVM TLM2 Generic Payload compare</span>
<a name="l00046"></a>00046   <span class="comment">// workaround</span>
<a name="l00047"></a>00047   <span class="comment">//-------------------------------------</span>
<a name="l00048"></a>00048   function bit do_compare(uvm_object rhs, uvm_comparer comparer);
<a name="l00049"></a>00049     bit status = 1&apos;b1;
<a name="l00050"></a>00050     <a class="code" href="classcl__syoscb__item.html" title="The UVM scoreboard item.">cl_syoscb_item</a> that;
<a name="l00051"></a>00051    
<a name="l00052"></a>00052     <span class="comment">// Code it properly using the comparer policy</span>
<a name="l00053"></a>00053     if(!$cast(that, rhs)) begin
<a name="l00054"></a>00054       status = 1&apos;b0;
<a name="l00055"></a>00055     end else begin
<a name="l00056"></a>00056       <span class="comment">// &quot;producer&quot; compare using the comparer object</span>
<a name="l00057"></a>00057       status &amp;= comparer.compare_string(&quot;producer&quot;, this.producer, that.producer);
<a name="l00058"></a>00058 
<a name="l00059"></a>00059       <span class="comment">// Apply WORKAROUND:</span>
<a name="l00060"></a>00060       <span class="comment">//   Ensure that the comparer object is properly updated at this level</span>
<a name="l00061"></a>00061       <span class="comment">//   and propagate the compare result bit correctly</span>
<a name="l00062"></a>00062       status &amp;= comparer.compare_object(&quot;item&quot;, this.item, that.item);
<a name="l00063"></a>00063     end
<a name="l00064"></a>00064     return(status);
<a name="l00065"></a>00065   endfunction: do_compare
<a name="l00066"></a>00066 `endif
<a name="l00067"></a>00067 endclass: <a class="code" href="classcl__syoscb__item.html" title="The UVM scoreboard item.">cl_syoscb_item</a>
<a name="l00068"></a>00068 
<a name="l00069"></a>00069 function <a class="code" href="classcl__syoscb__item.html" title="The UVM scoreboard item.">cl_syoscb_item</a>::new(string name = &quot;cl_syoscb_item&quot;);
<a name="l00070"></a>00070   super.new(name);
<a name="l00071"></a>00071 endfunction : new     
<a name="l00072"></a>00072 <span class="comment"></span>
<a name="l00073"></a>00073 <span class="comment">/// &lt;b&gt;Item API:&lt;/b&gt; Returns the producer</span>
<a name="l00074"></a><a class="code" href="classcl__syoscb__item.html#a856bc5754caaf121b2297775423a9da5">00074</a> <span class="comment"></span>function string <a class="code" href="classcl__syoscb__item.html" title="The UVM scoreboard item.">cl_syoscb_item</a>::<a class="code" href="classcl__syoscb__item.html#a856bc5754caaf121b2297775423a9da5" title="Item API: Returns the producer">get_producer</a>();
<a name="l00075"></a>00075   return(this.producer);
<a name="l00076"></a>00076 endfunction: <a class="code" href="classcl__syoscb__item.html#a856bc5754caaf121b2297775423a9da5" title="Item API: Returns the producer">get_producer</a>
<a name="l00077"></a>00077 <span class="comment"></span>
<a name="l00078"></a>00078 <span class="comment">/// &lt;b&gt;Item API:&lt;/b&gt; Sets the producer</span>
<a name="l00079"></a><a class="code" href="classcl__syoscb__item.html#a3f7a926f3e4e1b57f992dcf2b053593f">00079</a> <span class="comment"></span>function void <a class="code" href="classcl__syoscb__item.html" title="The UVM scoreboard item.">cl_syoscb_item</a>::<a class="code" href="classcl__syoscb__item.html#a3f7a926f3e4e1b57f992dcf2b053593f" title="Item API: Sets the producer">set_producer</a>(string producer);
<a name="l00080"></a>00080   <span class="comment">// The producer has been checked by the parent prior</span>
<a name="l00081"></a>00081   <span class="comment">// to the insertion</span>
<a name="l00082"></a>00082   this.producer = producer;
<a name="l00083"></a>00083 endfunction: <a class="code" href="classcl__syoscb__item.html#a3f7a926f3e4e1b57f992dcf2b053593f" title="Item API: Sets the producer">set_producer</a>
<a name="l00084"></a>00084 <span class="comment"></span>
<a name="l00085"></a>00085 <span class="comment">/// &lt;b&gt;Item API:&lt;/b&gt; Returns the wrapped uvm_sequence_item</span>
<a name="l00086"></a><a class="code" href="classcl__syoscb__item.html#a479775c83c85427005d8709061bb42cb">00086</a> <span class="comment"></span>function uvm_sequence_item <a class="code" href="classcl__syoscb__item.html" title="The UVM scoreboard item.">cl_syoscb_item</a>::<a class="code" href="classcl__syoscb__item.html#a479775c83c85427005d8709061bb42cb" title="Item API: Returns the wrapped uvm_sequence_item">get_item</a>();
<a name="l00087"></a>00087   return(this.item);
<a name="l00088"></a>00088 endfunction: <a class="code" href="classcl__syoscb__item.html#a479775c83c85427005d8709061bb42cb" title="Item API: Returns the wrapped uvm_sequence_item">get_item</a>
<a name="l00089"></a>00089 <span class="comment"></span>
<a name="l00090"></a>00090 <span class="comment">/// &lt;b&gt;Item API:&lt;/b&gt; Sets the to be wrapped uvm_sequence_item</span>
<a name="l00091"></a><a class="code" href="classcl__syoscb__item.html#a4739ab1d56e8afe6452af21bd64f5ceb">00091</a> <span class="comment"></span>function void <a class="code" href="classcl__syoscb__item.html" title="The UVM scoreboard item.">cl_syoscb_item</a>::<a class="code" href="classcl__syoscb__item.html#a4739ab1d56e8afe6452af21bd64f5ceb" title="Item API: Sets the to be wrapped uvm_sequence_item">set_item</a>(uvm_sequence_item item);
<a name="l00092"></a>00092   this.item = item;
<a name="l00093"></a>00093 endfunction: <a class="code" href="classcl__syoscb__item.html#a4739ab1d56e8afe6452af21bd64f5ceb" title="Item API: Sets the to be wrapped uvm_sequence_item">set_item</a>
</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.