| <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. 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. 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 <uvm_driver> 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. 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. While convenient, it is generally the responsibility of drivers to mark a transaction’s progress during execution. 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. Alternatively, users may use the transaction’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. 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’s `uvm_do macro) before the item has been completed. If the driver uses the begin_tr/end_tr API in uvm_component, the sequence can wait on the item’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 "data_phase" 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’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’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’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’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 </td> |
| <td class=PParameter nowrap>name</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>"",</td> |
| </tr><tr><td></td> <td class=PType nowrap>uvm_component </td> |
| <td class=PParameter nowrap>initiator</td> |
| <td class=PDefaultValuePrefix> = </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. The name is the instance name of the transaction. 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 </td> |
| <td class=PParameter nowrap>accept_time</td> |
| <td class=PDefaultValuePrefix> = </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. Typically a <uvm_driver> 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, <uvm_driver::seq_item_port>.</p><p>With some protocols, the received item may not be started immediately after it is accepted. 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’s internal accept time is set to the current simulation time, or to accept_time if provided and non-zero. The <i>accept_time</i> may be any time, past or future.</li><li>The transaction’s internal accept event is triggered. 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. 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 </td> |
| <td class=PParameter nowrap>begin_time</td> |
| <td class=PDefaultValuePrefix> = </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. Generally, a consumer component begins execution of a transactions it receives.</p><p>Typically a <uvm_driver> 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. Sequence items received by a driver are always a child of a parent sequence. 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’s internal start time is set to the current simulation time, or to begin_time if provided and non-zero. 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’s internal begin event is triggered. 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. 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 </td> |
| <td class=PParameter nowrap>begin_time</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>0,</td> |
| </tr><tr><td></td> <td class=PType nowrap>integer </td> |
| <td class=PParameter nowrap>parent_handle</td> |
| <td class=PDefaultValuePrefix> = </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>. 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. 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’s internal start time is set to the current simulation time, or to begin_time if provided and non-zero. 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. 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. 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’s internal begin event is triggered. 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. 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. 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 </td> |
| <td class=PParameter nowrap>end_time</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>0,</td> |
| </tr><tr><td></td> <td class=PType nowrap>bit </td> |
| <td class=PParameter nowrap>free_handle</td> |
| <td class=PDefaultValuePrefix> = </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. 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 <uvm_driver> 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. Sequence items received by a driver are always a child of a parent sequence. 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’s internal end time is set to the current simulation time, or to <i>end_time</i> if provided and non-zero. 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. The transaction is then ended. 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’s internal end event is triggered. 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. 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. 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>’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 </td> |
| <td class=PParameter nowrap>stream,</td> |
| <td class=PDefaultValuePrefix> </td> |
| <td class=PDefaultValue width=100%></td> |
| </tr><tr><td></td> <td class=PType nowrap>uvm_recorder </td> |
| <td class=PParameter nowrap>recorder</td> |
| <td class=PDefaultValuePrefix> = </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. 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. 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. Events can also be added by derivative objects. An event pool is a specialization of an <uvm_pool #(T)>, 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 </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. It can also be the component that started the transaction. 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 </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’s numeric identifier to id. 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’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. 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’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>. 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>. 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’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>. 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>. 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 </td> |
| <td class=PParameter nowrap>name</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>"",</td> |
| </tr><tr><td></td> <td class=PType nowrap>uvm_component </td> |
| <td class=PParameter nowrap>initiator</td> |
| <td class=PDefaultValuePrefix> = </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 </td> |
| <td class=PParameter nowrap>accept_time</td> |
| <td class=PDefaultValuePrefix> = </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 </td> |
| <td class=PParameter nowrap>begin_time</td> |
| <td class=PDefaultValuePrefix> = </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 </td> |
| <td class=PParameter nowrap>begin_time</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>0,</td> |
| </tr><tr><td></td> <td class=PType nowrap>integer </td> |
| <td class=PParameter nowrap>parent_handle</td> |
| <td class=PDefaultValuePrefix> = </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 </td> |
| <td class=PParameter nowrap>end_time</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>0,</td> |
| </tr><tr><td></td> <td class=PType nowrap>bit </td> |
| <td class=PParameter nowrap>free_handle</td> |
| <td class=PDefaultValuePrefix> = </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 </td> |
| <td class=PParameter nowrap>stream,</td> |
| <td class=PDefaultValuePrefix> </td> |
| <td class=PDefaultValue width=100%></td> |
| </tr><tr><td></td> <td class=PType nowrap>uvm_recorder </td> |
| <td class=PParameter nowrap>recorder</td> |
| <td class=PDefaultValuePrefix> = </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 </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 </td> |
| <td class=PParameter nowrap>id</td> |
| <td class=PAfterParameters nowrap>)</td></tr> |
| </table></td></tr> |
| </table></blockquote> |
| Sets this transaction’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’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’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 </td> |
| <td class=PParameter nowrap>tr,</td> |
| <td class=PDefaultValuePrefix> </td> |
| <td class=PDefaultValue width=100%></td> |
| </tr><tr><td></td> <td class=PType nowrap>string </td> |
| <td class=PParameter nowrap>stream_name</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>"main",</td> |
| </tr><tr><td></td> <td class=PType nowrap>string </td> |
| <td class=PParameter nowrap>label</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>"",</td> |
| </tr><tr><td></td> <td class=PType nowrap>string </td> |
| <td class=PParameter nowrap>desc</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>"",</td> |
| </tr><tr><td></td> <td class=PType nowrap>time </td> |
| <td class=PParameter nowrap>begin_time</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>0,</td> |
| </tr><tr><td></td> <td class=PType nowrap>integer </td> |
| <td class=PParameter nowrap>parent_handle</td> |
| <td class=PDefaultValuePrefix> = </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’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 </td> |
| <td class=PParameter nowrap>tr,</td> |
| <td class=PDefaultValuePrefix> </td> |
| <td class=PDefaultValue width=100%></td> |
| </tr><tr><td></td> <td class=PType nowrap>time </td> |
| <td class=PParameter nowrap>end_time</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>0,</td> |
| </tr><tr><td></td> <td class=PType nowrap>bit </td> |
| <td class=PParameter nowrap>free_handle</td> |
| <td class=PDefaultValuePrefix> = </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 </td> |
| <td class=PParameter nowrap>tr,</td> |
| <td class=PDefaultValuePrefix> </td> |
| </tr><tr><td></td> <td class=PType nowrap>time </td> |
| <td class=PParameter nowrap>accept_time</td> |
| <td class=PDefaultValuePrefix> = </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> </td> <td class=PType nowrap>type </td> |
| <td class=PParameter nowrap>REQ</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%> uvm_sequence_item,</td> |
| </tr><tr><td> </td> <td class=PType nowrap>type </td> |
| <td class=PParameter nowrap>RSP</td> |
| <td class=PDefaultValuePrefix> = </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 </td> |
| <td class=PParameter nowrap>tr,</td> |
| <td class=PDefaultValuePrefix> </td> |
| <td class=PDefaultValue width=100%></td> |
| </tr><tr><td></td> <td class=PType nowrap>integer </td> |
| <td class=PParameter nowrap>parent_handle</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>0,</td> |
| </tr><tr><td></td> <td class=PType nowrap>string </td> |
| <td class=PParameter nowrap>stream_name</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>"main",</td> |
| </tr><tr><td></td> <td class=PType nowrap>string </td> |
| <td class=PParameter nowrap>label</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>"",</td> |
| </tr><tr><td></td> <td class=PType nowrap>string </td> |
| <td class=PParameter nowrap>desc</td> |
| <td class=PDefaultValuePrefix> = </td> |
| <td class=PDefaultValue width=100%>"",</td> |
| </tr><tr><td></td> <td class=PType nowrap>time </td> |
| <td class=PParameter nowrap>begin_time</td> |
| <td class=PDefaultValuePrefix> = </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> |