blob: d5c3687b8de681efc101705196c9428349a1b839 [file] [log] [blame]
<html><head><title>uvm_*_imp ports</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_*_imp_ports" href="../../src/tlm1/uvm_imps.svh">uvm_*_imp ports</a></h1><div class=CBody><p>The following defines the TLM implementation (imp) classes.</p>
<!--START_ND_SUMMARY index=0-->
<div class=Summary><div class=STitle>Contents</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable>
<!-- index=0 -->
<tr class="SMain"><td class=SEntry><a href="#uvm_*_imp_ports" >uvm_*_imp ports</a></td><td class=SDescription>The following defines the TLM implementation (imp) classes.</td></tr>
<!-- index=1 -->
<tr class="SSMethod SMarked"><td class=SEntry><a href="#uvm_*_imp#(T,IMP)" >uvm_*_imp #(T,IMP)</a></td><td class=SDescription>Unidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected <i>ports</i> and <i>exports</i>. </td></tr>
<!-- index=4 -->
<tr class="SSMethod"><td class=SEntry><a href="#uvm_*_imp#(REQ,RSP,IMP,REQ_IMP,RSP_IMP)" >uvm_*_imp #(REQ, RSP, IMP, REQ_IMP, RSP_IMP)</a></td><td class=SDescription>Bidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected <i>ports</i> and <i>exports</i>. </td></tr></table></div></div><!--END_ND_SUMMARY-->
</div></div></div>
<!--CONTENT index=1 -->
<div class="CClass"><div class=CTopic><h2 class=CTitle><a name="uvm_*_imp#(T,IMP)" href="../../src/tlm1/uvm_imps.svh">uvm_*_imp #(T,IMP)</a></h2><div class=CBody><p>Unidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected <i>ports</i> and <i>exports</i>.&nbsp; Each imp port instance <i>must</i> be connected to the component instance that implements the associated interface, typically the imp port&rsquo;s parent.&nbsp; All other connections-- e.g. to other ports and exports-- are prohibited.</p><p>The asterisk in <i>uvm_*_imp</i> may be any of the following</p><blockquote><pre>blocking_put
nonblocking_put
put
blocking_get
nonblocking_get
get
blocking_peek
nonblocking_peek
peek
blocking_get_peek
nonblocking_get_peek
get_peek</pre></blockquote><p>Type parameters</p><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>T</td><td class=CDLDescription>The type of transaction to be communicated by the imp</td></tr><tr><td class=CDLEntry>IMP</td><td class=CDLDescription>The type of the component implementing the interface.&nbsp; That is, the class to which this imp will delegate.</td></tr></table><p>The interface methods are implemented in a component of type <i>IMP</i>, a handle to which is passed in a constructor argument.&nbsp; The imp port delegates all interface calls to this component.</p>
<!--START_ND_SUMMARY index=1-->
<div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable>
<!-- index=1 -->
<tr class="SClass"><td colspan=2 class=SEntry><a href="#uvm_*_imp#(T,IMP)" >uvm_*_imp #(T,IMP)</a></td></tr>
<tr class=SMain><td colspan=2 class=SWideDescription>Unidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected <i>ports</i> and <i>exports</i>. </td></tr>
<!-- index=2 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#uvm_*_imp#(T,IMP).Methods" >Methods</a></td><td class=SDescription></td></tr>
<!-- index=3 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_*_imp#(T,IMP).new" >new</a></td><td class=SDescription>Creates a new unidirectional imp port with the given <i>name</i> and <i>parent</i>. </td></tr></table></div></div><!--END_ND_SUMMARY-->
</div></div></div>
<!--CONTENT index=2 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="uvm_*_imp#(T,IMP).Methods" href="../../src/tlm1/uvm_imps.svh">Methods</a></h3></div></div>
<!--CONTENT index=3 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_*_imp#(T,IMP).new" href="../../src/tlm1/uvm_imps.svh">new</a></h3><div class=CBody><p>Creates a new unidirectional imp port with the given <i>name</i> and <i>parent</i>.&nbsp; The <i>parent</i> must implement the interface associated with this port.&nbsp; Its type must be the type specified in the imp&rsquo;s type-parameter, <i>IMP</i>.</p><blockquote><pre>function new (string name, IMP parent);</pre></blockquote></div></div></div>
<!--CONTENT index=4 -->
<div class="CClass"><div class=CTopic><h2 class=CTitle><a name="uvm_*_imp#(REQ,RSP,IMP,REQ_IMP,RSP_IMP)" href="../../src/tlm1/uvm_imps.svh">uvm_*_imp #(REQ, RSP, IMP, REQ_IMP, RSP_IMP)</a></h2><div class=CBody><p>Bidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected <i>ports</i> and <i>exports</i>.&nbsp; Each imp port instance <i>must</i> be connected to the component instance that implements the associated interface, typically the imp port&rsquo;s parent.&nbsp; All other connections-- e.g. to other ports and exports-- are prohibited.</p><p>The interface represented by the asterisk is any of the following</p><blockquote><pre>blocking_transport
nonblocking_transport
transport
blocking_master
nonblocking_master
master
blocking_slave
nonblocking_slave
slave</pre></blockquote><p>Type parameters</p><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>REQ</td><td class=CDLDescription>Request transaction type</td></tr><tr><td class=CDLEntry>RSP</td><td class=CDLDescription>Response transaction type</td></tr><tr><td class=CDLEntry>IMP</td><td class=CDLDescription>Component type that implements the interface methods, typically the the parent of this imp port.</td></tr><tr><td class=CDLEntry>REQ_IMP</td><td class=CDLDescription>Component type that implements the request side of the interface.&nbsp; Defaults to IMP.&nbsp; For master and slave imps only.</td></tr><tr><td class=CDLEntry>RSP_IMP</td><td class=CDLDescription>Component type that implements the response side of the interface.&nbsp; Defaults to IMP.&nbsp; For master and slave imps only.</td></tr></table><p>The interface methods are implemented in a component of type <i>IMP</i>, a handle to which is passed in a constructor argument.&nbsp; The imp port delegates all interface calls to this component.</p><p>The master and slave imps have two modes of operation.</p><ul><li>A single component of type IMP implements the entire interface for both requests and responses.</li><li>Two sibling components of type REQ_IMP and RSP_IMP implement the request and response interfaces, respectively.&nbsp; In this case, the IMP parent instantiates this imp port <i>and</i> the REQ_IMP and RSP_IMP components.</li></ul><p>The second mode is needed when a component instantiates more than one imp port, as in the <a href="uvm_tlm_req_rsp-svh.html#uvm_tlm_req_rsp_channel#(REQ,RSP)" class=LClass id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">uvm_tlm_req_rsp_channel #(REQ,RSP)</a> channel.</p>
<!--START_ND_SUMMARY index=4-->
<div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable>
<!-- index=4 -->
<tr class="SClass"><td colspan=2 class=SEntry><a href="#uvm_*_imp#(REQ,RSP,IMP,REQ_IMP,RSP_IMP)" >uvm_*_imp #(REQ, RSP, IMP, REQ_IMP, RSP_IMP)</a></td></tr>
<tr class=SMain><td colspan=2 class=SWideDescription>Bidirectional implementation (imp) port classes--An imp port provides access to an implementation of the associated interface to all connected <i>ports</i> and <i>exports</i>. </td></tr>
<!-- index=5 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#uvm_*_imp#(REQ,RSP,IMP,REQ_IMP,RSP_IMP).Methods" >Methods</a></td><td class=SDescription></td></tr>
<!-- index=6 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_*_imp#(REQ,RSP,IMP,REQ_IMP,RSP_IMP).new" >new</a></td><td class=SDescription>Creates a new bidirectional imp port with the given <i>name</i> and <i>parent</i>. </td></tr></table></div></div><!--END_ND_SUMMARY-->
</div></div></div>
<!--CONTENT index=5 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="uvm_*_imp#(REQ,RSP,IMP,REQ_IMP,RSP_IMP).Methods" href="../../src/tlm1/uvm_imps.svh">Methods</a></h3></div></div>
<!--CONTENT index=6 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_*_imp#(REQ,RSP,IMP,REQ_IMP,RSP_IMP).new" href="../../src/tlm1/uvm_imps.svh">new</a></h3><div class=CBody><p>Creates a new bidirectional imp port with the given <i>name</i> and <i>parent</i>.&nbsp; The <i>parent</i>, whose type is specified by <i>IMP</i> type parameter, must implement the interface associated with this port.</p><p>Transport imp constructor</p><blockquote><pre>function new(string name, IMP imp)</pre></blockquote><p>Master and slave imp constructor</p><p>The optional <i>req_imp</i> and <i>rsp_imp</i> arguments, available to master and slave imp ports, allow the requests and responses to be handled by different subcomponents.&nbsp; If they are specified, they must point to the underlying component that implements the request and response methods, respectively.</p><blockquote><pre>function new(string name, IMP imp,
REQ_IMP req_imp=imp, RSP_IMP rsp_imp=imp)</pre></blockquote></div></div></div>
</div><!--Content-->
<!--START_ND_TOOLTIPS-->
<div class=CToolTip id="tt1"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>class uvm_tlm_req_rsp_channel #(</td> <td class=PType nowrap>type&nbsp;</td>
<td class=PParameter nowrap>REQ</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>int,</td>
</tr><tr><td></td> <td class=PType nowrap>type&nbsp;</td>
<td class=PParameter nowrap>RSP</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>REQ</td>
<td class=PAfterParameters nowrap>) extends uvm_component</td></tr>
</table></td></tr>
</table></blockquote>
The uvm_tlm_req_rsp_channel contains a request FIFO of type <i>REQ</i> and a response FIFO of type <i>RSP</i>. </div></div><!--END_ND_TOOLTIPS-->
<script language=JavaScript><!--
if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>