blob: 337d493a076387eafd521c6bd9e006d23793a2ae [file] [log] [blame]
<html><head><title>UVM HDL Backdoor Access support routines.</title><link rel="stylesheet" type="text/css" href="../../styles/main.css"><script language=JavaScript src="../../javascript/main.js"></script></head><body class="FramedContentPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
<!-- Generated by Natural Docs, version Development Release 01-12-2008 (1.35 base) -->
<!-- http://www.naturaldocs.org -->
<!-- saved from url=(0026)http://www.naturaldocs.org -->
<!--TOP - START OF CONTENT-->
<div id=Content>
<!--CONTENT index=0 -->
<div class="CSection"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="UVM_HDL_Backdoor_Access_support_routines" href="../../src/dpi/uvm_hdl.svh">UVM HDL Backdoor Access support routines.</a></h1><div class=CBody><p>These routines provide an interface to the DPI/PLI implementation of backdoor access used by registers.</p><p>If you DON&rsquo;T want to use the DPI HDL API, then compile your SystemVerilog code with the vlog switch</p><blockquote><pre>vlog ... +define+UVM_HDL_NO_DPI ...</pre></blockquote>
<!--START_ND_SUMMARY index=0-->
<div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable>
<!-- index=0 -->
<tr class="SMain"><td colspan=2 class=SEntry><a href="#UVM_HDL_Backdoor_Access_support_routines" >UVM HDL Backdoor Access support routines.</a></td></tr>
<tr class=SMain><td colspan=2 class=SWideDescription>These routines provide an interface to the DPI/PLI implementation of backdoor access used by registers.</td></tr>
<!-- index=1 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Variables" >Variables</a></td><td class=SDescription></td></tr>
<!-- index=2 -->
<tr class="SVariable SIndent2"><td class=SEntry><a href="#UVM_HDL_MAX_WIDTH" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">UVM_HDL_MAX_WIDTH</a></td><td class=SDescription>Sets the maximum size bit vector for backdoor access. </td></tr>
<!-- index=3 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Methods" >Methods</a></td><td class=SDescription></td></tr>
<!-- index=4 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_hdl_check_path" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">uvm_hdl_check_path</a></td><td class=SDescription>Checks that the given HDL <i>path</i> exists. </td></tr>
<!-- index=5 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_hdl_deposit" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">uvm_hdl_deposit</a></td><td class=SDescription>Sets the given HDL <i>path</i> to the specified <i>value</i>. </td></tr>
<!-- index=6 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_hdl_force" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">uvm_hdl_force</a></td><td class=SDescription>Forces the <i>value</i> on the given <i>path</i>. </td></tr>
<!-- index=7 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_hdl_force_time" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">uvm_hdl_force_time</a></td><td class=SDescription>Forces the <i>value</i> on the given <i>path</i> for the specified amount of <i>force_time</i>. </td></tr>
<!-- index=8 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_hdl_release_and_read" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">uvm_hdl_release_and_read</a></td><td class=SDescription>Releases a value previously set with <a href="#uvm_hdl_force" class=LMethod id=link7 onMouseOver="ShowTip(event, 'tt4', 'link7')" onMouseOut="HideTip('tt4')">uvm_hdl_force</a>. </td></tr>
<!-- index=9 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_hdl_release" id=link8 onMouseOver="ShowTip(event, 'tt7', 'link8')" onMouseOut="HideTip('tt7')">uvm_hdl_release</a></td><td class=SDescription>Releases a value previously set with <a href="#uvm_hdl_force" class=LMethod id=link9 onMouseOver="ShowTip(event, 'tt4', 'link9')" onMouseOut="HideTip('tt4')">uvm_hdl_force</a>. </td></tr>
<!-- index=10 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_hdl_read" id=link10 onMouseOver="ShowTip(event, 'tt8', 'link10')" onMouseOut="HideTip('tt8')">uvm_hdl_read()</a></td><td class=SDescription>Gets the value at the given <i>path</i>. </td></tr></table></div></div><!--END_ND_SUMMARY-->
</div></div></div>
<!--CONTENT index=1 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Variables" href="../../src/dpi/uvm_hdl.svh">Variables</a></h3></div></div>
<!--CONTENT index=2 -->
<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="UVM_HDL_MAX_WIDTH" href="../../src/dpi/uvm_hdl.svh">UVM_HDL_MAX_WIDTH</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>parameter int UVM_HDL_MAX_WIDTH = `UVM_HDL_MAX_WIDTH
</td></tr></table></blockquote><div class=CBody><p>Sets the maximum size bit vector for backdoor access.&nbsp; This parameter will be looked up by the DPI-C code using: vpi_handle_by_name( &ldquo;uvm_pkg::UVM_HDL_MAX_WIDTH&rdquo;, 0);</p></div></div></div>
<!--CONTENT index=3 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Methods" href="../../src/dpi/uvm_hdl.svh">Methods</a></h3></div></div>
<!--CONTENT index=4 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_hdl_check_path" href="../../src/dpi/uvm_hdl.svh">uvm_hdl_check_path</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>import &quot;DPI-C&quot; context function int uvm_hdl_check_path(</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>path</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Checks that the given HDL <i>path</i> exists.&nbsp; Returns 0 if NOT found, 1 otherwise.</p></div></div></div>
<!--CONTENT index=5 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_hdl_deposit" href="../../src/dpi/uvm_hdl.svh">uvm_hdl_deposit</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>import &quot;DPI-C&quot; context function int uvm_hdl_deposit(</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>path,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_hdl_data_t&nbsp;</td>
<td class=PParameter nowrap>value</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Sets the given HDL <i>path</i> to the specified <i>value</i>.&nbsp; Returns 1 if the call succeeded, 0 otherwise.</p></div></div></div>
<!--CONTENT index=6 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_hdl_force" href="../../src/dpi/uvm_hdl.svh">uvm_hdl_force</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>import &quot;DPI-C&quot; context function int uvm_hdl_force(</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>path,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_hdl_data_t&nbsp;</td>
<td class=PParameter nowrap>value</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Forces the <i>value</i> on the given <i>path</i>.&nbsp; Returns 1 if the call succeeded, 0 otherwise.</p></div></div></div>
<!--CONTENT index=7 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_hdl_force_time" href="../../src/dpi/uvm_hdl.svh">uvm_hdl_force_time</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>task uvm_hdl_force_time(</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>path,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_hdl_data_t&nbsp;</td>
<td class=PParameter nowrap>value,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
</tr><tr><td></td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>force_time</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Forces the <i>value</i> on the given <i>path</i> for the specified amount of <i>force_time</i>.&nbsp; If <i>force_time</i> is 0, <a href="#uvm_hdl_deposit" class=LMethod id=link11 onMouseOver="ShowTip(event, 'tt3', 'link11')" onMouseOut="HideTip('tt3')">uvm_hdl_deposit</a> is called.&nbsp; Returns 1 if the call succeeded, 0 otherwise.</p></div></div></div>
<!--CONTENT index=8 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_hdl_release_and_read" href="../../src/dpi/uvm_hdl.svh">uvm_hdl_release_and_read</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters colspan=4>import &quot;DPI-C&quot; context function int uvm_hdl_release_and_read(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PTypePrefix nowrap></td>
<td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap width=100%>path,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PTypePrefix nowrap>inout&nbsp;</td>
<td class=PType nowrap>uvm_hdl_data_t&nbsp;</td>
<td class=PParameter nowrap width=100%>value</td>
</tr>
<tr>
<td class=PAfterParameters colspan=4>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Releases a value previously set with <a href="#uvm_hdl_force" class=LMethod id=link12 onMouseOver="ShowTip(event, 'tt4', 'link12')" onMouseOut="HideTip('tt4')">uvm_hdl_force</a>.&nbsp; Returns 1 if the call succeeded, 0 otherwise.&nbsp; <i>value</i> is set to the HDL value after the release.&nbsp; For &lsquo;reg&rsquo;, the value will still be the forced value until it has bee procedurally reassigned.&nbsp; For &lsquo;wire&rsquo;, the value will change immediately to the resolved value of its continuous drivers, if any.&nbsp; If none, its value remains as forced until the next direct assignment.</p></div></div></div>
<!--CONTENT index=9 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_hdl_release" href="../../src/dpi/uvm_hdl.svh">uvm_hdl_release</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>import &quot;DPI-C&quot; context function int uvm_hdl_release(</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>path</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Releases a value previously set with <a href="#uvm_hdl_force" class=LMethod id=link13 onMouseOver="ShowTip(event, 'tt4', 'link13')" onMouseOut="HideTip('tt4')">uvm_hdl_force</a>.&nbsp; Returns 1 if the call succeeded, 0 otherwise.</p></div></div></div>
<!--CONTENT index=10 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_hdl_read" href="../../src/dpi/uvm_hdl.svh">uvm_hdl_read()</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>import &quot;DPI-C&quot; context function int uvm_hdl_read(</td> <td class=PTypePrefix nowrap></td>
<td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>path,</td>
</tr><tr><td></td> <td class=PTypePrefix nowrap>output&nbsp;</td>
<td class=PType nowrap>uvm_hdl_data_t&nbsp;</td>
<td class=PParameter nowrap>value</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Gets the value at the given <i>path</i>.&nbsp; Returns 1 if the call succeeded, 0 otherwise.</p></div></div></div>
</div><!--Content-->
<!--START_ND_TOOLTIPS-->
<div class=CToolTip id="tt1"><div class=CVariable>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>parameter int UVM_HDL_MAX_WIDTH = `UVM_HDL_MAX_WIDTH
</td></tr></table></blockquote>Sets the maximum size bit vector for backdoor access. </div></div><div class=CToolTip id="tt2"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>import &quot;DPI-C&quot; context function int uvm_hdl_check_path(</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>path</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Checks that the given HDL <i>path</i> exists. </div></div><div class=CToolTip id="tt3"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>import &quot;DPI-C&quot; context function int uvm_hdl_deposit(</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>path,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_hdl_data_t&nbsp;</td>
<td class=PParameter nowrap>value</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Sets the given HDL <i>path</i> to the specified <i>value</i>. </div></div><div class=CToolTip id="tt4"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>import &quot;DPI-C&quot; context function int uvm_hdl_force(</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>path,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_hdl_data_t&nbsp;</td>
<td class=PParameter nowrap>value</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Forces the <i>value</i> on the given <i>path</i>. </div></div><div class=CToolTip id="tt5"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>task uvm_hdl_force_time(</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>path,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_hdl_data_t&nbsp;</td>
<td class=PParameter nowrap>value,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
</tr><tr><td></td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>force_time</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Forces the <i>value</i> on the given <i>path</i> for the specified amount of <i>force_time</i>. </div></div><div class=CToolTip id="tt6"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters colspan=4>import &quot;DPI-C&quot; context function int uvm_hdl_release_and_read(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PTypePrefix nowrap></td>
<td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap width=100%>path,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PTypePrefix nowrap>inout&nbsp;</td>
<td class=PType nowrap>uvm_hdl_data_t&nbsp;</td>
<td class=PParameter nowrap width=100%>value</td>
</tr>
<tr>
<td class=PAfterParameters colspan=4>)</td></tr>
</table></td></tr>
</table></blockquote>
Releases a value previously set with uvm_hdl_force. </div></div><div class=CToolTip id="tt7"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>import &quot;DPI-C&quot; context function int uvm_hdl_release(</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>path</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Releases a value previously set with uvm_hdl_force. </div></div><div class=CToolTip id="tt8"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>import &quot;DPI-C&quot; context function int uvm_hdl_read(</td> <td class=PTypePrefix nowrap></td>
<td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>path,</td>
</tr><tr><td></td> <td class=PTypePrefix nowrap>output&nbsp;</td>
<td class=PType nowrap>uvm_hdl_data_t&nbsp;</td>
<td class=PParameter nowrap>value</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Gets the value at the given <i>path</i>. </div></div><!--END_ND_TOOLTIPS-->
<script language=JavaScript><!--
if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>