blob: 56a214113f40365db779f93db0b38fb04ac6f0c8 [file] [log] [blame]
<html><head><title>ovm_phase</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="ovm_phase" href="../../../../src/base/ovm_phases.sv">ovm_phase</a></h1><div class=CBody><p>The ovm_phase class is used for defining phases for ovm_component and its subclasses.&nbsp; For a list of predefined phases see <a href="ovm_component-svh.html#ovm_component.Phasing_Interface" class=LGroup id=link14 onMouseOver="ShowTip(event, 'tt14', 'link14')" onMouseOut="HideTip('tt14')">ovm_component::Phasing Interface</a></p>
<!--START_ND_SUMMARY index=0-->
<div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable>
<!-- index=0 -->
<tr class="SClass"><td colspan=2 class=SEntry><a href="#ovm_phase" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">ovm_phase</a></td></tr>
<tr class=SMain><td colspan=2 class=SWideDescription>The ovm_phase class is used for defining phases for ovm_component and its subclasses. </td></tr>
<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 ovm_phase</td></tr></table></blockquote></td></tr>
<!-- index=1 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#ovm_phase.Methods" >Methods</a></td><td class=SDescription></td></tr>
<!-- index=2 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_phase.new" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">new</a></td><td class=SDescription>Creates a phase object.</td></tr>
<!-- index=3 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_phase.get_name" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">get_name</a></td><td class=SDescription>Returns the name of the phase object as supplied in the constructor.</td></tr>
<!-- index=4 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_phase.is_task" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">is_task</a></td><td class=SDescription>Returns 1 if the phase is time consuming and 0 if not.</td></tr>
<!-- index=5 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_phase.is_top_down" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">is_top_down</a></td><td class=SDescription>Returns 1 if the phase executes top-down (executes the parent¿s phase callback before executing the children¿s callback) and 0 otherwise.</td></tr>
<!-- index=6 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_phase.get_type_name" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">get_type_name</a></td><td class=SDescription>Derived classes should override this method to return the phase type name.</td></tr>
<!-- index=7 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_phase.wait_start" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">wait_start</a></td><td class=SDescription>Waits until the phase has beed started.</td></tr>
<!-- index=8 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_phase.wait_done" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')">wait_done</a></td><td class=SDescription>Waits until the phase has been completed.</td></tr>
<!-- index=9 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_phase.is_in_progress" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')">is_in_progress</a></td><td class=SDescription>Returns 1 if the phase is currently in progress (active), 0 otherwise.</td></tr>
<!-- index=10 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_phase.is_done" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')">is_done</a></td><td class=SDescription>Returns 1 if the phase has completed, 0 otherwise.</td></tr>
<!-- index=11 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_phase.reset" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')">reset</a></td><td class=SDescription>Resets phase state such that is_done and is_in_progress both return 0.</td></tr>
<!-- index=12 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_phase.call_task" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')">call_task</a></td><td class=SDescription>Calls the task-based phase of the component given by parent, which must be derived from ovm_component. </td></tr>
<!-- index=13 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_phase.call_func" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')">call_func</a></td><td class=SDescription>Calls the function-based phase of the component given by parent. </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="ovm_phase.Methods" href="../../../../src/base/ovm_phases.sv">Methods</a></h3></div></div>
<!--CONTENT index=2 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_phase.new" href="../../../../src/base/ovm_phases.sv">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></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>is_top_down,</td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>is_task</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>Creates a phase object.</p><p>The name is the name of the phase.&nbsp; When is_top_down is set, the parent is phased before its children. is_task indicates whether the phase callback is a task (1) or function (0).&nbsp; Only tasks may consume simulation time and execute blocking statements.</p></div></div></div>
<!--CONTENT index=3 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_phase.get_name" href="../../../../src/base/ovm_phases.sv">get_name</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function string get_name ()</td></tr></table></blockquote><div class=CBody><p>Returns the name of the phase object as supplied in the constructor.</p></div></div></div>
<!--CONTENT index=4 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_phase.is_task" href="../../../../src/base/ovm_phases.sv">is_task</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function bit is_task ()</td></tr></table></blockquote><div class=CBody><p>Returns 1 if the phase is time consuming and 0 if not.</p></div></div></div>
<!--CONTENT index=5 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_phase.is_top_down" href="../../../../src/base/ovm_phases.sv">is_top_down</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function bit is_top_down ()</td></tr></table></blockquote><div class=CBody><p>Returns 1 if the phase executes top-down (executes the parent¿s phase callback before executing the children¿s callback) and 0 otherwise.</p></div></div></div>
<!--CONTENT index=6 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_phase.get_type_name" href="../../../../src/base/ovm_phases.sv">get_type_name</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function string get_type_name()</td></tr></table></blockquote><div class=CBody><p>Derived classes should override this method to return the phase type name.</p></div></div></div>
<!--CONTENT index=7 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_phase.wait_start" href="../../../../src/base/ovm_phases.sv">wait_start</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>task wait_start ()</td></tr></table></blockquote><div class=CBody><p>Waits until the phase has beed started.</p></div></div></div>
<!--CONTENT index=8 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_phase.wait_done" href="../../../../src/base/ovm_phases.sv">wait_done</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>task wait_done ()</td></tr></table></blockquote><div class=CBody><p>Waits until the phase has been completed.</p></div></div></div>
<!--CONTENT index=9 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_phase.is_in_progress" href="../../../../src/base/ovm_phases.sv">is_in_progress</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function bit is_in_progress ()</td></tr></table></blockquote><div class=CBody><p>Returns 1 if the phase is currently in progress (active), 0 otherwise.</p></div></div></div>
<!--CONTENT index=10 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_phase.is_done" href="../../../../src/base/ovm_phases.sv">is_done</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function bit is_done ()</td></tr></table></blockquote><div class=CBody><p>Returns 1 if the phase has completed, 0 otherwise.</p></div></div></div>
<!--CONTENT index=11 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_phase.reset" href="../../../../src/base/ovm_phases.sv">reset</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function void reset ()</td></tr></table></blockquote><div class=CBody><p>Resets phase state such that is_done and is_in_progress both return 0.</p></div></div></div>
<!--CONTENT index=12 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_phase.call_task" href="../../../../src/base/ovm_phases.sv">call_task</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 call_task (</td><td class=PType nowrap>ovm_component&nbsp;</td><td class=PParameter nowrap>parent</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>Calls the task-based phase of the component given by parent, which must be derived from ovm_component.&nbsp; A task-based phase is defined by subtyping ovm_phase and overriding this method.&nbsp; The override must $cast the base parent handle to the actual component type that defines the phase callback, and then call the phase callback.</p></div></div></div>
<!--CONTENT index=13 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_phase.call_func" href="../../../../src/base/ovm_phases.sv">call_func</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 call_func (</td><td class=PType nowrap>ovm_component&nbsp;</td><td class=PParameter nowrap>parent</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>Calls the function-based phase of the component given by parent.&nbsp; A function-based phase is defined by subtyping ovm_phase and overriding this method.&nbsp; The override must $cast the base parent handle to the actual component type that defines the phase callback, and then call that phase callback.</p></div></div></div>
<!--CONTENT index=14 -->
<div class="CSection"><div class=CTopic><h2 class=CTitle><a name="Usage" href="../../../../src/base/ovm_phases.sv">Usage</a></h2><div class=CBody><p>Phases are a synchronizing mechanism for the environment.&nbsp; They are represented by callback methods.&nbsp; A set of predefined phases and corresponding callbacks are provided in ovm_component.&nbsp; Any class deriving from ovm_component may implement any or all of these callbacks, which are executed in a particular order.&nbsp; Depending on the properties of any given phase, the corresponding callback is either a function or task, and it is executed in top-down or bottom-up order.</p><p>The OVM provides the following predefined phases for all ovm_components.</p><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>build</td><td class=CDLDescription>Depending on configuration and factory settings, create and configure additional component hierarchies.</td></tr><tr><td class=CDLEntry>connect</td><td class=CDLDescription>Connect ports, exports, and implementations (imps).</td></tr><tr><td class=CDLEntry>end_of_elaboration</td><td class=CDLDescription>Perform final configuration, topology, connection, and other integrity checks.</td></tr><tr><td class=CDLEntry>start_of_simulation</td><td class=CDLDescription>Do pre-run activities such as printing banners, pre-loading memories, etc.</td></tr><tr><td class=CDLEntry>run</td><td class=CDLDescription>Most verification is done in this time-consuming phase.&nbsp; May fork other processes.&nbsp; Phase ends when global_stop_request is called explicitly.</td></tr><tr><td class=CDLEntry>extract</td><td class=CDLDescription>Collect information from the run in preparation for checking.</td></tr><tr><td class=CDLEntry>check</td><td class=CDLDescription>Check simulation results against expected outcome.</td></tr><tr><td class=CDLEntry>report</td><td class=CDLDescription>Report simulation results.</td></tr></table><p>A phase is defined by an instance of an <i>ovm_phase</i> subtype.&nbsp; If a phase is to be shared among several component types, the instance must be accessible from a common scope, such as a package.</p><p>To have a user-defined phase get called back during simulation, the phase object must be registered with the top-level OVM phase controller, ovm_top.</p><h4 class=CHeading>Inheriting from the <i>ovm_phase</i> Class</h4><p>When creating a user-defined phase, you must do the following.</p><p>1.&nbsp; Define a new phase class, which must extend <i>ovm_phase</i>.&nbsp; To enable use of the phase by any component, we recommend this class be parameterized.&nbsp; The easiest way to define a new phase is to invoke a predefined macro.&nbsp; For example:</p><blockquote><pre>`ovm_phase_func_topdown_decl( preload )</pre></blockquote><p>This convenient phase declaration macro is described below.</p><p>2.&nbsp; Create a single instance of the phase in a convenient placein a package, or in the same scope as the component classes that will use the phase.</p><blockquote><pre>typedef class my_memory;
preload_phase #(my_memory) preload_ph = new;</pre></blockquote><p>3.&nbsp; Register the phase object with ovm_top.</p><blockquote><pre>class my_memory extends ovm_component;
function new(string name, ovm_component parent);
super.new(name,parent);
ovm_top.insert_phase(preload_ph, start_of_simulation_ph);
endfunction
virtual function void preload(); // our new phase
...
endfunction
endclass</pre></blockquote><h4 class=CHeading>Phase Macros (Optional)</h4><p>The following macros simplify the process of creating a user-defined phase.&nbsp; They create a phase type that is parameterized to the component class that uses the phase.</p>
<!--START_ND_SUMMARY index=14-->
<div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable>
<!-- index=14 -->
<tr class="SSection"><td class=SEntry><a href="#Usage" >Usage</a></td><td class=SDescription>Phases are a synchronizing mechanism for the environment. </td></tr>
<!-- index=15 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Macros" >Macros</a></td><td class=SDescription></td></tr>
<!-- index=16 -->
<tr class="SMacro SIndent2"><td class=SEntry><a href="#`ovm_phase_func_decl" >`ovm_phase_func_decl</a></td><td class=SDescription>`ovm_phase_func_decl (PHASE_NAME, TOP_DOWN)</td></tr>
<!-- index=17 -->
<tr class="SMacro SIndent2 SMarked"><td class=SEntry><a href="#`ovm_phase_task_decl" >`ovm_phase_task_decl</a></td><td class=SDescription></td></tr>
<!-- index=18 -->
<tr class="SMacro SIndent2 SMarked"><td class=SEntry><a href="#`ovm_phase_func_topdown_decl" >`ovm_phase_func_topdown_decl</a></td><td class=SDescription></td></tr>
<!-- index=19 -->
<tr class="SMacro SIndent2 SMarked"><td class=SEntry><a href="#`ovm_phase_func_bottomup_decl" >`ovm_phase_func_bottomup_decl</a></td><td class=SDescription></td></tr>
<!-- index=20 -->
<tr class="SMacro SIndent2 SMarked"><td class=SEntry><a href="#`ovm_phase_task_topdown_decl" >`ovm_phase_task_topdown_decl</a></td><td class=SDescription></td></tr>
<!-- index=21 -->
<tr class="SMacro SIndent2 SMarked"><td class=SEntry><a href="#`ovm_phase_task_bottomup_decl" >`ovm_phase_task_bottomup_decl</a></td><td class=SDescription>These alternative macros have a single phase name argument. </td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
<!--CONTENT index=15 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Macros" href="../../../../src/base/ovm_phases.sv">Macros</a></h3></div></div>
<!--CONTENT index=16 -->
<div class="CMacro"><div class=CTopic><h3 class=CTitle><a name="`ovm_phase_func_decl" href="../../../../src/base/ovm_phases.sv">`ovm_phase_func_decl</a></h3><div class=CBody><p>`ovm_phase_func_decl (PHASE_NAME, TOP_DOWN)</p><p>The <i>PHASE_NAME</i> argument is used to define the name of the phase, the name of the component method that is called back during phase execution, and the prefix of the type-name of the phase class that gets generated.</p><p>The above macro creates the following class definition.</p><blockquote><pre>class PHASE_NAME``_phase #(type PARENT=int) extends ovm_phase;
PARENT m_parent;
function new();
super.new(`&quot;NAME`&quot;,TOP_DOWN,1);
endfunction
virtual function void call_func();
m_parent.NAME(); // call the component¿s phase callback
endtask
virtual task execute(ovm_component parent);
assert($cast(m_parent,parent));
call_func();
endtask
endclass</pre></blockquote></div></div></div>
<!--CONTENT index=17 -->
<div class="CMacro"><div class=CTopic><h3 class=CTitle><a name="`ovm_phase_task_decl" href="../../../../src/base/ovm_phases.sv">`ovm_phase_task_decl</a></h3><div class=CBody><blockquote><pre>`ovm_phase_task_decl (PHASE_NAME, TOP_DOWN)</pre></blockquote><p>The above macro creates the following class definition.</p><blockquote><pre>class PHASE_NAME``_phase #(type PARENT=int) extends ovm_phase;
PARENT m_parent;
function new();
super.new(`&quot;NAME`&quot;,TOP_DOWN,1);
endfunction
virtual task call_task();
m_parent.NAME(); // call the component¿s phase callback
endtask
virtual task execute(ovm_component parent);
assert($cast(m_parent,parent));
call_task();
endtask
endclass</pre></blockquote></div></div></div>
<!--CONTENT index=18 -->
<div class="CMacro"><div class=CTopic><h3 class=CTitle><a name="`ovm_phase_func_topdown_decl" href="../../../../src/base/ovm_phases.sv">`ovm_phase_func_topdown_decl</a></h3></div></div>
<!--CONTENT index=19 -->
<div class="CMacro"><div class=CTopic><h3 class=CTitle><a name="`ovm_phase_func_bottomup_decl" href="../../../../src/base/ovm_phases.sv">`ovm_phase_func_bottomup_decl</a></h3></div></div>
<!--CONTENT index=20 -->
<div class="CMacro"><div class=CTopic><h3 class=CTitle><a name="`ovm_phase_task_topdown_decl" href="../../../../src/base/ovm_phases.sv">`ovm_phase_task_topdown_decl</a></h3></div></div>
<!--CONTENT index=21 -->
<div class="CMacro"><div class=CTopic><h3 class=CTitle><a name="`ovm_phase_task_bottomup_decl" href="../../../../src/base/ovm_phases.sv">`ovm_phase_task_bottomup_decl</a></h3><div class=CBody><p>These alternative macros have a single phase name argument.&nbsp; The top-down or bottom-up selection is specified in the macro name, which makes them more self-documenting than those with a 0 or 1 2nd argument.</p><blockquote><pre>`define ovm_phase_func_topdown_decl `ovm_phase_func_decl (PHASE_NAME,1)
`define ovm_phase_func_bottomup_decl `ovm_phase_func_decl (PHASE_NAME,0)
`define ovm_phase_task_topdown_decl `ovm_phase_task_decl (PHASE_NAME,1)
`define ovm_phase_task_bottomup_decl `ovm_phase_task_decl (PHASE_NAME,0)</pre></blockquote></div></div></div>
</div><!--Content-->
<!--START_ND_TOOLTIPS-->
<div class=CToolTip id="tt1"><div class=CClass><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class ovm_phase</td></tr></table></blockquote>The ovm_phase class is used for defining phases for ovm_component and its subclasses. </div></div><div class=CToolTip id="tt2"><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></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>is_top_down,</td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>is_task</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Creates a phase object.</div></div><div class=CToolTip id="tt3"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function string get_name ()</td></tr></table></blockquote>Returns the name of the phase object as supplied in the constructor.</div></div><div class=CToolTip id="tt4"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function bit is_task ()</td></tr></table></blockquote>Returns 1 if the phase is time consuming and 0 if not.</div></div><div class=CToolTip id="tt5"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function bit is_top_down ()</td></tr></table></blockquote>Returns 1 if the phase executes top-down (executes the parent¿s phase callback before executing the children¿s callback) and 0 otherwise.</div></div><div class=CToolTip id="tt6"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function string get_type_name()</td></tr></table></blockquote>Derived classes should override this method to return the phase type name.</div></div><div class=CToolTip id="tt7"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>task wait_start ()</td></tr></table></blockquote>Waits until the phase has beed started.</div></div><div class=CToolTip id="tt8"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>task wait_done ()</td></tr></table></blockquote>Waits until the phase has been completed.</div></div><div class=CToolTip id="tt9"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function bit is_in_progress ()</td></tr></table></blockquote>Returns 1 if the phase is currently in progress (active), 0 otherwise.</div></div><div class=CToolTip id="tt10"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function bit is_done ()</td></tr></table></blockquote>Returns 1 if the phase has completed, 0 otherwise.</div></div><div class=CToolTip id="tt11"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function void reset ()</td></tr></table></blockquote>Resets phase state such that is_done and is_in_progress both return 0.</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 task call_task (</td><td class=PType nowrap>ovm_component&nbsp;</td><td class=PParameter nowrap>parent</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Calls the task-based phase of the component given by parent, which must be derived from ovm_component. </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 call_func (</td><td class=PType nowrap>ovm_component&nbsp;</td><td class=PParameter nowrap>parent</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Calls the function-based phase of the component given by parent. </div></div><div class=CToolTip id="tt14"><div class=CGroup>Components execute their behavior in strictly ordered, pre-defined phases. </div></div><!--END_ND_TOOLTIPS-->
<script language=JavaScript><!--
if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>