| <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. 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 </td><td class=PParameter nowrap>name,</td></tr><tr><td></td><td class=PType nowrap>bit </td><td class=PParameter nowrap>is_top_down,</td></tr><tr><td></td><td class=PType nowrap>bit </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. 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). 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 </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. A task-based phase is defined by subtyping ovm_phase and overriding this method. 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 </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. A function-based phase is defined by subtyping ovm_phase and overriding this method. 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. They are represented by callback methods. A set of predefined phases and corresponding callbacks are provided in ovm_component. Any class deriving from ovm_component may implement any or all of these callbacks, which are executed in a particular order. 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. May fork other processes. 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. 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. Define a new phase class, which must extend <i>ovm_phase</i>. To enable use of the phase by any component, we recommend this class be parameterized. The easiest way to define a new phase is to invoke a predefined macro. 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. 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. 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. 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(`"NAME`",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(`"NAME`",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. 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 </td><td class=PParameter nowrap>name,</td></tr><tr><td></td><td class=PType nowrap>bit </td><td class=PParameter nowrap>is_top_down,</td></tr><tr><td></td><td class=PType nowrap>bit </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 </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 </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> |