blob: edf0385b063b4251cff2ba565bd9d13fffcd2ea6 [file] [log] [blame]
<html><head><title>uvm_transaction</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_transaction" href="../../src/base/uvm_transaction.svh">uvm_transaction</a></h1><div class=CBody><p>The uvm_transaction class is the root base class for UVM transactions.&nbsp; Inheriting all the methods of uvm_object, uvm_transaction adds a timing and recording interface.</p><p>This class provides timestamp properties, notification events, and transaction recording support.</p><p>Use of this class as a base for user-defined transactions is deprecated.&nbsp; Its subtype, <a href="../seq/uvm_sequence_item-svh.html#uvm_sequence_item" class=LClass id=link42 onMouseOver="ShowTip(event, 'tt31', 'link42')" onMouseOut="HideTip('tt31')">uvm_sequence_item</a>, shall be used as the base class for all user-defined transaction types.</p><p>The intended use of this API is via a &lt;uvm_driver&gt; to call <a href="uvm_component-svh.html#uvm_component.accept_tr" class=LMethod id=link43 onMouseOver="ShowTip(event, 'tt32', 'link43')" onMouseOut="HideTip('tt32')">uvm_component::accept_tr</a>, <a href="uvm_component-svh.html#uvm_component.begin_tr" class=LMethod id=link44 onMouseOver="ShowTip(event, 'tt28', 'link44')" onMouseOut="HideTip('tt28')">uvm_component::begin_tr</a>, and <a href="uvm_component-svh.html#uvm_component.end_tr" class=LMethod id=link45 onMouseOver="ShowTip(event, 'tt30', 'link45')" onMouseOut="HideTip('tt30')">uvm_component::end_tr</a> during the course of sequence item execution.&nbsp; These methods in the component base class will call into the corresponding methods in this class to set the corresponding timestamps (accept_time, begin_time, and end_tr), trigger the corresponding event (<a href="#uvm_transaction.begin_event" class=LVariable id=link46 onMouseOver="ShowTip(event, 'tt26', 'link46')" onMouseOut="HideTip('tt26')">begin_event</a> and <a href="#uvm_transaction.end_event" class=LVariable id=link47 onMouseOver="ShowTip(event, 'tt29', 'link47')" onMouseOut="HideTip('tt29')">end_event</a>, and, if enabled, record the transaction contents to a vendor-specific transaction database.</p><p>Note that start_item/finish_item (or `uvm_do* macro) executed from a <a href="../seq/uvm_sequence-svh.html#uvm_sequence#(REQ,RSP)" class=LClass id=link48 onMouseOver="ShowTip(event, 'tt33', 'link48')" onMouseOut="HideTip('tt33')">uvm_sequence #(REQ,RSP)</a> will automatically trigger the begin_event and end_events via calls to begin_tr and end_tr.&nbsp; While convenient, it is generally the responsibility of drivers to mark a transaction&rsquo;s progress during execution.&nbsp; To allow the driver to control sequence item timestamps, events, and recording, you must add +define+UVM_DISABLE_AUTO_ITEM_RECORDING when compiling the UVM package.&nbsp; Alternatively, users may use the transaction&rsquo;s event pool, <a href="#uvm_transaction.events" class=LVariable id=link49 onMouseOver="ShowTip(event, 'tt25', 'link49')" onMouseOut="HideTip('tt25')">events</a>, to define custom events for the driver to trigger and the sequences to wait on.&nbsp; Any in-between events such as marking the begining of the address and data phases of transaction execution could be implemented via the <a href="#uvm_transaction.events" class=LVariable id=link50 onMouseOver="ShowTip(event, 'tt25', 'link50')" onMouseOut="HideTip('tt25')">events</a> pool.</p><p>In pipelined protocols, the driver may release a sequence (return from finish_item() or it&rsquo;s `uvm_do macro) before the item has been completed.&nbsp; If the driver uses the begin_tr/end_tr API in uvm_component, the sequence can wait on the item&rsquo;s <a href="#uvm_transaction.end_event" class=LVariable id=link51 onMouseOver="ShowTip(event, 'tt29', 'link51')" onMouseOut="HideTip('tt29')">end_event</a> to block until the item was fully executed, as in the following example.</p><blockquote><pre>task uvm_execute(item, ...);
// can use the `uvm_do macros as well
start_item(item);
item.randomize();
finish_item(item);
item.end_event.wait_on();
// get_response(rsp, item.get_transaction_id()); //if needed
endtask</pre></blockquote><p>A simple two-stage pipeline driver that can execute address and data phases concurrently might be implemented as follows:</p><blockquote><pre>task run();
// this driver supports a two-deep pipeline
fork
do_item();
do_item();
join
endtask
task do_item();
forever begin
mbus_item req;
lock.get();
seq_item_port.get(req); // Completes the sequencer-driver handshake
accept_tr(req);
// request bus, wait for grant, etc.
begin_tr(req);
// execute address phase
// allows next transaction to begin address phase
lock.put();
// execute data phase
// (may trigger custom &quot;data_phase&quot; event here)
end_tr(req);
end
endtask: do_item</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="SClass"><td colspan=2 class=SEntry><a href="#uvm_transaction" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">uvm_transaction</a></td></tr>
<tr class=SMain><td colspan=2 class=SWideDescription>The uvm_transaction class is the root base class for UVM transactions. </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="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="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=CHCurrent><div class=CHEntry>uvm_transaction</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>virtual class uvm_transaction extends uvm_object
</td></tr></table></blockquote></td></tr>
<!-- index=1 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#uvm_transaction.Methods" >Methods</a></td><td class=SDescription></td></tr>
<!-- index=2 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_transaction.new" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">new</a></td><td class=SDescription>Creates a new transaction object. </td></tr>
<!-- index=3 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_transaction.accept_tr" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">accept_tr</a></td><td class=SDescription>Calling <i>accept_tr</i> indicates that the transaction item has been received by a consumer component. </td></tr>
<!-- index=4 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_transaction.do_accept_tr" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">do_accept_tr</a></td><td class=SDescription>This user-definable callback is called by <a href="#uvm_transaction.accept_tr" class=LMethod id=link7 onMouseOver="ShowTip(event, 'tt5', 'link7')" onMouseOut="HideTip('tt5')">accept_tr</a> just before the accept event is triggered. </td></tr>
<!-- index=5 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_transaction.begin_tr" id=link8 onMouseOver="ShowTip(event, 'tt7', 'link8')" onMouseOut="HideTip('tt7')">begin_tr</a></td><td class=SDescription>This function indicates that the transaction has been started and is not the child of another transaction. </td></tr>
<!-- index=6 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_transaction.begin_child_tr" id=link9 onMouseOver="ShowTip(event, 'tt8', 'link9')" onMouseOut="HideTip('tt8')">begin_child_tr</a></td><td class=SDescription>This function indicates that the transaction has been started as a child of a parent transaction given by <i>parent_handle</i>. </td></tr>
<!-- index=7 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_transaction.do_begin_tr" id=link10 onMouseOver="ShowTip(event, 'tt9', 'link10')" onMouseOut="HideTip('tt9')">do_begin_tr</a></td><td class=SDescription>This user-definable callback is called by <a href="#uvm_transaction.begin_tr" class=LMethod id=link11 onMouseOver="ShowTip(event, 'tt7', 'link11')" onMouseOut="HideTip('tt7')">begin_tr</a> and <a href="#uvm_transaction.begin_child_tr" class=LMethod id=link12 onMouseOver="ShowTip(event, 'tt8', 'link12')" onMouseOut="HideTip('tt8')">begin_child_tr</a> just before the begin event is triggered. </td></tr>
<!-- index=8 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_transaction.end_tr" id=link13 onMouseOver="ShowTip(event, 'tt10', 'link13')" onMouseOut="HideTip('tt10')">end_tr</a></td><td class=SDescription>This function indicates that the transaction execution has ended. </td></tr>
<!-- index=9 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_transaction.do_end_tr" id=link14 onMouseOver="ShowTip(event, 'tt11', 'link14')" onMouseOut="HideTip('tt11')">do_end_tr</a></td><td class=SDescription>This user-definable callback is called by <a href="#uvm_transaction.end_tr" class=LMethod id=link15 onMouseOver="ShowTip(event, 'tt10', 'link15')" onMouseOut="HideTip('tt10')">end_tr</a> just before the end event is triggered. </td></tr>
<!-- index=10 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_transaction.get_tr_handle" id=link16 onMouseOver="ShowTip(event, 'tt12', 'link16')" onMouseOut="HideTip('tt12')">get_tr_handle</a></td><td class=SDescription>Returns the handle associated with the transaction, as set by a previous call to <a href="#uvm_transaction.begin_child_tr" class=LMethod id=link17 onMouseOver="ShowTip(event, 'tt8', 'link17')" onMouseOut="HideTip('tt8')">begin_child_tr</a> or <a href="#uvm_transaction.begin_tr" class=LMethod id=link18 onMouseOver="ShowTip(event, 'tt7', 'link18')" onMouseOut="HideTip('tt7')">begin_tr</a> with transaction recording enabled.</td></tr>
<!-- index=11 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_transaction.disable_recording" id=link19 onMouseOver="ShowTip(event, 'tt13', 'link19')" onMouseOut="HideTip('tt13')">disable_recording</a></td><td class=SDescription>Turns off recording for the transaction stream. </td></tr>
<!-- index=12 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_transaction.enable_recording" id=link20 onMouseOver="ShowTip(event, 'tt14', 'link20')" onMouseOut="HideTip('tt14')">enable_recording</a></td><td class=SDescription>Turns on recording to the stream specified by stream, whose interpretation is implementation specific. </td></tr>
<!-- index=13 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_transaction.is_recording_enabled" id=link21 onMouseOver="ShowTip(event, 'tt15', 'link21')" onMouseOut="HideTip('tt15')">is_recording_enabled</a></td><td class=SDescription>Returns 1 if recording is currently on, 0 otherwise.</td></tr>
<!-- index=14 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_transaction.is_active" id=link22 onMouseOver="ShowTip(event, 'tt16', 'link22')" onMouseOut="HideTip('tt16')">is_active</a></td><td class=SDescription>Returns 1 if the transaction has been started but has not yet been ended. </td></tr>
<!-- index=15 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_transaction.get_event_pool" id=link23 onMouseOver="ShowTip(event, 'tt17', 'link23')" onMouseOut="HideTip('tt17')">get_event_pool</a></td><td class=SDescription>Returns the event pool associated with this transaction.</td></tr>
<!-- index=16 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_transaction.set_initiator" id=link24 onMouseOver="ShowTip(event, 'tt18', 'link24')" onMouseOut="HideTip('tt18')">set_initiator</a></td><td class=SDescription>Sets initiator as the initiator of this transaction.</td></tr>
<!-- index=17 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_transaction.get_initiator" id=link25 onMouseOver="ShowTip(event, 'tt19', 'link25')" onMouseOut="HideTip('tt19')">get_initiator</a></td><td class=SDescription>Returns the component that produced or started the transaction, as set by a previous call to set_initiator.</td></tr>
<!-- index=18 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_transaction.get_accept_time" id=link26 onMouseOver="ShowTip(event, 'tt20', 'link26')" onMouseOut="HideTip('tt20')">get_accept_time</a></td><td class=SDescription></td></tr>
<!-- index=19 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_transaction.get_begin_time" id=link27 onMouseOver="ShowTip(event, 'tt21', 'link27')" onMouseOut="HideTip('tt21')">get_begin_time</a></td><td class=SDescription></td></tr>
<!-- index=20 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_transaction.get_end_time" id=link28 onMouseOver="ShowTip(event, 'tt22', 'link28')" onMouseOut="HideTip('tt22')">get_end_time</a></td><td class=SDescription>Returns the time at which this transaction was accepted, begun, or ended, as by a previous call to <a href="#uvm_transaction.accept_tr" class=LMethod id=link29 onMouseOver="ShowTip(event, 'tt5', 'link29')" onMouseOut="HideTip('tt5')">accept_tr</a>, <a href="#uvm_transaction.begin_tr" class=LMethod id=link30 onMouseOver="ShowTip(event, 'tt7', 'link30')" onMouseOut="HideTip('tt7')">begin_tr</a>, <a href="#uvm_transaction.begin_child_tr" class=LMethod id=link31 onMouseOver="ShowTip(event, 'tt8', 'link31')" onMouseOut="HideTip('tt8')">begin_child_tr</a>, or <a href="#uvm_transaction.end_tr" class=LMethod id=link32 onMouseOver="ShowTip(event, 'tt10', 'link32')" onMouseOut="HideTip('tt10')">end_tr</a>.</td></tr>
<!-- index=21 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_transaction.set_transaction_id" id=link33 onMouseOver="ShowTip(event, 'tt23', 'link33')" onMouseOut="HideTip('tt23')">set_transaction_id</a></td><td class=SDescription>Sets this transaction&rsquo;s numeric identifier to id. </td></tr>
<!-- index=22 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_transaction.get_transaction_id" id=link34 onMouseOver="ShowTip(event, 'tt24', 'link34')" onMouseOut="HideTip('tt24')">get_transaction_id</a></td><td class=SDescription>Returns this transaction&rsquo;s numeric identifier, which is -1 if not set explicitly by <i>set_transaction_id</i>.</td></tr>
<!-- index=23 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#uvm_transaction.Variables" >Variables</a></td><td class=SDescription></td></tr>
<!-- index=24 -->
<tr class="SVariable SIndent2"><td class=SEntry><a href="#uvm_transaction.events" id=link35 onMouseOver="ShowTip(event, 'tt25', 'link35')" onMouseOut="HideTip('tt25')">events</a></td><td class=SDescription>The event pool instance for this transaction. </td></tr>
<!-- index=25 -->
<tr class="SVariable SIndent2 SMarked"><td class=SEntry><a href="#uvm_transaction.begin_event" id=link36 onMouseOver="ShowTip(event, 'tt26', 'link36')" onMouseOut="HideTip('tt26')">begin_event</a></td><td class=SDescription>A <a href="uvm_event-svh.html#uvm_event" class=LClass id=link37 onMouseOver="ShowTip(event, 'tt27', 'link37')" onMouseOut="HideTip('tt27')">uvm_event</a> that is triggered when this transaction&rsquo;s actual execution on the bus begins, typically as a result of a driver calling <a href="uvm_component-svh.html#uvm_component.begin_tr" class=LMethod id=link38 onMouseOver="ShowTip(event, 'tt28', 'link38')" onMouseOut="HideTip('tt28')">uvm_component::begin_tr</a>. </td></tr>
<!-- index=26 -->
<tr class="SVariable SIndent2"><td class=SEntry><a href="#uvm_transaction.end_event" id=link39 onMouseOver="ShowTip(event, 'tt29', 'link39')" onMouseOut="HideTip('tt29')">end_event</a></td><td class=SDescription>A <a href="uvm_event-svh.html#uvm_event" class=LClass id=link40 onMouseOver="ShowTip(event, 'tt27', 'link40')" onMouseOut="HideTip('tt27')">uvm_event</a> that is triggered when this transaction&rsquo;s actual execution on the bus ends, typically as a result of a driver calling <a href="uvm_component-svh.html#uvm_component.end_tr" class=LMethod id=link41 onMouseOver="ShowTip(event, 'tt30', 'link41')" onMouseOut="HideTip('tt30')">uvm_component::end_tr</a>. </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_transaction.Methods" href="../../src/base/uvm_transaction.svh">Methods</a></h3></div></div>
<!--CONTENT index=2 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.new" href="../../src/base/uvm_transaction.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;&quot;,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_component&nbsp;</td>
<td class=PParameter nowrap>initiator</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Creates a new transaction object.&nbsp; The name is the instance name of the transaction.&nbsp; If not supplied, then the object is unnamed.</p></div></div></div>
<!--CONTENT index=3 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.accept_tr" href="../../src/base/uvm_transaction.svh">accept_tr</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 accept_tr (</td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>accept_time</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Calling <i>accept_tr</i> indicates that the transaction item has been received by a consumer component.&nbsp; Typically a &lt;uvm_driver&gt; would call <a href="uvm_component-svh.html#uvm_component.accept_tr" class=LMethod id=link52 onMouseOver="ShowTip(event, 'tt32', 'link52')" onMouseOut="HideTip('tt32')">uvm_component::accept_tr</a>, which calls this method-- upon return from a get_next_item(), get(), or peek() call on its sequencer port, &lt;uvm_driver::seq_item_port&gt;.</p><p>With some protocols, the received item may not be started immediately after it is accepted.&nbsp; For example, a bus driver, having accepted a request transaction, may still have to wait for a bus grant before begining to execute the request.</p><h4 class=CHeading>This function performs the following actions</h4><ul><li>The transaction&rsquo;s internal accept time is set to the current simulation time, or to accept_time if provided and non-zero.&nbsp; The <i>accept_time</i> may be any time, past or future.</li><li>The transaction&rsquo;s internal accept event is triggered.&nbsp; Any processes waiting on the this event will resume in the next delta cycle.</li><li>The <a href="#uvm_transaction.do_accept_tr" class=LMethod id=link53 onMouseOver="ShowTip(event, 'tt6', 'link53')" onMouseOut="HideTip('tt6')">do_accept_tr</a> method is called to allow for any post-accept action in derived classes.</li></ul></div></div></div>
<!--CONTENT index=4 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.do_accept_tr" href="../../src/base/uvm_transaction.svh">do_accept_tr</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual protected function void do_accept_tr ()
</td></tr></table></blockquote><div class=CBody><p>This user-definable callback is called by <a href="#uvm_transaction.accept_tr" class=LMethod id=link54 onMouseOver="ShowTip(event, 'tt5', 'link54')" onMouseOut="HideTip('tt5')">accept_tr</a> just before the accept event is triggered.&nbsp; Implementations should call <i>super.do_accept_tr</i> to ensure correct operation.</p></div></div></div>
<!--CONTENT index=5 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.begin_tr" href="../../src/base/uvm_transaction.svh">begin_tr</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 integer begin_tr (</td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>begin_time</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>This function indicates that the transaction has been started and is not the child of another transaction.&nbsp; Generally, a consumer component begins execution of a transactions it receives.</p><p>Typically a &lt;uvm_driver&gt; would call <a href="uvm_component-svh.html#uvm_component.begin_tr" class=LMethod id=link55 onMouseOver="ShowTip(event, 'tt28', 'link55')" onMouseOut="HideTip('tt28')">uvm_component::begin_tr</a>, which calls this method, before actual execution of a sequence item transaction.&nbsp; Sequence items received by a driver are always a child of a parent sequence.&nbsp; In this case, begin_tr obtains the parent handle and delegates to <a href="#uvm_transaction.begin_child_tr" class=LMethod id=link56 onMouseOver="ShowTip(event, 'tt8', 'link56')" onMouseOut="HideTip('tt8')">begin_child_tr</a>.</p><p>See <a href="#uvm_transaction.accept_tr" class=LMethod id=link57 onMouseOver="ShowTip(event, 'tt5', 'link57')" onMouseOut="HideTip('tt5')">accept_tr</a> for more information on how the begin-time might differ from when the transaction item was received.</p><h4 class=CHeading>This function performs the following actions</h4><ul><li>The transaction&rsquo;s internal start time is set to the current simulation time, or to begin_time if provided and non-zero.&nbsp; The begin_time may be any time, past or future, but should not be less than the accept time.</li><li>If recording is enabled, then a new database-transaction is started with the same begin time as above.</li><li>The <a href="#uvm_transaction.do_begin_tr" class=LMethod id=link58 onMouseOver="ShowTip(event, 'tt9', 'link58')" onMouseOut="HideTip('tt9')">do_begin_tr</a> method is called to allow for any post-begin action in derived classes.</li><li>The transaction&rsquo;s internal begin event is triggered.&nbsp; Any processes waiting on this event will resume in the next delta cycle.</li></ul><p>The return value is a transaction handle, which is valid (non-zero) only if recording is enabled.&nbsp; The meaning of the handle is implementation specific.</p></div></div></div>
<!--CONTENT index=6 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.begin_child_tr" href="../../src/base/uvm_transaction.svh">begin_child_tr</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 integer begin_child_tr (</td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>begin_time</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>0,</td>
</tr><tr><td></td> <td class=PType nowrap>integer&nbsp;</td>
<td class=PParameter nowrap>parent_handle</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 function indicates that the transaction has been started as a child of a parent transaction given by <i>parent_handle</i>.&nbsp; Generally, a consumer component calls this method via <a href="uvm_component-svh.html#uvm_component.begin_child_tr" class=LMethod id=link59 onMouseOver="ShowTip(event, 'tt34', 'link59')" onMouseOut="HideTip('tt34')">uvm_component::begin_child_tr</a> to indicate the actual start of execution of this transaction.</p><p>The parent handle is obtained by a previous call to begin_tr or begin_child_tr.&nbsp; If the parent_handle is invalid (=0), then this function behaves the same as <a href="#uvm_transaction.begin_tr" class=LMethod id=link60 onMouseOver="ShowTip(event, 'tt7', 'link60')" onMouseOut="HideTip('tt7')">begin_tr</a>.</p><h4 class=CHeading>This function performs the following actions</h4><ul><li>The transaction&rsquo;s internal start time is set to the current simulation time, or to begin_time if provided and non-zero.&nbsp; The begin_time may be any time, past or future, but should not be less than the accept time.</li><li>If recording is enabled, then a new database-transaction is started with the same begin time as above.&nbsp; The record method inherited from <a href="uvm_object-svh.html#uvm_object" class=LClass id=link61 onMouseOver="ShowTip(event, 'tt2', 'link61')" onMouseOut="HideTip('tt2')">uvm_object</a> is then called, which records the current property values to this new transaction.&nbsp; Finally, the newly started transaction is linked to the parent transaction given by parent_handle.</li><li>The <a href="#uvm_transaction.do_begin_tr" class=LMethod id=link62 onMouseOver="ShowTip(event, 'tt9', 'link62')" onMouseOut="HideTip('tt9')">do_begin_tr</a> method is called to allow for any post-begin action in derived classes.</li><li>The transaction&rsquo;s internal begin event is triggered.&nbsp; Any processes waiting on this event will resume in the next delta cycle.</li></ul><p>The return value is a transaction handle, which is valid (non-zero) only if recording is enabled.&nbsp; The meaning of the handle is implementation specific.</p></div></div></div>
<!--CONTENT index=7 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.do_begin_tr" href="../../src/base/uvm_transaction.svh">do_begin_tr</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual protected function void do_begin_tr ()
</td></tr></table></blockquote><div class=CBody><p>This user-definable callback is called by <a href="#uvm_transaction.begin_tr" class=LMethod id=link63 onMouseOver="ShowTip(event, 'tt7', 'link63')" onMouseOut="HideTip('tt7')">begin_tr</a> and <a href="#uvm_transaction.begin_child_tr" class=LMethod id=link64 onMouseOver="ShowTip(event, 'tt8', 'link64')" onMouseOut="HideTip('tt8')">begin_child_tr</a> just before the begin event is triggered.&nbsp; Implementations should call <i>super.do_begin_tr</i> to ensure correct operation.</p></div></div></div>
<!--CONTENT index=8 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.end_tr" href="../../src/base/uvm_transaction.svh">end_tr</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 end_tr (</td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>end_time</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>0,</td>
</tr><tr><td></td> <td class=PType nowrap>bit&nbsp;</td>
<td class=PParameter nowrap>free_handle</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>This function indicates that the transaction execution has ended.&nbsp; Generally, a consumer component ends execution of the transactions it receives.</p><p>You must have previously called <a href="#uvm_transaction.begin_tr" class=LMethod id=link65 onMouseOver="ShowTip(event, 'tt7', 'link65')" onMouseOut="HideTip('tt7')">begin_tr</a> or <a href="#uvm_transaction.begin_child_tr" class=LMethod id=link66 onMouseOver="ShowTip(event, 'tt8', 'link66')" onMouseOut="HideTip('tt8')">begin_child_tr</a> for this call to be successful.</p><p>Typically a &lt;uvm_driver&gt; would call <a href="uvm_component-svh.html#uvm_component.end_tr" class=LMethod id=link67 onMouseOver="ShowTip(event, 'tt30', 'link67')" onMouseOut="HideTip('tt30')">uvm_component::end_tr</a>, which calls this method, upon completion of a sequence item transaction.&nbsp; Sequence items received by a driver are always a child of a parent sequence.&nbsp; In this case, begin_tr obtain the parent handle and delegate to <a href="#uvm_transaction.begin_child_tr" class=LMethod id=link68 onMouseOver="ShowTip(event, 'tt8', 'link68')" onMouseOut="HideTip('tt8')">begin_child_tr</a>.</p><h4 class=CHeading>This function performs the following actions</h4><ul><li>The transaction&rsquo;s internal end time is set to the current simulation time, or to <i>end_time</i> if provided and non-zero.&nbsp; The <i>end_time</i> may be any time, past or future, but should not be less than the begin time.</li><li>If recording is enabled and a database-transaction is currently active, then the record method inherited from uvm_object is called, which records the final property values.&nbsp; The transaction is then ended.&nbsp; If <i>free_handle</i> is set, the transaction is released and can no longer be linked to (if supported by the implementation).</li><li>The <a href="#uvm_transaction.do_end_tr" class=LMethod id=link69 onMouseOver="ShowTip(event, 'tt11', 'link69')" onMouseOut="HideTip('tt11')">do_end_tr</a> method is called to allow for any post-end action in derived classes.</li><li>The transaction&rsquo;s internal end event is triggered.&nbsp; Any processes waiting on this event will resume in the next delta cycle.</li></ul></div></div></div>
<!--CONTENT index=9 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.do_end_tr" href="../../src/base/uvm_transaction.svh">do_end_tr</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual protected function void do_end_tr ()
</td></tr></table></blockquote><div class=CBody><p>This user-definable callback is called by <a href="#uvm_transaction.end_tr" class=LMethod id=link70 onMouseOver="ShowTip(event, 'tt10', 'link70')" onMouseOut="HideTip('tt10')">end_tr</a> just before the end event is triggered.&nbsp; Implementations should call <i>super.do_end_tr</i> to ensure correct operation.</p></div></div></div>
<!--CONTENT index=10 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.get_tr_handle" href="../../src/base/uvm_transaction.svh">get_tr_handle</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function integer get_tr_handle ()
</td></tr></table></blockquote><div class=CBody><p>Returns the handle associated with the transaction, as set by a previous call to <a href="#uvm_transaction.begin_child_tr" class=LMethod id=link71 onMouseOver="ShowTip(event, 'tt8', 'link71')" onMouseOut="HideTip('tt8')">begin_child_tr</a> or <a href="#uvm_transaction.begin_tr" class=LMethod id=link72 onMouseOver="ShowTip(event, 'tt7', 'link72')" onMouseOut="HideTip('tt7')">begin_tr</a> with transaction recording enabled.</p></div></div></div>
<!--CONTENT index=11 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.disable_recording" href="../../src/base/uvm_transaction.svh">disable_recording</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function void disable_recording ()
</td></tr></table></blockquote><div class=CBody><p>Turns off recording for the transaction stream.&nbsp; This method does not effect a <a href="uvm_component-svh.html#uvm_component" class=LClass id=link73 onMouseOver="ShowTip(event, 'tt35', 'link73')" onMouseOut="HideTip('tt35')">uvm_component</a>&rsquo;s recording streams.</p></div></div></div>
<!--CONTENT index=12 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.enable_recording" href="../../src/base/uvm_transaction.svh">enable_recording</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 enable_recording (</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>stream,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td></td> <td class=PType nowrap>uvm_recorder&nbsp;</td>
<td class=PParameter nowrap>recorder</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Turns on recording to the stream specified by stream, whose interpretation is implementation specific.&nbsp; The optional <i>recorder</i> argument specifies</p><p>If transaction recording is on, then a call to record is made when the transaction is started and when it is ended.</p></div></div></div>
<!--CONTENT index=13 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.is_recording_enabled" href="../../src/base/uvm_transaction.svh">is_recording_enabled</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function bit is_recording_enabled()
</td></tr></table></blockquote><div class=CBody><p>Returns 1 if recording is currently on, 0 otherwise.</p></div></div></div>
<!--CONTENT index=14 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.is_active" href="../../src/base/uvm_transaction.svh">is_active</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function bit is_active ()
</td></tr></table></blockquote><div class=CBody><p>Returns 1 if the transaction has been started but has not yet been ended.&nbsp; Returns 0 if the transaction has not been started.</p></div></div></div>
<!--CONTENT index=15 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.get_event_pool" href="../../src/base/uvm_transaction.svh">get_event_pool</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function uvm_event_pool get_event_pool ()
</td></tr></table></blockquote><div class=CBody><p>Returns the event pool associated with this transaction.</p><p>By default, the event pool contains the events: begin, accept, and end.&nbsp; Events can also be added by derivative objects.&nbsp; An event pool is a specialization of an &lt;uvm_pool #(T)&gt;, e.g. a <i>uvm_pool#(uvm_event)</i>.</p></div></div></div>
<!--CONTENT index=16 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.set_initiator" href="../../src/base/uvm_transaction.svh">set_initiator</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 set_initiator (</td> <td class=PType nowrap>uvm_component&nbsp;</td>
<td class=PParameter nowrap>initiator</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Sets initiator as the initiator of this transaction.</p><p>The initiator can be the component that produces the transaction.&nbsp; It can also be the component that started the transaction.&nbsp; This or any other usage is up to the transaction designer.</p></div></div></div>
<!--CONTENT index=17 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.get_initiator" href="../../src/base/uvm_transaction.svh">get_initiator</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function uvm_component get_initiator ()
</td></tr></table></blockquote><div class=CBody><p>Returns the component that produced or started the transaction, as set by a previous call to set_initiator.</p></div></div></div>
<!--CONTENT index=18 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.get_accept_time" href="../../src/base/uvm_transaction.svh">get_accept_time</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function time get_accept_time ()
</td></tr></table></blockquote><div class=CBody></div></div></div>
<!--CONTENT index=19 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.get_begin_time" href="../../src/base/uvm_transaction.svh">get_begin_time</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function time get_begin_time ()
</td></tr></table></blockquote><div class=CBody></div></div></div>
<!--CONTENT index=20 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.get_end_time" href="../../src/base/uvm_transaction.svh">get_end_time</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function time get_end_time ()
</td></tr></table></blockquote><div class=CBody><p>Returns the time at which this transaction was accepted, begun, or ended, as by a previous call to <a href="#uvm_transaction.accept_tr" class=LMethod id=link74 onMouseOver="ShowTip(event, 'tt5', 'link74')" onMouseOut="HideTip('tt5')">accept_tr</a>, <a href="#uvm_transaction.begin_tr" class=LMethod id=link75 onMouseOver="ShowTip(event, 'tt7', 'link75')" onMouseOut="HideTip('tt7')">begin_tr</a>, <a href="#uvm_transaction.begin_child_tr" class=LMethod id=link76 onMouseOver="ShowTip(event, 'tt8', 'link76')" onMouseOut="HideTip('tt8')">begin_child_tr</a>, or <a href="#uvm_transaction.end_tr" class=LMethod id=link77 onMouseOver="ShowTip(event, 'tt10', 'link77')" onMouseOut="HideTip('tt10')">end_tr</a>.</p></div></div></div>
<!--CONTENT index=21 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.set_transaction_id" href="../../src/base/uvm_transaction.svh">set_transaction_id</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 set_transaction_id(</td> <td class=PType nowrap>integer&nbsp;</td>
<td class=PParameter nowrap>id</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Sets this transaction&rsquo;s numeric identifier to id.&nbsp; If not set via this method, the transaction ID defaults to -1.</p><p>When using sequences to generate stimulus, the transaction ID is used along with the sequence ID to route responses in sequencers and to correlate responses to requests.</p></div></div></div>
<!--CONTENT index=22 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.get_transaction_id" href="../../src/base/uvm_transaction.svh">get_transaction_id</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function integer get_transaction_id()
</td></tr></table></blockquote><div class=CBody><p>Returns this transaction&rsquo;s numeric identifier, which is -1 if not set explicitly by <i>set_transaction_id</i>.</p><p>When using a <a href="../seq/uvm_sequence-svh.html#uvm_sequence#(REQ,RSP)" class=LClass id=link78 onMouseOver="ShowTip(event, 'tt33', 'link78')" onMouseOut="HideTip('tt33')">uvm_sequence #(REQ,RSP)</a> to generate stimulus, the transaction ID is used along with the sequence ID to route responses in sequencers and to correlate responses to requests.</p></div></div></div>
<!--CONTENT index=23 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.Variables" href="../../src/base/uvm_transaction.svh">Variables</a></h3></div></div>
<!--CONTENT index=24 -->
<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.events" href="../../src/base/uvm_transaction.svh">events</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>const uvm_event_pool events = new
</td></tr></table></blockquote><div class=CBody><p>The event pool instance for this transaction.&nbsp; This pool is used to track various The <a href="#uvm_transaction.begin_event" class=LVariable id=link79 onMouseOver="ShowTip(event, 'tt26', 'link79')" onMouseOut="HideTip('tt26')">begin_event</a></p></div></div></div>
<!--CONTENT index=25 -->
<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.begin_event" href="../../src/base/uvm_transaction.svh">begin_event</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>uvm_event begin_event
</td></tr></table></blockquote><div class=CBody><p>A <a href="uvm_event-svh.html#uvm_event" class=LClass id=link80 onMouseOver="ShowTip(event, 'tt27', 'link80')" onMouseOut="HideTip('tt27')">uvm_event</a> that is triggered when this transaction&rsquo;s actual execution on the bus begins, typically as a result of a driver calling <a href="uvm_component-svh.html#uvm_component.begin_tr" class=LMethod id=link81 onMouseOver="ShowTip(event, 'tt28', 'link81')" onMouseOut="HideTip('tt28')">uvm_component::begin_tr</a>.&nbsp; Processes that wait on this event will block until the transaction has begun.</p><p>For more information, see the general discussion for <a href="#uvm_transaction" class=LClass id=link82 onMouseOver="ShowTip(event, 'tt3', 'link82')" onMouseOut="HideTip('tt3')">uvm_transaction</a>.&nbsp; See <a href="uvm_event-svh.html#uvm_event" class=LClass id=link83 onMouseOver="ShowTip(event, 'tt27', 'link83')" onMouseOut="HideTip('tt27')">uvm_event</a> for details on the event API.</p></div></div></div>
<!--CONTENT index=26 -->
<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="uvm_transaction.end_event" href="../../src/base/uvm_transaction.svh">end_event</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>uvm_event end_event
</td></tr></table></blockquote><div class=CBody><p>A <a href="uvm_event-svh.html#uvm_event" class=LClass id=link84 onMouseOver="ShowTip(event, 'tt27', 'link84')" onMouseOut="HideTip('tt27')">uvm_event</a> that is triggered when this transaction&rsquo;s actual execution on the bus ends, typically as a result of a driver calling <a href="uvm_component-svh.html#uvm_component.end_tr" class=LMethod id=link85 onMouseOver="ShowTip(event, 'tt30', 'link85')" onMouseOut="HideTip('tt30')">uvm_component::end_tr</a>.&nbsp; Processes that wait on this event will block until the transaction has ended.</p><p>For more information, see the general discussion for <a href="#uvm_transaction" class=LClass id=link86 onMouseOver="ShowTip(event, 'tt3', 'link86')" onMouseOut="HideTip('tt3')">uvm_transaction</a>.&nbsp; See <a href="uvm_event-svh.html#uvm_event" class=LClass id=link87 onMouseOver="ShowTip(event, 'tt27', 'link87')" onMouseOut="HideTip('tt27')">uvm_event</a> for details on the event API.</p><blockquote><pre>virtual task my_sequence::body();
...
start_item(item); \
item.randomize(); } `uvm_do(item)
finish_item(item); /
// return from finish item does not always mean item is completed
item.end_event.wait_on();
...</pre></blockquote></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=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;&quot;,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_component&nbsp;</td>
<td class=PParameter nowrap>initiator</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Creates a new transaction object. </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>function void accept_tr (</td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>accept_time</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Calling <i>accept_tr</i> indicates that the transaction item has been received by a consumer component. </div></div><div class=CToolTip id="tt6"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual protected function void do_accept_tr ()
</td></tr></table></blockquote>This user-definable callback is called by accept_tr just before the accept event is triggered. </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 integer begin_tr (</td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>begin_time</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
This function indicates that the transaction has been started and is not the child of another transaction. </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 integer begin_child_tr (</td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>begin_time</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>0,</td>
</tr><tr><td></td> <td class=PType nowrap>integer&nbsp;</td>
<td class=PParameter nowrap>parent_handle</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 function indicates that the transaction has been started as a child of a parent transaction given by <i>parent_handle</i>. </div></div><div class=CToolTip id="tt9"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual protected function void do_begin_tr ()
</td></tr></table></blockquote>This user-definable callback is called by begin_tr and begin_child_tr just before the begin event is triggered. </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>function void end_tr (</td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>end_time</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>0,</td>
</tr><tr><td></td> <td class=PType nowrap>bit&nbsp;</td>
<td class=PParameter nowrap>free_handle</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>
This function indicates that the transaction execution has ended. </div></div><div class=CToolTip id="tt11"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual protected function void do_end_tr ()
</td></tr></table></blockquote>This user-definable callback is called by end_tr just before the end event is triggered. </div></div><div class=CToolTip id="tt12"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function integer get_tr_handle ()
</td></tr></table></blockquote>Returns the handle associated with the transaction, as set by a previous call to begin_child_tr or begin_tr with transaction recording enabled.</div></div><div class=CToolTip id="tt13"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function void disable_recording ()
</td></tr></table></blockquote>Turns off recording for the transaction stream. </div></div><div class=CToolTip id="tt14"><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 enable_recording (</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>stream,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td></td> <td class=PType nowrap>uvm_recorder&nbsp;</td>
<td class=PParameter nowrap>recorder</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Turns on recording to the stream specified by stream, whose interpretation is implementation specific. </div></div><div class=CToolTip id="tt15"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function bit is_recording_enabled()
</td></tr></table></blockquote>Returns 1 if recording is currently on, 0 otherwise.</div></div><div class=CToolTip id="tt16"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function bit is_active ()
</td></tr></table></blockquote>Returns 1 if the transaction has been started but has not yet been ended. </div></div><div class=CToolTip id="tt17"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function uvm_event_pool get_event_pool ()
</td></tr></table></blockquote>Returns the event pool associated with this transaction.</div></div><div class=CToolTip id="tt18"><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 set_initiator (</td> <td class=PType nowrap>uvm_component&nbsp;</td>
<td class=PParameter nowrap>initiator</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Sets initiator as the initiator of this transaction.</div></div><div class=CToolTip id="tt19"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function uvm_component get_initiator ()
</td></tr></table></blockquote>Returns the component that produced or started the transaction, as set by a previous call to set_initiator.</div></div><div class=CToolTip id="tt20"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function time get_accept_time ()
</td></tr></table></blockquote></div></div><div class=CToolTip id="tt21"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function time get_begin_time ()
</td></tr></table></blockquote></div></div><div class=CToolTip id="tt22"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function time get_end_time ()
</td></tr></table></blockquote>Returns the time at which this transaction was accepted, begun, or ended, as by a previous call to accept_tr, begin_tr, begin_child_tr, or end_tr.</div></div><div class=CToolTip id="tt23"><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 set_transaction_id(</td> <td class=PType nowrap>integer&nbsp;</td>
<td class=PParameter nowrap>id</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Sets this transaction&rsquo;s numeric identifier to id. </div></div><div class=CToolTip id="tt24"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function integer get_transaction_id()
</td></tr></table></blockquote>Returns this transaction&rsquo;s numeric identifier, which is -1 if not set explicitly by <i>set_transaction_id</i>.</div></div><div class=CToolTip id="tt25"><div class=CVariable>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>const uvm_event_pool events = new
</td></tr></table></blockquote>The event pool instance for this transaction. </div></div><div class=CToolTip id="tt26"><div class=CVariable>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>uvm_event begin_event
</td></tr></table></blockquote>A uvm_event that is triggered when this transaction&rsquo;s actual execution on the bus begins, typically as a result of a driver calling uvm_component::begin_tr. </div></div><div class=CToolTip id="tt27"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_event extends uvm_object
</td></tr></table></blockquote>The uvm_event class is a wrapper class around the SystemVerilog event construct. </div></div><div class=CToolTip id="tt28"><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 integer begin_tr (</td> <td class=PType nowrap>uvm_transaction&nbsp;</td>
<td class=PParameter nowrap>tr,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>stream_name</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;main&quot;,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>label</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;&quot;,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>desc</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;&quot;,</td>
</tr><tr><td></td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>begin_time</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>0,</td>
</tr><tr><td></td> <td class=PType nowrap>integer&nbsp;</td>
<td class=PParameter nowrap>parent_handle</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 function marks the start of a transaction, <i>tr</i>, by this component. </div></div><div class=CToolTip id="tt29"><div class=CVariable>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>uvm_event end_event
</td></tr></table></blockquote>A uvm_event that is triggered when this transaction&rsquo;s actual execution on the bus ends, typically as a result of a driver calling uvm_component::end_tr. </div></div><div class=CToolTip id="tt30"><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 end_tr (</td> <td class=PType nowrap>uvm_transaction&nbsp;</td>
<td class=PParameter nowrap>tr,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td></td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>end_time</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>0,</td>
</tr><tr><td></td> <td class=PType nowrap>bit&nbsp;</td>
<td class=PParameter nowrap>free_handle</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>
This function marks the end of a transaction, <i>tr</i>, by this component. </div></div><div class=CToolTip id="tt31"><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="tt32"><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 accept_tr (</td> <td class=PType nowrap>uvm_transaction&nbsp;</td>
<td class=PParameter nowrap>tr,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
</tr><tr><td></td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>accept_time</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
This function marks the acceptance of a transaction, <i>tr</i>, by this component. </div></div><div class=CToolTip id="tt33"><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="tt34"><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 integer begin_child_tr (</td> <td class=PType nowrap>uvm_transaction&nbsp;</td>
<td class=PParameter nowrap>tr,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td></td> <td class=PType nowrap>integer&nbsp;</td>
<td class=PParameter nowrap>parent_handle</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>0,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>stream_name</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;main&quot;,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>label</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;&quot;,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>desc</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;&quot;,</td>
</tr><tr><td></td> <td class=PType nowrap>time&nbsp;</td>
<td class=PParameter nowrap>begin_time</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 function marks the start of a child transaction, <i>tr</i>, by this component. </div></div><div class=CToolTip id="tt35"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_component extends uvm_report_object
</td></tr></table></blockquote>The uvm_component class is the root base class for UVM components. </div></div><!--END_ND_TOOLTIPS-->
<script language=JavaScript><!--
if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>