blob: d3fafcd6ece91df44151244ec5ca3cc1244c4ced [file] [log] [blame]
<html><head><title>Objection Mechanism</title><link rel="stylesheet" type="text/css" href="../../styles/main.css"><script language=JavaScript src="../../javascript/main.js"></script></head><body class="FramedContentPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
<!-- Generated by Natural Docs, version Development Release 01-12-2008 (1.35 base) -->
<!-- http://www.naturaldocs.org -->
<!-- saved from url=(0026)http://www.naturaldocs.org -->
<!--TOP - START OF CONTENT-->
<div id=Content>
<!--CONTENT index=0 -->
<div class="CSection"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="Objection_Mechanism" href="../../src/base/uvm_objection.svh">Objection Mechanism</a></h1><div class=CBody><p>The following classes define the objection mechanism and end-of-test functionality, which is based on <a href="#uvm_objection" class=LClass id=link6 onMouseOver="ShowTip(event, 'tt1', 'link6')" onMouseOut="HideTip('tt1')">uvm_objection</a>.</p>
<!--START_ND_SUMMARY index=0-->
<div class=Summary><div class=STitle>Contents</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable>
<!-- index=0 -->
<tr class="SMain"><td class=SEntry><a href="#Objection_Mechanism" >Objection Mechanism</a></td><td class=SDescription>The following classes define the objection mechanism and end-of-test functionality, which is based on <a href="#uvm_objection" class=LClass id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">uvm_objection</a>.</td></tr>
<!-- index=1 -->
<tr class="SSMethod SMarked"><td class=SEntry><a href="#uvm_objection" id=link2 onMouseOver="ShowTip(event, 'tt1', 'link2')" onMouseOut="HideTip('tt1')">uvm_objection</a></td><td class=SDescription>Objections provide a facility for coordinating status information between two or more participating components, objects, and even module-based IP.</td></tr>
<!-- index=21 -->
<tr class="SSMethod"><td class=SEntry><a href="#uvm_callbacks_objection" id=link3 onMouseOver="ShowTip(event, 'tt2', 'link3')" onMouseOut="HideTip('tt2')">uvm_callbacks_objection</a></td><td class=SDescription>The uvm_callbacks_objection is a specialized <a href="#uvm_objection" class=LClass id=link4 onMouseOver="ShowTip(event, 'tt1', 'link4')" onMouseOut="HideTip('tt1')">uvm_objection</a> which contains callbacks for the raised and dropped events. </td></tr>
<!-- index=26 -->
<tr class="SSMethod SMarked"><td class=SEntry><a href="#uvm_objection_callback" id=link5 onMouseOver="ShowTip(event, 'tt3', 'link5')" onMouseOut="HideTip('tt3')">uvm_objection_callback</a></td><td class=SDescription>The uvm_objection is the callback type that defines the callback implementations for an objection callback. </td></tr></table></div></div><!--END_ND_SUMMARY-->
</div></div></div>
<!--CONTENT index=1 -->
<div class="CClass"><div class=CTopic><h2 class=CTitle><a name="uvm_objection" href="../../src/base/uvm_objection.svh">uvm_objection</a></h2><div class=CBody><p>Objections provide a facility for coordinating status information between two or more participating components, objects, and even module-based IP.</p><p>Tracing of objection activity can be turned on to follow the activity of the objection mechanism.&nbsp; It may be turned on for a specific objection instance with <a href="#uvm_objection.trace_mode" class=LMethod id=link29 onMouseOver="ShowTip(event, 'tt9', 'link29')" onMouseOut="HideTip('tt9')">uvm_objection::trace_mode</a>, or it can be set for all objections from the command line using the option +UVM_OBJECTION_TRACE.</p>
<!--START_ND_SUMMARY index=1-->
<div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable>
<!-- index=1 -->
<tr class="SClass"><td colspan=2 class=SEntry><a href="#uvm_objection" id=link10 onMouseOver="ShowTip(event, 'tt1', 'link10')" onMouseOut="HideTip('tt1')">uvm_objection</a></td></tr>
<tr class=SMain><td colspan=2 class=SWideDescription>Objections provide a facility for coordinating status information between two or more participating components, objects, and even module-based IP.</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=link7 onMouseOver="ShowTip(event, 'tt4', 'link7')" onMouseOut="HideTip('tt4')">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=link8 onMouseOver="ShowTip(event, 'tt5', 'link8')" onMouseOut="HideTip('tt5')">uvm_object</a></div></div></td></tr>
<tr><td><div class=CHParent><div class=CHEntry><a href="uvm_report_object-svh.html#uvm_report_object" class=LClass id=link9 onMouseOver="ShowTip(event, 'tt6', 'link9')" onMouseOut="HideTip('tt6')">uvm_report_object</a></div></div></td></tr>
<tr><td><div class=CHCurrent><div class=CHEntry>uvm_objection</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>class uvm_objection extends uvm_report_object
</td></tr></table></blockquote></td></tr>
<!-- index=2 -->
<tr class="SMethod SIndent1 SMarked"><td class=SEntry><a href="#uvm_objection.clear" id=link11 onMouseOver="ShowTip(event, 'tt7', 'link11')" onMouseOut="HideTip('tt7')">clear</a></td><td class=SDescription>Immediately clears the objection state. </td></tr>
<!-- index=3 -->
<tr class="SMethod SIndent1"><td class=SEntry><a href="#uvm_objection.new" id=link12 onMouseOver="ShowTip(event, 'tt8', 'link12')" onMouseOut="HideTip('tt8')">new</a></td><td class=SDescription>Creates a new objection instance. </td></tr>
<!-- index=4 -->
<tr class="SMethod SIndent1 SMarked"><td class=SEntry><a href="#uvm_objection.trace_mode" id=link13 onMouseOver="ShowTip(event, 'tt9', 'link13')" onMouseOut="HideTip('tt9')">trace_mode</a></td><td class=SDescription>Set or get the trace mode for the objection object. </td></tr>
<!-- index=5 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#uvm_objection.Objection_Control" >Objection Control</a></td><td class=SDescription></td></tr>
<!-- index=6 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_objection.m_set_hier_mode" id=link14 onMouseOver="ShowTip(event, 'tt10', 'link14')" onMouseOut="HideTip('tt10')">m_set_hier_mode</a></td><td class=SDescription>Hierarchical mode only needs to be set for intermediate components, not for uvm_root or a leaf component.</td></tr>
<!-- index=7 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_objection.raise_objection" id=link15 onMouseOver="ShowTip(event, 'tt11', 'link15')" onMouseOut="HideTip('tt11')">raise_objection</a></td><td class=SDescription>Raises the number of objections for the source <i>object</i> by <i>count</i>, which defaults to 1. </td></tr>
<!-- index=8 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_objection.drop_objection" id=link16 onMouseOver="ShowTip(event, 'tt12', 'link16')" onMouseOut="HideTip('tt12')">drop_objection</a></td><td class=SDescription>Drops the number of objections for the source <i>object</i> by <i>count</i>, which defaults to 1. </td></tr>
<!-- index=9 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_objection.set_drain_time" >set_drain_time</a></td><td class=SDescription>Sets the drain time on the given <i>object</i> to <i>drain</i>.</td></tr>
<!-- index=10 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#uvm_objection.Callback_Hooks" >Callback Hooks</a></td><td class=SDescription></td></tr>
<!-- index=11 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_objection.raised" id=link17 onMouseOver="ShowTip(event, 'tt13', 'link17')" onMouseOut="HideTip('tt13')">raised</a></td><td class=SDescription>Objection callback that is called when a <a href="#uvm_objection.raise_objection" class=LMethod id=link18 onMouseOver="ShowTip(event, 'tt11', 'link18')" onMouseOut="HideTip('tt11')">raise_objection</a> has reached <i>obj</i>. </td></tr>
<!-- index=12 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_objection.dropped" id=link19 onMouseOver="ShowTip(event, 'tt14', 'link19')" onMouseOut="HideTip('tt14')">dropped</a></td><td class=SDescription>Objection callback that is called when a <a href="#uvm_objection.drop_objection" class=LMethod id=link20 onMouseOver="ShowTip(event, 'tt12', 'link20')" onMouseOut="HideTip('tt12')">drop_objection</a> has reached <i>obj</i>. </td></tr>
<!-- index=13 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_objection.all_dropped" id=link21 onMouseOver="ShowTip(event, 'tt15', 'link21')" onMouseOut="HideTip('tt15')">all_dropped</a></td><td class=SDescription>Objection callback that is called when a <a href="#uvm_objection.drop_objection" class=LMethod id=link22 onMouseOver="ShowTip(event, 'tt12', 'link22')" onMouseOut="HideTip('tt12')">drop_objection</a> has reached <i>obj</i>, and the total count for <i>obj</i> goes to zero. </td></tr>
<!-- index=14 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#uvm_objection.Objection_Status" >Objection Status</a></td><td class=SDescription></td></tr>
<!-- index=15 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_objection.get_objectors" id=link23 onMouseOver="ShowTip(event, 'tt16', 'link23')" onMouseOut="HideTip('tt16')">get_objectors</a></td><td class=SDescription>Returns the current list of objecting objects (objects that raised an objection but have not dropped it).</td></tr>
<!-- index=16 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_objection.wait_for" id=link24 onMouseOver="ShowTip(event, 'tt17', 'link24')" onMouseOut="HideTip('tt17')">wait_for</a></td><td class=SDescription>Waits for the raised, dropped, or all_dropped <i>event</i> to occur in the given <i>obj</i>. </td></tr>
<!-- index=17 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_objection.get_objection_count" id=link25 onMouseOver="ShowTip(event, 'tt18', 'link25')" onMouseOut="HideTip('tt18')">get_objection_count</a></td><td class=SDescription>Returns the current number of objections raised by the given <i>object</i>.</td></tr>
<!-- index=18 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_objection.get_objection_total" id=link26 onMouseOver="ShowTip(event, 'tt19', 'link26')" onMouseOut="HideTip('tt19')">get_objection_total</a></td><td class=SDescription>Returns the current number of objections raised by the given <i>object</i> and all descendants.</td></tr>
<!-- index=19 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_objection.get_drain_time" id=link27 onMouseOver="ShowTip(event, 'tt20', 'link27')" onMouseOut="HideTip('tt20')">get_drain_time</a></td><td class=SDescription>Returns the current drain time set for the given <i>object</i> (default: 0 ns).</td></tr>
<!-- index=20 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_objection.display_objections" id=link28 onMouseOver="ShowTip(event, 'tt21', 'link28')" onMouseOut="HideTip('tt21')">display_objections</a></td><td class=SDescription>Displays objection information about the given <i>object</i>. </td></tr></table></div></div><!--END_ND_SUMMARY-->
</div></div></div>
<!--CONTENT index=2 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.clear" href="../../src/base/uvm_objection.svh">clear</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void clear(</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</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>Immediately clears the objection state.&nbsp; All counts are cleared and the any processes waiting on a call to wait_for(UVM_ALL_DROPPED, uvm_top) are released.</p><p>The caller, if a uvm_object-based object, should pass its &lsquo;this&rsquo; handle to the <i>obj</i> argument to document who cleared the objection.&nbsp; Any drain_times set by the user are not effected.</p></div></div></div>
<!--CONTENT index=3 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.new" href="../../src/base/uvm_objection.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>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Creates a new objection instance.&nbsp; Accesses the command line argument +UVM_OBJECTION_TRACE to turn tracing on for all objection objects.</p></div></div></div>
<!--CONTENT index=4 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.trace_mode" href="../../src/base/uvm_objection.svh">trace_mode</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 bit trace_mode (</td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>mode</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>Set or get the trace mode for the objection object.&nbsp; If no argument is specified (or an argument other than 0 or 1) the current trace mode is unaffected.&nbsp; A trace_mode of 0 turns tracing off.&nbsp; A trace mode of 1 turns tracing on.&nbsp; The return value is the mode prior to being reset.</p></div></div></div>
<!--CONTENT index=5 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.Objection_Control" href="../../src/base/uvm_objection.svh">Objection Control</a></h3></div></div>
<!--CONTENT index=6 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.m_set_hier_mode" href="../../src/base/uvm_objection.svh">m_set_hier_mode</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 m_set_hier_mode (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Hierarchical mode only needs to be set for intermediate components, not for uvm_root or a leaf component.</p></div></div></div>
<!--CONTENT index=7 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.raise_objection" href="../../src/base/uvm_objection.svh">raise_objection</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void raise_objection (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;&quot;,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</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>Raises the number of objections for the source <i>object</i> by <i>count</i>, which defaults to 1.&nbsp; The <i>object</i> is usually the <i>this</i> handle of the caller.&nbsp; If <i>object</i> is not specified or null, the implicit top-level component, <a href="uvm_root-svh.html#uvm_root" class=LClass id=link30 onMouseOver="ShowTip(event, 'tt22', 'link30')" onMouseOut="HideTip('tt22')">uvm_root</a>, is chosen.</p><p>Rasing an objection causes the following.</p><ul><li>The source and total objection counts for <i>object</i> are increased by <i>count</i>.&nbsp; <i>description</i> is a string that marks a specific objection and is used in tracing/debug.</li><li>The objection&rsquo;s <a href="#uvm_objection.raised" class=LMethod id=link31 onMouseOver="ShowTip(event, 'tt13', 'link31')" onMouseOut="HideTip('tt13')">raised</a> virtual method is called, which calls the <a href="uvm_component-svh.html#uvm_component.raised" class=LMethod id=link32 onMouseOver="ShowTip(event, 'tt23', 'link32')" onMouseOut="HideTip('tt23')">uvm_component::raised</a> method for all of the components up the hierarchy.</li></ul></div></div></div>
<!--CONTENT index=8 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.drop_objection" href="../../src/base/uvm_objection.svh">drop_objection</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void drop_objection (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;&quot;,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</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>Drops the number of objections for the source <i>object</i> by <i>count</i>, which defaults to 1.&nbsp; The <i>object</i> is usually the <i>this</i> handle of the caller.&nbsp; If <i>object</i> is not specified or null, the implicit top-level component, <a href="uvm_root-svh.html#uvm_root" class=LClass id=link33 onMouseOver="ShowTip(event, 'tt22', 'link33')" onMouseOut="HideTip('tt22')">uvm_root</a>, is chosen.</p><p>Dropping an objection causes the following.</p><ul><li>The source and total objection counts for <i>object</i> are decreased by <i>count</i>.&nbsp; It is an error to drop the objection count for <i>object</i> below zero.</li><li>The objection&rsquo;s <a href="#uvm_objection.dropped" class=LMethod id=link34 onMouseOver="ShowTip(event, 'tt14', 'link34')" onMouseOut="HideTip('tt14')">dropped</a> virtual method is called, which calls the <a href="uvm_component-svh.html#uvm_component.dropped" class=LMethod id=link35 onMouseOver="ShowTip(event, 'tt24', 'link35')" onMouseOut="HideTip('tt24')">uvm_component::dropped</a> method for all of the components up the hierarchy.</li><li>If the total objection count has not reached zero for <i>object</i>, then the drop is propagated up the object hierarchy as with <a href="#uvm_objection.raise_objection" class=LMethod id=link36 onMouseOver="ShowTip(event, 'tt11', 'link36')" onMouseOut="HideTip('tt11')">raise_objection</a>.&nbsp; Then, each object in the hierarchy will have updated their <i>source</i> counts--objections that they originated--and <i>total</i> counts--the total number of objections by them and all their descendants.</li></ul><p>If the total objection count reaches zero, propagation up the hierarchy is deferred until a configurable drain-time has passed and the <a href="uvm_component-svh.html#uvm_component.all_dropped" class=LMethod id=link37 onMouseOver="ShowTip(event, 'tt25', 'link37')" onMouseOut="HideTip('tt25')">uvm_component::all_dropped</a> callback for the current hierarchy level has returned.&nbsp; The following process occurs for each instance up the hierarchy from the source caller:</p><p>A process is forked in a non-blocking fashion, allowing the <i>drop</i> call to return.&nbsp; The forked process then does the following:</p><ul><li>If a drain time was set for the given <i>object</i>, the process waits for that amount of time.</li><li>The objection&rsquo;s <a href="#uvm_objection.all_dropped" class=LMethod id=link38 onMouseOver="ShowTip(event, 'tt15', 'link38')" onMouseOut="HideTip('tt15')">all_dropped</a> virtual method is called, which calls the <a href="uvm_component-svh.html#uvm_component.all_dropped" class=LMethod id=link39 onMouseOver="ShowTip(event, 'tt25', 'link39')" onMouseOut="HideTip('tt25')">uvm_component::all_dropped</a> method (if <i>object</i> is a component).</li><li>The process then waits for the <i>all_dropped</i> callback to complete.</li><li>After the drain time has elapsed and all_dropped callback has completed, propagation of the dropped objection to the parent proceeds as described in <a href="#uvm_objection.raise_objection" class=LMethod id=link40 onMouseOver="ShowTip(event, 'tt11', 'link40')" onMouseOut="HideTip('tt11')">raise_objection</a>, except as described below.</li></ul><p>If a new objection for this <i>object</i> or any of its descendents is raised during the drain time or during execution of the all_dropped callback at any point, the hierarchical chain described above is terminated and the dropped callback does not go up the hierarchy.&nbsp; The raised objection will propagate up the hierarchy, but the number of raised propagated up is reduced by the number of drops that were pending waiting for the all_dropped/drain time completion.&nbsp; Thus, if exactly one objection caused the count to go to zero, and during the drain exactly one new objection comes in, no raises or drops are propagted up the hierarchy,</p><p>As an optimization, if the <i>object</i> has no set drain-time and no registered callbacks, the forked process can be skipped and propagation proceeds immediately to the parent as described.</p></div></div></div>
<!--CONTENT index=9 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.set_drain_time" href="../../src/base/uvm_objection.svh">set_drain_time</a></h3><div class=CBody><p>Sets the drain time on the given <i>object</i> to <i>drain</i>.</p><p>The drain time is the amount of time to wait once all objections have been dropped before calling the all_dropped callback and propagating the objection to the parent.</p><p>If a new objection for this <i>object</i> or any of its descendents is raised during the drain time or during execution of the all_dropped callbacks, the drain_time/all_dropped execution is terminated.</p></div></div></div>
<!--CONTENT index=10 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.Callback_Hooks" href="../../src/base/uvm_objection.svh">Callback Hooks</a></h3></div></div>
<!--CONTENT index=11 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.raised" href="../../src/base/uvm_objection.svh">raised</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void raised (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Objection callback that is called when a <a href="#uvm_objection.raise_objection" class=LMethod id=link41 onMouseOver="ShowTip(event, 'tt11', 'link41')" onMouseOut="HideTip('tt11')">raise_objection</a> has reached <i>obj</i>.&nbsp; The default implementation calls <a href="uvm_component-svh.html#uvm_component.raised" class=LMethod id=link42 onMouseOver="ShowTip(event, 'tt23', 'link42')" onMouseOut="HideTip('tt23')">uvm_component::raised</a>.</p></div></div></div>
<!--CONTENT index=12 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.dropped" href="../../src/base/uvm_objection.svh">dropped</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void dropped (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Objection callback that is called when a <a href="#uvm_objection.drop_objection" class=LMethod id=link43 onMouseOver="ShowTip(event, 'tt12', 'link43')" onMouseOut="HideTip('tt12')">drop_objection</a> has reached <i>obj</i>.&nbsp; The default implementation calls <a href="uvm_component-svh.html#uvm_component.dropped" class=LMethod id=link44 onMouseOver="ShowTip(event, 'tt24', 'link44')" onMouseOut="HideTip('tt24')">uvm_component::dropped</a>.</p></div></div></div>
<!--CONTENT index=13 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.all_dropped" href="../../src/base/uvm_objection.svh">all_dropped</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual task all_dropped (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Objection callback that is called when a <a href="#uvm_objection.drop_objection" class=LMethod id=link45 onMouseOver="ShowTip(event, 'tt12', 'link45')" onMouseOut="HideTip('tt12')">drop_objection</a> has reached <i>obj</i>, and the total count for <i>obj</i> goes to zero.&nbsp; This callback is executed after the drain time associated with <i>obj</i>.&nbsp; The default implementation calls <a href="uvm_component-svh.html#uvm_component.all_dropped" class=LMethod id=link46 onMouseOver="ShowTip(event, 'tt25', 'link46')" onMouseOut="HideTip('tt25')">uvm_component::all_dropped</a>.</p></div></div></div>
<!--CONTENT index=14 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.Objection_Status" href="../../src/base/uvm_objection.svh">Objection Status</a></h3></div></div>
<!--CONTENT index=15 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.get_objectors" href="../../src/base/uvm_objection.svh">get_objectors</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 get_objectors(</td> <td class=PTypePrefix nowrap>ref&nbsp;</td>
<td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>list[$]</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Returns the current list of objecting objects (objects that raised an objection but have not dropped it).</p></div></div></div>
<!--CONTENT index=16 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.wait_for" href="../../src/base/uvm_objection.svh">wait_for</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>task wait_for(</td> <td class=PType nowrap>uvm_objection_event&nbsp;</td>
<td class=PParameter nowrap>objt_event,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</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>Waits for the raised, dropped, or all_dropped <i>event</i> to occur in the given <i>obj</i>.&nbsp; The task returns after all corresponding callbacks for that event have been executed.</p></div></div></div>
<!--CONTENT index=17 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.get_objection_count" href="../../src/base/uvm_objection.svh">get_objection_count</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 int get_objection_count (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</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>Returns the current number of objections raised by the given <i>object</i>.</p></div></div></div>
<!--CONTENT index=18 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.get_objection_total" href="../../src/base/uvm_objection.svh">get_objection_total</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 int get_objection_total (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</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>Returns the current number of objections raised by the given <i>object</i> and all descendants.</p></div></div></div>
<!--CONTENT index=19 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.get_drain_time" href="../../src/base/uvm_objection.svh">get_drain_time</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>function time get_drain_time (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</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>Returns the current drain time set for the given <i>object</i> (default: 0 ns).</p></div></div></div>
<!--CONTENT index=20 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection.display_objections" href="../../src/base/uvm_objection.svh">display_objections</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 display_objections(</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null,</td>
</tr><tr><td></td> <td class=PType nowrap>bit&nbsp;</td>
<td class=PParameter nowrap>show_header</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>Displays objection information about the given <i>object</i>.&nbsp; If <i>object</i> is not specified or <i>null</i>, the implicit top-level component, <a href="uvm_root-svh.html#uvm_root" class=LClass id=link47 onMouseOver="ShowTip(event, 'tt22', 'link47')" onMouseOut="HideTip('tt22')">uvm_root</a>, is chosen.&nbsp; The <i>show_header</i> argument allows control of whether a header is output.</p></div></div></div>
<!--CONTENT index=21 -->
<div class="CClass"><div class=CTopic><h2 class=CTitle><a name="uvm_callbacks_objection" href="../../src/base/uvm_objection.svh">uvm_callbacks_objection</a></h2><div class=CBody><p>The uvm_callbacks_objection is a specialized <a href="#uvm_objection" class=LClass id=link60 onMouseOver="ShowTip(event, 'tt1', 'link60')" onMouseOut="HideTip('tt1')">uvm_objection</a> which contains callbacks for the raised and dropped events.&nbsp; Callbacks happend for the three standard callback activities, <a href="#uvm_callbacks_objection.raised" class=LMethod id=link61 onMouseOver="ShowTip(event, 'tt26', 'link61')" onMouseOut="HideTip('tt26')">raised</a>, <a href="#uvm_callbacks_objection.dropped" class=LMethod id=link62 onMouseOver="ShowTip(event, 'tt28', 'link62')" onMouseOut="HideTip('tt28')">dropped</a>, and <a href="#uvm_callbacks_objection.all_dropped" class=LMethod id=link63 onMouseOver="ShowTip(event, 'tt30', 'link63')" onMouseOut="HideTip('tt30')">all_dropped</a>.</p><p>The <a href="uvm_heartbeat-svh.html#uvm_heartbeat" class=LClass id=link64 onMouseOver="ShowTip(event, 'tt32', 'link64')" onMouseOut="HideTip('tt32')">uvm_heartbeat</a> mechanism use objections of this type for creating heartbeat conditions.&nbsp; Whenever the objection is raised or dropped, the component which did the raise/drop is considered to be alive.</p>
<!--START_ND_SUMMARY index=21-->
<div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable>
<!-- index=21 -->
<tr class="SClass"><td colspan=2 class=SEntry><a href="#uvm_callbacks_objection" id=link52 onMouseOver="ShowTip(event, 'tt2', 'link52')" onMouseOut="HideTip('tt2')">uvm_callbacks_objection</a></td></tr>
<tr class=SMain><td colspan=2 class=SWideDescription>The uvm_callbacks_objection is a specialized <a href="#uvm_objection" class=LClass id=link53 onMouseOver="ShowTip(event, 'tt1', 'link53')" onMouseOut="HideTip('tt1')">uvm_objection</a> which contains callbacks for the raised and dropped events. </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=link48 onMouseOver="ShowTip(event, 'tt4', 'link48')" onMouseOut="HideTip('tt4')">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=link49 onMouseOver="ShowTip(event, 'tt5', 'link49')" onMouseOut="HideTip('tt5')">uvm_object</a></div></div></td></tr>
<tr><td><div class=CHParent><div class=CHEntry><a href="uvm_report_object-svh.html#uvm_report_object" class=LClass id=link50 onMouseOver="ShowTip(event, 'tt6', 'link50')" onMouseOut="HideTip('tt6')">uvm_report_object</a></div></div></td></tr>
<tr><td><div class=CHParent><div class=CHEntry><a href="#uvm_objection" class=LClass id=link51 onMouseOver="ShowTip(event, 'tt1', 'link51')" onMouseOut="HideTip('tt1')">uvm_objection</a></div></div></td></tr>
<tr><td><div class=CHCurrent><div class=CHEntry>uvm_callbacks_objection</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>class uvm_callbacks_objection extends uvm_objection
</td></tr></table></blockquote></td></tr>
<!-- index=22 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#uvm_callbacks_objection.Methods" >Methods</a></td><td class=SDescription></td></tr>
<!-- index=23 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_callbacks_objection.raised" id=link54 onMouseOver="ShowTip(event, 'tt26', 'link54')" onMouseOut="HideTip('tt26')">raised</a></td><td class=SDescription>Executes the <a href="#uvm_objection_callback.raised" class=LMethod id=link55 onMouseOver="ShowTip(event, 'tt27', 'link55')" onMouseOut="HideTip('tt27')">uvm_objection_callback::raised</a> method in the user callback class whenever this objection is raised at the object <i>obj</i>.</td></tr>
<!-- index=24 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_callbacks_objection.dropped" id=link56 onMouseOver="ShowTip(event, 'tt28', 'link56')" onMouseOut="HideTip('tt28')">dropped</a></td><td class=SDescription>Executes the <a href="#uvm_objection_callback.dropped" class=LMethod id=link57 onMouseOver="ShowTip(event, 'tt29', 'link57')" onMouseOut="HideTip('tt29')">uvm_objection_callback::dropped</a> method in the user callback class whenever this objection is dropped at the object <i>obj</i>.</td></tr>
<!-- index=25 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_callbacks_objection.all_dropped" id=link58 onMouseOver="ShowTip(event, 'tt30', 'link58')" onMouseOut="HideTip('tt30')">all_dropped</a></td><td class=SDescription>Executes the <a href="#uvm_objection_callback.all_dropped" class=LMethod id=link59 onMouseOver="ShowTip(event, 'tt31', 'link59')" onMouseOut="HideTip('tt31')">uvm_objection_callback::all_dropped</a> task in the user callback class whenever the objection count for this objection in reference to <i>obj</i> goes to zero.</td></tr></table></div></div><!--END_ND_SUMMARY-->
</div></div></div>
<!--CONTENT index=22 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="uvm_callbacks_objection.Methods" href="../../src/base/uvm_objection.svh">Methods</a></h3></div></div>
<!--CONTENT index=23 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_callbacks_objection.raised" href="../../src/base/uvm_objection.svh">raised</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void raised (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Executes the <a href="#uvm_objection_callback.raised" class=LMethod id=link65 onMouseOver="ShowTip(event, 'tt27', 'link65')" onMouseOut="HideTip('tt27')">uvm_objection_callback::raised</a> method in the user callback class whenever this objection is raised at the object <i>obj</i>.</p></div></div></div>
<!--CONTENT index=24 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_callbacks_objection.dropped" href="../../src/base/uvm_objection.svh">dropped</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void dropped (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Executes the <a href="#uvm_objection_callback.dropped" class=LMethod id=link66 onMouseOver="ShowTip(event, 'tt29', 'link66')" onMouseOut="HideTip('tt29')">uvm_objection_callback::dropped</a> method in the user callback class whenever this objection is dropped at the object <i>obj</i>.</p></div></div></div>
<!--CONTENT index=25 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_callbacks_objection.all_dropped" href="../../src/base/uvm_objection.svh">all_dropped</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual task all_dropped (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Executes the <a href="#uvm_objection_callback.all_dropped" class=LMethod id=link67 onMouseOver="ShowTip(event, 'tt31', 'link67')" onMouseOut="HideTip('tt31')">uvm_objection_callback::all_dropped</a> task in the user callback class whenever the objection count for this objection in reference to <i>obj</i> goes to zero.</p></div></div></div>
<!--CONTENT index=26 -->
<div class="CClass"><div class=CTopic><h2 class=CTitle><a name="uvm_objection_callback" href="../../src/base/uvm_objection.svh">uvm_objection_callback</a></h2><div class=CBody><p>The uvm_objection is the callback type that defines the callback implementations for an objection callback.&nbsp; A user uses the callback type uvm_objection_cbs_t to add callbacks to specific objections.</p><h4 class=CHeading>For example</h4><blockquote><pre>class my_objection_cb extends uvm_objection_callback;
function new(string name);
super.new(name);
endfunction
virtual function void raised (uvm_objection objection, uvm_object obj,
uvm_object source_obj, string description, int count);
$display(&quot;%0t: Objection %s: Raised for %s&quot;, $time, objection.get_name(),
obj.get_full_name());
endfunction
endclass
...
initial begin
my_objection_cb cb = new(&quot;cb&quot;);
uvm_objection_cbs_t::add(null, cb); //typewide callback
end</pre></blockquote>
<!--START_ND_SUMMARY index=26-->
<div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable>
<!-- index=26 -->
<tr class="SClass"><td colspan=2 class=SEntry><a href="#uvm_objection_callback" id=link71 onMouseOver="ShowTip(event, 'tt3', 'link71')" onMouseOut="HideTip('tt3')">uvm_objection_callback</a></td></tr>
<tr class=SMain><td colspan=2 class=SWideDescription>The uvm_objection is the callback type that defines the callback implementations for an objection callback. </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=link68 onMouseOver="ShowTip(event, 'tt4', 'link68')" onMouseOut="HideTip('tt4')">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=link69 onMouseOver="ShowTip(event, 'tt5', 'link69')" onMouseOut="HideTip('tt5')">uvm_object</a></div></div></td></tr>
<tr><td><div class=CHParent><div class=CHEntry><a href="uvm_callback-svh.html#uvm_callback" class=LClass id=link70 onMouseOver="ShowTip(event, 'tt33', 'link70')" onMouseOut="HideTip('tt33')">uvm_callback</a></div></div></td></tr>
<tr><td><div class=CHCurrent><div class=CHEntry>uvm_objection_callback</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>class uvm_objection_callback extends uvm_callback
</td></tr></table></blockquote></td></tr>
<!-- index=27 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#uvm_objection_callback.Methods" >Methods</a></td><td class=SDescription></td></tr>
<!-- index=28 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_objection_callback.raised" id=link72 onMouseOver="ShowTip(event, 'tt27', 'link72')" onMouseOut="HideTip('tt27')">raised</a></td><td class=SDescription>Objection raised callback function. </td></tr>
<!-- index=29 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#uvm_objection_callback.dropped" id=link73 onMouseOver="ShowTip(event, 'tt29', 'link73')" onMouseOut="HideTip('tt29')">dropped</a></td><td class=SDescription>Objection dropped callback function. </td></tr>
<!-- index=30 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#uvm_objection_callback.all_dropped" id=link74 onMouseOver="ShowTip(event, 'tt31', 'link74')" onMouseOut="HideTip('tt31')">all_dropped</a></td><td class=SDescription>Objection all_dropped callback function. </td></tr></table></div></div><!--END_ND_SUMMARY-->
</div></div></div>
<!--CONTENT index=27 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="uvm_objection_callback.Methods" href="../../src/base/uvm_objection.svh">Methods</a></h3></div></div>
<!--CONTENT index=28 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection_callback.raised" href="../../src/base/uvm_objection.svh">raised</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void raised (</td> <td class=PType nowrap>uvm_objection&nbsp;</td>
<td class=PParameter nowrap>objection,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Objection raised callback function.&nbsp; Called by <a href="#uvm_callbacks_objection.raised" class=LMethod id=link75 onMouseOver="ShowTip(event, 'tt26', 'link75')" onMouseOut="HideTip('tt26')">uvm_callbacks_objection::raised</a>.</p></div></div></div>
<!--CONTENT index=29 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection_callback.dropped" href="../../src/base/uvm_objection.svh">dropped</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void dropped (</td> <td class=PType nowrap>uvm_objection&nbsp;</td>
<td class=PParameter nowrap>objection,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Objection dropped callback function.&nbsp; Called by <a href="#uvm_callbacks_objection.dropped" class=LMethod id=link76 onMouseOver="ShowTip(event, 'tt28', 'link76')" onMouseOut="HideTip('tt28')">uvm_callbacks_objection::dropped</a>.</p></div></div></div>
<!--CONTENT index=30 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="uvm_objection_callback.all_dropped" href="../../src/base/uvm_objection.svh">all_dropped</a></h3>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual task all_dropped (</td> <td class=PType nowrap>uvm_objection&nbsp;</td>
<td class=PParameter nowrap>objection,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
<div class=CBody><p>Objection all_dropped callback function.&nbsp; Called by <a href="#uvm_callbacks_objection.all_dropped" class=LMethod id=link77 onMouseOver="ShowTip(event, 'tt30', 'link77')" onMouseOut="HideTip('tt30')">uvm_callbacks_objection::all_dropped</a>.</p></div></div></div>
</div><!--Content-->
<!--START_ND_TOOLTIPS-->
<div class=CToolTip id="tt1"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_objection extends uvm_report_object
</td></tr></table></blockquote>Objections provide a facility for coordinating status information between two or more participating components, objects, and even module-based IP.</div></div><div class=CToolTip id="tt2"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_callbacks_objection extends uvm_objection
</td></tr></table></blockquote>The uvm_callbacks_objection is a specialized uvm_objection which contains callbacks for the raised and dropped events. </div></div><div class=CToolTip id="tt3"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_objection_callback extends uvm_callback
</td></tr></table></blockquote>The uvm_objection is the callback type that defines the callback implementations for an objection callback. </div></div><div class=CToolTip id="tt4"><div class=CGeneric>The <i>uvm_void</i> class is the base class for all UVM classes. </div></div><div class=CToolTip id="tt5"><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="tt6"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_report_object extends uvm_object
</td></tr></table></blockquote>The uvm_report_object provides an interface to the UVM reporting facility. </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>virtual function void clear(</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</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>
Immediately clears the objection state. </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 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>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Creates a new objection instance. </div></div><div class=CToolTip id="tt9"><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 bit trace_mode (</td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>mode</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>
Set or get the trace mode for the objection object. </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 m_set_hier_mode (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Hierarchical mode only needs to be set for intermediate components, not for uvm_root or a leaf component.</div></div><div class=CToolTip id="tt11"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void raise_objection (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;&quot;,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</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>
Raises the number of objections for the source <i>object</i> by <i>count</i>, which defaults to 1. </div></div><div class=CToolTip id="tt12"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void drop_objection (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;&quot;,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</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>
Drops the number of objections for the source <i>object</i> by <i>count</i>, which defaults to 1. </div></div><div class=CToolTip id="tt13"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void raised (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Objection callback that is called when a raise_objection has reached <i>obj</i>. </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>virtual function void dropped (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Objection callback that is called when a drop_objection has reached <i>obj</i>. </div></div><div class=CToolTip id="tt15"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual task all_dropped (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Objection callback that is called when a drop_objection has reached <i>obj</i>, and the total count for <i>obj</i> goes to zero. </div></div><div class=CToolTip id="tt16"><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 get_objectors(</td> <td class=PTypePrefix nowrap>ref&nbsp;</td>
<td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>list[$]</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Returns the current list of objecting objects (objects that raised an objection but have not dropped it).</div></div><div class=CToolTip id="tt17"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>task wait_for(</td> <td class=PType nowrap>uvm_objection_event&nbsp;</td>
<td class=PParameter nowrap>objt_event,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</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>
Waits for the raised, dropped, or all_dropped <i>event</i> to occur in the given <i>obj</i>. </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 int get_objection_count (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</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>
Returns the current number of objections raised by the given <i>object</i>.</div></div><div class=CToolTip id="tt19"><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 int get_objection_total (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</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>
Returns the current number of objections raised by the given <i>object</i> and all descendants.</div></div><div class=CToolTip id="tt20"><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 time get_drain_time (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</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>
Returns the current drain time set for the given <i>object</i> (default: 0 ns).</div></div><div class=CToolTip id="tt21"><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 display_objections(</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null,</td>
</tr><tr><td></td> <td class=PType nowrap>bit&nbsp;</td>
<td class=PParameter nowrap>show_header</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>
Displays objection information about the given <i>object</i>. </div></div><div class=CToolTip id="tt22"><div class=CClass>The <i>uvm_root</i> class serves as the implicit top-level and phase controller for all UVM components. </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>virtual function void raised (</td> <td class=PType nowrap>uvm_objection&nbsp;</td>
<td class=PParameter nowrap>objection,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
The <i>raised</i> callback is called when this or a descendant of this component instance raises the specfied <i>objection</i>. </div></div><div class=CToolTip id="tt24"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void dropped (</td> <td class=PType nowrap>uvm_objection&nbsp;</td>
<td class=PParameter nowrap>objection,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
The <i>dropped</i> callback is called when this or a descendant of this component instance drops the specfied <i>objection</i>. </div></div><div class=CToolTip id="tt25"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual task all_dropped (</td> <td class=PType nowrap>uvm_objection&nbsp;</td>
<td class=PParameter nowrap>objection,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
The <i>all_droppped</i> callback is called when all objections have been dropped by this component and all its descendants. </div></div><div class=CToolTip id="tt26"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void raised (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Executes the uvm_objection_callback::raised method in the user callback class whenever this objection is raised at the object <i>obj</i>.</div></div><div class=CToolTip id="tt27"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void raised (</td> <td class=PType nowrap>uvm_objection&nbsp;</td>
<td class=PParameter nowrap>objection,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Objection raised callback function. </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>virtual function void dropped (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Executes the uvm_objection_callback::dropped method in the user callback class whenever this objection is dropped at the object <i>obj</i>.</div></div><div class=CToolTip id="tt29"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual function void dropped (</td> <td class=PType nowrap>uvm_objection&nbsp;</td>
<td class=PParameter nowrap>objection,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Objection dropped callback function. </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>virtual task all_dropped (</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Executes the uvm_objection_callback::all_dropped task in the user callback class whenever the objection count for this objection in reference to <i>obj</i> goes to zero.</div></div><div class=CToolTip id="tt31"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters nowrap>virtual task all_dropped (</td> <td class=PType nowrap>uvm_objection&nbsp;</td>
<td class=PParameter nowrap>objection,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj,</td>
</tr><tr><td></td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>source_obj,</td>
</tr><tr><td></td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description,</td>
</tr><tr><td></td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PAfterParameters nowrap>)</td></tr>
</table></td></tr>
</table></blockquote>
Objection all_dropped callback function. </div></div><div class=CToolTip id="tt32"><div class=CClass>Heartbeats provide a way for environments to easily ensure that their descendants are alive. </div></div><div class=CToolTip id="tt33"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_callback extends uvm_object
</td></tr></table></blockquote>The <i>uvm_callback</i> class is the base class for user-defined callback classes. </div></div><!--END_ND_TOOLTIPS-->
<script language=JavaScript><!--
if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>