blob: 243882bba68af39b32d0b6874fa10fc80cec6c2a [file] [log] [blame]
<html><head><title>uvm_sequence #(REQ,RSP)</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="CClass"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="uvm_sequence#(REQ,RSP)" href="../../src/seq/uvm_sequence.svh">uvm_sequence #(REQ,RSP)</a></h1><div class=CBody><p>The uvm_sequence class provides the interfaces necessary in order to create streams of sequence items and/or other sequences.</p>
<!--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="SClass"><td colspan=2 class=SEntry><a href="#uvm_sequence#(REQ,RSP)" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">uvm_sequence #(REQ,RSP)</a></td></tr>
<tr class=SMain><td colspan=2 class=SWideDescription>The uvm_sequence class provides the interfaces necessary in order to create streams of sequence items and/or other sequences.</td></tr>
<!-- HIERARCHY -->
<tr class="SHierarchy SIndent1 "><td colspan=2 class="SEntry SIndent1">Class Hierarchy</td></tr>
<tr class="SPrototype SIndent1"><td colspan=2 class=SDescription>
<div class=ClassHierarchy>
<table border=0 cellspacing=0 cellpadding=0>
<tr><td><div class=CHParent><div class=CHEntry><a href="../base/uvm_misc-svh.html#uvm_void" class=LGeneric id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">uvm_void</a></div></div></td></tr>
<tr><td><div class=CHParent><div class=CHEntry><a href="../base/uvm_object-svh.html#uvm_object" class=LClass id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">uvm_object</a></div></div></td></tr>
<tr><td><div class=CHParent><div class=CHEntry><a href="../base/uvm_transaction-svh.html#uvm_transaction" class=LClass id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">uvm_transaction</a></div></div></td></tr>
<tr><td><div class=CHParent><div class=CHEntry><a href="uvm_sequence_item-svh.html#uvm_sequence_item" class=LClass id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">uvm_sequence_item</a></div></div></td></tr>
<tr><td><div class=CHParent><div class=CHEntry><a href="uvm_sequence_base-svh.html#uvm_sequence_base" class=LClass id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">uvm_sequence_base</a></div></div></td></tr>
<tr><td><div class=CHCurrent><div class=CHEntry>uvm_sequence#(REQ,RSP)</div></div></td></tr>
</table>
</div>
</td></tr>
<!-- PROTOTYPE -->
<tr class="SPrototype SIndent1"><td colspan=2 class="SEntry SIndent1">Class Declaration</td></tr>
<tr class="SPrototype SIndent1"><td colspan=2 class=SDescription>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters colspan=5>virtual class uvm_sequence #(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</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%> uvm_sequence_item,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</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>
</tr>
<tr>
<td class=PAfterParameters colspan=5>) extends uvm_sequence_base</td></tr>
</table></td></tr>
</table></blockquote>
</td></tr>
<!-- index=1 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#uvm_sequence#(REQ,RSP).Methods" >Methods</a></td><td class=SDescription></td></tr>
<!-- index=2 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_sequence#(REQ,RSP).new" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">new</a></td><td class=SDescription>Creates and initializes a new sequence object.</td></tr>
<!-- index=3 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_sequence#(REQ,RSP).send_request" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')">send_request</a></td><td class=SDescription>This method will send the request item to the sequencer, which will forward it to the driver. </td></tr>
<!-- index=4 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_sequence#(REQ,RSP).get_current_item" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')">get_current_item</a></td><td class=SDescription>Returns the request item currently being executed by the sequencer. </td></tr>
<!-- index=5 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_sequence#(REQ,RSP).get_response" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')">get_response</a></td><td class=SDescription>By default, sequences must retrieve responses by calling get_response. </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="uvm_sequence#(REQ,RSP).Methods" href="../../src/seq/uvm_sequence.svh">Methods</a></h3></div></div>
<!--CONTENT index=2 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_sequence#(REQ,RSP).new" href="../../src/seq/uvm_sequence.svh">new</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>function new (</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>name</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> &quot;uvm_sequence&quot;</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Creates and initializes a new sequence object.</p></div></div></div>
<!--CONTENT index=3 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_sequence#(REQ,RSP).send_request" href="../../src/seq/uvm_sequence.svh">send_request</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>function void send_request(</td> <td class=PType nowrap>uvm_sequence_item&nbsp;</td>
<td class=PParameter nowrap>request,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td></td> <td class=PType nowrap>bit&nbsp;</td>
<td class=PParameter nowrap>rerandomize</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> 0</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>This method will send the request item to the sequencer, which will forward it to the driver.&nbsp; If the rerandomize bit is set, the item will be randomized before being sent to the driver.&nbsp; The send_request function may only be called after <a href="uvm_sequence_base-svh.html#uvm_sequence_base.wait_for_grant" class=LMethod id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')">uvm_sequence_base::wait_for_grant</a> returns.</p></div></div></div>
<!--CONTENT index=4 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_sequence#(REQ,RSP).get_current_item" href="../../src/seq/uvm_sequence.svh">get_current_item</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function REQ get_current_item()
</td></tr></table></blockquote><div class=CBody><p>Returns the request item currently being executed by the sequencer.&nbsp; If the sequencer is not currently executing an item, this method will return null.</p><p>The sequencer is executing an item from the time that get_next_item or peek is called until the time that get or item_done is called.</p><p>Note that a driver that only calls get will never show a current item, since the item is completed at the same time as it is requested.</p></div></div></div>
<!--CONTENT index=5 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_sequence#(REQ,RSP).get_response" href="../../src/seq/uvm_sequence.svh">get_response</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>virtual task get_response(</td> <td class=PTypePrefix nowrap>output&nbsp;</td>
<td class=PType nowrap>RSP&nbsp;</td>
<td class=PParameter nowrap>response,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td></td> <td class=PTypePrefix nowrap>input&nbsp;</td>
<td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>transaction_id</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> -1</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>By default, sequences must retrieve responses by calling get_response.&nbsp; If no transaction_id is specified, this task will return the next response sent to this sequence.&nbsp; If no response is available in the response queue, the method will block until a response is recieved.</p><p>If a transaction_id is parameter is specified, the task will block until a response with that transaction_id is received in the response queue.</p><p>The default size of the response queue is 8.&nbsp; The get_response method must be called soon enough to avoid an overflow of the response queue to prevent responses from being dropped.</p><p>If a response is dropped in the response queue, an error will be reported unless the error reporting is disabled via set_response_queue_error_report_disabled.</p></div></div></div>
</div><!--Content-->
<!--START_ND_TOOLTIPS-->
<div class=CToolTip id="tt1"><div class=CGeneric>The <i>uvm_void</i> class is the base class for all UVM classes. </div></div><div class=CToolTip id="tt2"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_object extends uvm_void
</td></tr></table></blockquote>The uvm_object class is the base class for all UVM data and hierarchical classes. </div></div><div class=CToolTip id="tt3"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_transaction extends uvm_object
</td></tr></table></blockquote>The uvm_transaction class is the root base class for UVM transactions. </div></div><div class=CToolTip id="tt4"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_sequence_item extends uvm_transaction
</td></tr></table></blockquote>The base class for user-defined sequence items and also the base class for the uvm_sequence class. </div></div><div class=CToolTip id="tt5"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_sequence_base extends uvm_sequence_item
</td></tr></table></blockquote>The uvm_sequence_base class provides the interfaces needed to create streams of sequence items and/or other sequences.</div></div><div class=CToolTip id="tt6"><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 colspan=5>virtual class uvm_sequence #(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</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%> uvm_sequence_item,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</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>
</tr>
<tr>
<td class=PAfterParameters colspan=5>) extends uvm_sequence_base</td></tr>
</table></td></tr>
</table></blockquote>
The uvm_sequence class provides the interfaces necessary in order to create streams of sequence items and/or other sequences.</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>function new (</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>name</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> &quot;uvm_sequence&quot;</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Creates and initializes a new sequence object.</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>function void send_request(</td> <td class=PType nowrap>uvm_sequence_item&nbsp;</td>
<td class=PParameter nowrap>request,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td></td> <td class=PType nowrap>bit&nbsp;</td>
<td class=PParameter nowrap>rerandomize</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> 0</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
This method will send the request item to the sequencer, which will forward it to the driver. </div></div><div class=CToolTip id="tt9"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function REQ get_current_item()
</td></tr></table></blockquote>Returns the request item currently being executed by the sequencer. </div></div><div class=CToolTip id="tt10"><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>virtual task get_response(</td> <td class=PTypePrefix nowrap>output&nbsp;</td>
<td class=PType nowrap>RSP&nbsp;</td>
<td class=PParameter nowrap>response,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td></td> <td class=PTypePrefix nowrap>input&nbsp;</td>
<td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>transaction_id</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> -1</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
By default, sequences must retrieve responses by calling get_response. </div></div><div class=CToolTip id="tt11"><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>virtual task wait_for_grant(</td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>item_priority</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> -1,</td>
</tr><tr><td></td> <td class=PType nowrap>bit&nbsp;</td>
<td class=PParameter nowrap>lock_request</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> 0</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
This task issues a request to the current sequencer. </div></div><!--END_ND_TOOLTIPS-->
<script language=JavaScript><!--
if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>