blob: 1fa217ed716f40dcd83d8352f294c75bb67a865b [file] [log] [blame]
<html><head><title>ovm_component</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_component" href="../../../../src/base/ovm_component.svh">ovm_component</a></h1><div class=CBody><p>The ovm_component class is the root base class for OVM components.&nbsp; In addition to the features inherited from <a href="ovm_object-svh.html#ovm_object" class=LClass id=link88 onMouseOver="ShowTip(event, 'tt1', 'link88')" onMouseOut="HideTip('tt1')">ovm_object</a> and <a href="ovm_report_object-svh.html#ovm_report_object" class=LClass id=link89 onMouseOver="ShowTip(event, 'tt2', 'link89')" onMouseOut="HideTip('tt2')">ovm_report_object</a>, ovm_component provides the following interfaces:</p><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>Hierarchy</td><td class=CDLDescription>provides methods for searching and traversing the component hierarchy.</td></tr><tr><td class=CDLEntry>Configuration</td><td class=CDLDescription>provides methods for configuring component topology and other parameters ahead of and during component construction.</td></tr><tr><td class=CDLEntry>Phasing</td><td class=CDLDescription>defines a phased test flow that all components follow.&nbsp; Derived components implement one or more of the predefined phase callback methods to perform their function.&nbsp; During simulation, all components&rsquo; callbacks are executed in precise order.&nbsp; Phasing is controlled by ovm_top, the singleton instance of <a href="ovm_root-svh.html#ovm_root" class=LClass id=link90 onMouseOver="ShowTip(event, 'tt76', 'link90')" onMouseOut="HideTip('tt76')">ovm_root</a>.</td></tr><tr><td class=CDLEntry>Reporting</td><td class=CDLDescription>provides a convenience interface to the <a href="ovm_report_handler-svh.html#ovm_report_handler" class=LClass id=link91 onMouseOver="ShowTip(event, 'tt77', 'link91')" onMouseOut="HideTip('tt77')">ovm_report_handler</a>.&nbsp; All messages, warnings, and errors are processed through this interface.</td></tr><tr><td class=CDLEntry>Transaction recording</td><td class=CDLDescription>provides methods for recording the transactions produced or consumed by the component to a transaction database (vendor specific).</td></tr><tr><td class=CDLEntry>Factory</td><td class=CDLDescription>provides a convenience interface to the <a href="ovm_factory-svh.html#ovm_factory" class=LClass id=link92 onMouseOver="ShowTip(event, 'tt45', 'link92')" onMouseOut="HideTip('tt45')">ovm_factory</a>.&nbsp; The factory is used to create new components and other objects based on type-wide and instance-specific configuration.</td></tr></table><p>The ovm_component is automatically seeded during construction using OVM seeding, if enabled.&nbsp; All other objects must be manually reseeded, if appropriate.&nbsp; See <a href="ovm_object-svh.html#ovm_object.reseed" class=LMethod id=link93 onMouseOver="ShowTip(event, 'tt78', 'link93')" onMouseOut="HideTip('tt78')">ovm_object::reseed</a> for more information.</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_component" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">ovm_component</a></td></tr>
<tr class=SMain><td colspan=2 class=SWideDescription>The ovm_component class is the root base class for OVM components. </td></tr>
<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="ovm_object-svh.html#ovm_object" class=LClass id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">ovm_object</a></div></div></td></tr>
<tr><td><div class=CHParent><div class=CHEntry><a href="ovm_report_object-svh.html#ovm_report_object" class=LClass id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">ovm_report_object</a></div></div></td></tr>
<tr><td><div class=CHCurrent><div class=CHEntry>ovm_component</div></div></td></tr></table>
</div></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_component extends ovm_report_object</td></tr></table></blockquote></td></tr>
<!-- index=1 -->
<tr class="SMethod SIndent1 SMarked"><td class=SEntry><a href="#ovm_component.new" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">new</a></td><td class=SDescription>Creates a new component with the given leaf instance <i>name</i> and handle to to its <i>parent</i>. </td></tr>
<!-- index=2 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#ovm_component.Hierarchy_Interface" >Hierarchy Interface</a></td><td class=SDescription>These methods provide user access to information about the component hierarchy, i.e., topology.</td></tr>
<!-- index=3 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.get_parent" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">get_parent</a></td><td class=SDescription>Returns a handle to this component&rsquo;s parent, or null if it has no parent.</td></tr>
<!-- index=4 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.get_full_name" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">get_full_name</a></td><td class=SDescription>Returns the full hierarchical name of this object. </td></tr>
<!-- index=5 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.get_child" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">get_child</a></td><td class=SDescription></td></tr>
<!-- index=6 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.get_next_child" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')">get_next_child</a></td><td class=SDescription></td></tr>
<!-- index=7 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.get_first_child" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')">get_first_child</a></td><td class=SDescription>These methods are used to iterate through this component&rsquo;s children, if any. </td></tr>
<!-- index=8 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.get_num_children" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')">get_num_children</a></td><td class=SDescription>Returns the number of this component&rsquo;s children.</td></tr>
<!-- index=9 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.has_child" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')">has_child</a></td><td class=SDescription>Returns 1 if this component has a child with the given <i>name</i>, 0 otherwise.</td></tr>
<!-- index=10 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.set_name" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')">set_name</a></td><td class=SDescription>Renames this component to <i>name</i> and recalculates all descendants&rsquo; full names.</td></tr>
<!-- index=11 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.lookup" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')">lookup</a></td><td class=SDescription>Looks for a component with the given hierarchical <i>name</i> relative to this component. </td></tr>
<!-- index=12 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#ovm_component.Phasing_Interface" >Phasing Interface</a></td><td class=SDescription>Components execute their behavior in strictly ordered, pre-defined phases. </td></tr>
<!-- index=13 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.build" id=link14 onMouseOver="ShowTip(event, 'tt14', 'link14')" onMouseOut="HideTip('tt14')">build</a></td><td class=SDescription>The build phase callback is the first of several methods automatically called during the course of simulation. </td></tr>
<!-- index=14 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.connect" id=link15 onMouseOver="ShowTip(event, 'tt15', 'link15')" onMouseOut="HideTip('tt15')">connect</a></td><td class=SDescription>The connect phase callback is one of several methods automatically called during the course of simulation.</td></tr>
<!-- index=15 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.end_of_elaboration" id=link16 onMouseOver="ShowTip(event, 'tt16', 'link16')" onMouseOut="HideTip('tt16')">end_of_elaboration</a></td><td class=SDescription>The end_of_elaboration phase callback is one of several methods automatically called during the course of simulation.</td></tr>
<!-- index=16 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.start_of_simulation" id=link17 onMouseOver="ShowTip(event, 'tt17', 'link17')" onMouseOut="HideTip('tt17')">start_of_simulation</a></td><td class=SDescription>The start_of_simulation phase callback is one of several methods automatically called during the course of simulation.</td></tr>
<!-- index=17 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.run" id=link18 onMouseOver="ShowTip(event, 'tt18', 'link18')" onMouseOut="HideTip('tt18')">run</a></td><td class=SDescription>The run phase callback is the only predefined phase that is time-consuming, i.e., task-based. </td></tr>
<!-- index=18 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.extract" id=link19 onMouseOver="ShowTip(event, 'tt19', 'link19')" onMouseOut="HideTip('tt19')">extract</a></td><td class=SDescription>The extract phase callback is one of several methods automatically called during the course of simulation.</td></tr>
<!-- index=19 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.check" id=link20 onMouseOver="ShowTip(event, 'tt20', 'link20')" onMouseOut="HideTip('tt20')">check</a></td><td class=SDescription>The check phase callback is one of several methods automatically called during the course of simulation.</td></tr>
<!-- index=20 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.report" id=link21 onMouseOver="ShowTip(event, 'tt21', 'link21')" onMouseOut="HideTip('tt21')">report</a></td><td class=SDescription>The report phase callback is the last of several predefined phase methods automatically called during the course of simulation.</td></tr>
<!-- index=21 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.suspend" id=link22 onMouseOver="ShowTip(event, 'tt22', 'link22')" onMouseOut="HideTip('tt22')">suspend</a></td><td class=SDescription>Suspends the process tree spawned from this component&rsquo;s currently executing task-based phase, e.g. </td></tr>
<!-- index=22 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.resume" id=link23 onMouseOver="ShowTip(event, 'tt23', 'link23')" onMouseOut="HideTip('tt23')">resume</a></td><td class=SDescription>Resumes the process tree spawned from this component&rsquo;s currently executing task-based phase, e.g. </td></tr>
<!-- index=23 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.status" id=link24 onMouseOver="ShowTip(event, 'tt24', 'link24')" onMouseOut="HideTip('tt24')">status</a></td><td class=SDescription>Returns the status of the parent process associated with the currently running task-based phase, e.g., <a href="#ovm_component.run" class=LMethod id=link25 onMouseOver="ShowTip(event, 'tt18', 'link25')" onMouseOut="HideTip('tt18')">run</a>.</td></tr>
<!-- index=24 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.kill" id=link26 onMouseOver="ShowTip(event, 'tt25', 'link26')" onMouseOut="HideTip('tt25')">kill</a></td><td class=SDescription>Kills the process tree associated with this component&rsquo;s currently running task-based phase, e.g., <a href="#ovm_component.run" class=LMethod id=link27 onMouseOver="ShowTip(event, 'tt18', 'link27')" onMouseOut="HideTip('tt18')">run</a>.</td></tr>
<!-- index=25 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.do_kill_all" id=link28 onMouseOver="ShowTip(event, 'tt26', 'link28')" onMouseOut="HideTip('tt26')">do_kill_all</a></td><td class=SDescription>Recursively calls <a href="#ovm_component.kill" class=LMethod id=link29 onMouseOver="ShowTip(event, 'tt25', 'link29')" onMouseOut="HideTip('tt25')">kill</a> on this component and all its descendants, which abruptly ends the currently running task-based phase, e.g., <a href="#ovm_component.run" class=LMethod id=link30 onMouseOver="ShowTip(event, 'tt18', 'link30')" onMouseOut="HideTip('tt18')">run</a>. </td></tr>
<!-- index=26 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.stop" id=link31 onMouseOver="ShowTip(event, 'tt27', 'link31')" onMouseOut="HideTip('tt27')">stop</a></td><td class=SDescription>The stop task is called when this component&rsquo;s <a href="#ovm_component.enable_stop_interrupt" class=LVariable id=link32 onMouseOver="ShowTip(event, 'tt28', 'link32')" onMouseOut="HideTip('tt28')">enable_stop_interrupt</a> bit is set and <a href="ovm_globals-svh.html#global_stop_request" class=LMethod id=link33 onMouseOver="ShowTip(event, 'tt29', 'link33')" onMouseOut="HideTip('tt29')">global_stop_request</a> is called during a task-based phase, e.g., <a href="#ovm_component.run" class=LMethod id=link34 onMouseOver="ShowTip(event, 'tt18', 'link34')" onMouseOut="HideTip('tt18')">run</a>.</td></tr>
<!-- index=27 -->
<tr class="SVariable SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.enable_stop_interrupt" id=link35 onMouseOver="ShowTip(event, 'tt28', 'link35')" onMouseOut="HideTip('tt28')">enable_stop_interrupt</a></td><td class=SDescription>This bit allows a component to raise an objection to the stopping of the current phase. </td></tr>
<!-- index=28 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.resolve_bindings" id=link36 onMouseOver="ShowTip(event, 'tt30', 'link36')" onMouseOut="HideTip('tt30')">resolve_bindings</a></td><td class=SDescription>Processes all port, export, and imp connections. </td></tr>
<!-- index=29 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#ovm_component.Configuration_Interface" >Configuration Interface</a></td><td class=SDescription>Components can be designed to be user-configurable in terms of its topology (the type and number of children it has), mode of operation, and run-time parameters (knobs). </td></tr>
<!-- index=30 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.set_config_int" id=link37 onMouseOver="ShowTip(event, 'tt31', 'link37')" onMouseOut="HideTip('tt31')">set_config_int</a></td><td class=SDescription></td></tr>
<!-- index=31 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.set_config_string" id=link38 onMouseOver="ShowTip(event, 'tt32', 'link38')" onMouseOut="HideTip('tt32')">set_config_string</a></td><td class=SDescription></td></tr>
<!-- index=32 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.set_config_object" id=link39 onMouseOver="ShowTip(event, 'tt33', 'link39')" onMouseOut="HideTip('tt33')">set_config_object</a></td><td class=SDescription>Calling set_config_* causes configuration settings to be created and placed in a table internal to this component. </td></tr>
<!-- index=33 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.get_config_int" id=link40 onMouseOver="ShowTip(event, 'tt34', 'link40')" onMouseOut="HideTip('tt34')">get_config_int</a></td><td class=SDescription></td></tr>
<!-- index=34 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.get_config_string" id=link41 onMouseOver="ShowTip(event, 'tt35', 'link41')" onMouseOut="HideTip('tt35')">get_config_string</a></td><td class=SDescription></td></tr>
<!-- index=35 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.get_config_object" id=link42 onMouseOver="ShowTip(event, 'tt36', 'link42')" onMouseOut="HideTip('tt36')">get_config_object</a></td><td class=SDescription>These methods retrieve configuration settings made by previous calls to their set_config_* counterparts. </td></tr>
<!-- index=36 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.check_config_usage" id=link43 onMouseOver="ShowTip(event, 'tt37', 'link43')" onMouseOut="HideTip('tt37')">check_config_usage</a></td><td class=SDescription>Check all configuration settings in a components configuration table to determine if the setting has been used, overridden or not used. </td></tr>
<!-- index=37 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.apply_config_settings" id=link44 onMouseOver="ShowTip(event, 'tt38', 'link44')" onMouseOut="HideTip('tt38')">apply_config_settings</a></td><td class=SDescription>Searches for all config settings matching this component&rsquo;s instance path. </td></tr>
<!-- index=38 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.print_config_settings" id=link45 onMouseOver="ShowTip(event, 'tt39', 'link45')" onMouseOut="HideTip('tt39')">print_config_settings</a></td><td class=SDescription>Called without arguments, print_config_settings prints all configuration information for this component, as set by previous calls to set_config_*. </td></tr>
<!-- index=39 -->
<tr class="SVariable SIndent2"><td class=SEntry><a href="#ovm_component.print_config_matches" id=link46 onMouseOver="ShowTip(event, 'tt40', 'link46')" onMouseOut="HideTip('tt40')">print_config_matches</a></td><td class=SDescription>Setting this static variable causes get_config_* to print info about matching configuration settings as they are being applied.</td></tr>
<!-- index=40 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#ovm_component.Objection_Interface" >Objection Interface</a></td><td class=SDescription>These methods provide object level hooks into the <a href="ovm_objection-svh.html#ovm_objection" class=LClass id=link47 onMouseOver="ShowTip(event, 'tt41', 'link47')" onMouseOut="HideTip('tt41')">ovm_objection</a> mechanism.</td></tr>
<!-- index=41 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.raised" id=link48 onMouseOver="ShowTip(event, 'tt42', 'link48')" onMouseOut="HideTip('tt42')">raised</a></td><td class=SDescription>The raised callback is called when a decendant of the component instance raises the specfied <i>objection</i>. </td></tr>
<!-- index=42 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.dropped" id=link49 onMouseOver="ShowTip(event, 'tt43', 'link49')" onMouseOut="HideTip('tt43')">dropped</a></td><td class=SDescription>The dropped callback is called when a decendant of the component instance raises the specfied <i>objection</i>. </td></tr>
<!-- index=43 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.all_dropped" id=link50 onMouseOver="ShowTip(event, 'tt44', 'link50')" onMouseOut="HideTip('tt44')">all_dropped</a></td><td class=SDescription>The all_dropped callback is called when a decendant of the component instance raises the specfied <i>objection</i>. </td></tr>
<!-- index=44 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#ovm_component.Factory_Interface" >Factory Interface</a></td><td class=SDescription>The factory interface provides convenient access to a portion of OVM&rsquo;s <a href="ovm_factory-svh.html#ovm_factory" class=LClass id=link51 onMouseOver="ShowTip(event, 'tt45', 'link51')" onMouseOut="HideTip('tt45')">ovm_factory</a> interface. </td></tr>
<!-- index=45 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.create_component" id=link52 onMouseOver="ShowTip(event, 'tt46', 'link52')" onMouseOut="HideTip('tt46')">create_component</a></td><td class=SDescription>A convenience function for <a href="ovm_factory-svh.html#ovm_factory.create_component_by_name" class=LMethod id=link53 onMouseOver="ShowTip(event, 'tt47', 'link53')" onMouseOut="HideTip('tt47')">ovm_factory::create_component_by_name</a>, this method calls upon the factory to create a new child component whose type corresponds to the preregistered type name, <i>requested_type_name</i>, and instance name, <i>name</i>. </td></tr>
<!-- index=46 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.create_object" id=link54 onMouseOver="ShowTip(event, 'tt48', 'link54')" onMouseOut="HideTip('tt48')">create_object</a></td><td class=SDescription>A convenience function for <a href="ovm_factory-svh.html#ovm_factory.create_object_by_name" class=LMethod id=link55 onMouseOver="ShowTip(event, 'tt49', 'link55')" onMouseOut="HideTip('tt49')">ovm_factory::create_object_by_name</a>, this method calls upon the factory to create a new object whose type corresponds to the preregistered type name, <i>requested_type_name</i>, and instance name, <i>name</i>. </td></tr>
<!-- index=47 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.set_type_override_by_type" id=link56 onMouseOver="ShowTip(event, 'tt50', 'link56')" onMouseOut="HideTip('tt50')">set_type_override_by_type</a></td><td class=SDescription>A convenience function for <a href="ovm_factory-svh.html#ovm_factory.set_type_override_by_type" class=LMethod id=link57 onMouseOver="ShowTip(event, 'tt51', 'link57')" onMouseOut="HideTip('tt51')">ovm_factory::set_type_override_by_type</a>, this method registers a factory override for components and objects created at this level of hierarchy or below. </td></tr>
<!-- index=48 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.set_inst_override_by_type" id=link58 onMouseOver="ShowTip(event, 'tt52', 'link58')" onMouseOut="HideTip('tt52')">set_inst_override_by_type</a></td><td class=SDescription>A convenience function for <a href="ovm_factory-svh.html#ovm_factory.set_inst_override_by_type" class=LMethod id=link59 onMouseOver="ShowTip(event, 'tt53', 'link59')" onMouseOut="HideTip('tt53')">ovm_factory::set_inst_override_by_type</a>, this method registers a factory override for components and objects created at this level of hierarchy or below. </td></tr>
<!-- index=49 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.set_type_override" id=link60 onMouseOver="ShowTip(event, 'tt54', 'link60')" onMouseOut="HideTip('tt54')">set_type_override</a></td><td class=SDescription>A convenience function for <a href="ovm_factory-svh.html#ovm_factory.set_type_override_by_name" class=LMethod id=link61 onMouseOver="ShowTip(event, 'tt55', 'link61')" onMouseOut="HideTip('tt55')">ovm_factory::set_type_override_by_name</a>, this method configures the factory to create an object of type <i>override_type_name</i> whenever the factory is asked to produce a type represented by <i>original_type_name</i>. </td></tr>
<!-- index=50 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.set_inst_override" id=link62 onMouseOver="ShowTip(event, 'tt56', 'link62')" onMouseOut="HideTip('tt56')">set_inst_override</a></td><td class=SDescription>A convenience function for <a href="ovm_factory-svh.html#ovm_factory.set_inst_override_by_type" class=LMethod id=link63 onMouseOver="ShowTip(event, 'tt53', 'link63')" onMouseOut="HideTip('tt53')">ovm_factory::set_inst_override_by_type</a>, this method registers a factory override for components created at this level of hierarchy or below. </td></tr>
<!-- index=51 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.print_override_info" id=link64 onMouseOver="ShowTip(event, 'tt57', 'link64')" onMouseOut="HideTip('tt57')">print_override_info</a></td><td class=SDescription>This factory debug method performs the same lookup process as create_object and create_component, but instead of creating an object, it prints information about what type of object would be created given the provided arguments.</td></tr>
<!-- index=52 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#ovm_component.Hierarchical_Reporting_Interface" >Hierarchical Reporting Interface</a></td><td class=SDescription>This interface provides versions of the set_report_* methods in the <a href="ovm_report_object-svh.html#ovm_report_object" class=LClass id=link65 onMouseOver="ShowTip(event, 'tt2', 'link65')" onMouseOut="HideTip('tt2')">ovm_report_object</a> base class that are applied recursively to this component and all its children.</td></tr>
<!-- index=53 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.set_report_severity_action_hier" id=link66 onMouseOver="ShowTip(event, 'tt58', 'link66')" onMouseOut="HideTip('tt58')">set_report_severity_action_hier</a></td><td class=SDescription></td></tr>
<!-- index=54 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.set_report_id_action_hier" id=link67 onMouseOver="ShowTip(event, 'tt59', 'link67')" onMouseOut="HideTip('tt59')">set_report_id_action_hier</a></td><td class=SDescription></td></tr>
<!-- index=55 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.set_report_severity_id_action_hier" id=link68 onMouseOver="ShowTip(event, 'tt60', 'link68')" onMouseOut="HideTip('tt60')">set_report_severity_id_action_hier</a></td><td class=SDescription>These methods recursively associate the specified action with reports of the given <i>severity</i>, <i>id</i>, or <i>severity-id</i> pair. </td></tr>
<!-- index=56 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.set_report_default_file_hier" id=link69 onMouseOver="ShowTip(event, 'tt61', 'link69')" onMouseOut="HideTip('tt61')">set_report_default_file_hier</a></td><td class=SDescription></td></tr>
<!-- index=57 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.set_report_severity_file_hier" id=link70 onMouseOver="ShowTip(event, 'tt62', 'link70')" onMouseOut="HideTip('tt62')">set_report_severity_file_hier</a></td><td class=SDescription></td></tr>
<!-- index=58 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.set_report_id_file_hier" id=link71 onMouseOver="ShowTip(event, 'tt63', 'link71')" onMouseOut="HideTip('tt63')">set_report_id_file_hier</a></td><td class=SDescription></td></tr>
<!-- index=59 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.set_report_severity_id_file_hier" id=link72 onMouseOver="ShowTip(event, 'tt64', 'link72')" onMouseOut="HideTip('tt64')">set_report_severity_id_file_hier</a></td><td class=SDescription>These methods recursively associate the specified FILE descriptor with reports of the given <i>severity</i>, <i>id</i>, or <i>severity-id</i> pair. </td></tr>
<!-- index=60 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.set_report_verbosity_level_hier" id=link73 onMouseOver="ShowTip(event, 'tt65', 'link73')" onMouseOut="HideTip('tt65')">set_report_verbosity_level_hier</a></td><td class=SDescription>This method recursively sets the maximum verbosity level for reports for this component and all those below it. </td></tr>
<!-- index=61 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#ovm_component.Recording_Interface" >Recording Interface</a></td><td class=SDescription>These methods comprise the component-based transaction recording interface. </td></tr>
<!-- index=62 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.accept_tr" id=link74 onMouseOver="ShowTip(event, 'tt66', 'link74')" onMouseOut="HideTip('tt66')">accept_tr</a></td><td class=SDescription>This function marks the acceptance of a transaction, <i>tr</i>, by this component. </td></tr>
<!-- index=63 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.do_accept_tr" id=link75 onMouseOver="ShowTip(event, 'tt67', 'link75')" onMouseOut="HideTip('tt67')">do_accept_tr</a></td><td class=SDescription>The <a href="#ovm_component.accept_tr" class=LMethod id=link76 onMouseOver="ShowTip(event, 'tt66', 'link76')" onMouseOut="HideTip('tt66')">accept_tr</a> method calls this function to accommodate any user-defined post-accept action. </td></tr>
<!-- index=64 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.begin_tr" id=link77 onMouseOver="ShowTip(event, 'tt68', 'link77')" onMouseOut="HideTip('tt68')">begin_tr</a></td><td class=SDescription>This function marks the start of a transaction, <i>tr</i>, by this component. </td></tr>
<!-- index=65 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.begin_child_tr" id=link78 onMouseOver="ShowTip(event, 'tt69', 'link78')" onMouseOut="HideTip('tt69')">begin_child_tr</a></td><td class=SDescription>This function marks the start of a child transaction, <i>tr</i>, by this component. </td></tr>
<!-- index=66 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.do_begin_tr" id=link79 onMouseOver="ShowTip(event, 'tt70', 'link79')" onMouseOut="HideTip('tt70')">do_begin_tr</a></td><td class=SDescription>The <a href="#ovm_component.begin_tr" class=LMethod id=link80 onMouseOver="ShowTip(event, 'tt68', 'link80')" onMouseOut="HideTip('tt68')">begin_tr</a> and <a href="#ovm_component.begin_child_tr" class=LMethod id=link81 onMouseOver="ShowTip(event, 'tt69', 'link81')" onMouseOut="HideTip('tt69')">begin_child_tr</a> methods call this function to accommodate any user-defined post-begin action. </td></tr>
<!-- index=67 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.end_tr" id=link82 onMouseOver="ShowTip(event, 'tt71', 'link82')" onMouseOut="HideTip('tt71')">end_tr</a></td><td class=SDescription>This function marks the end of a transaction, <i>tr</i>, by this component. </td></tr>
<!-- index=68 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.do_end_tr" id=link83 onMouseOver="ShowTip(event, 'tt72', 'link83')" onMouseOut="HideTip('tt72')">do_end_tr</a></td><td class=SDescription>The <a href="#ovm_component.end_tr" class=LMethod id=link84 onMouseOver="ShowTip(event, 'tt71', 'link84')" onMouseOut="HideTip('tt71')">end_tr</a> method calls this function to accommodate any user-defined post-end action. </td></tr>
<!-- index=69 -->
<tr class="SMethod SIndent2"><td class=SEntry><a href="#ovm_component.record_error_tr" id=link85 onMouseOver="ShowTip(event, 'tt73', 'link85')" onMouseOut="HideTip('tt73')">record_error_tr</a></td><td class=SDescription>This function marks an error transaction by a component. </td></tr>
<!-- index=70 -->
<tr class="SMethod SIndent2 SMarked"><td class=SEntry><a href="#ovm_component.record_event_tr" id=link86 onMouseOver="ShowTip(event, 'tt74', 'link86')" onMouseOut="HideTip('tt74')">record_event_tr</a></td><td class=SDescription>This function marks an event transaction by a component.</td></tr>
<!-- index=71 -->
<tr class="SVariable SIndent2"><td class=SEntry><a href="#ovm_component.print_enabled" id=link87 onMouseOver="ShowTip(event, 'tt75', 'link87')" onMouseOut="HideTip('tt75')">print_enabled</a></td><td class=SDescription>This bit determines if this component should automatically be printed as a child of its parent object.</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>
<!--CONTENT index=1 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.new" href="../../../../src/base/ovm_component.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></tr><tr><td></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>Creates a new component with the given leaf instance <i>name</i> and handle to to its <i>parent</i>.&nbsp; If the component is a top-level component (i.e. it is created in a static module or interface), <i>parent</i> should be null.</p><p>The component will be inserted as a child of the <i>parent</i> object, if any.&nbsp; If <i>parent</i> already has a child by the given <i>name</i>, an error is produced.</p><p>If <i>parent</i> is null, then the component will become a child of the implicit top-level component, <i>ovm_top</i>.</p><p>All classes derived from ovm_component must call super.new(name,parent).</p></div></div></div>
<!--CONTENT index=2 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="ovm_component.Hierarchy_Interface" href="../../../../src/base/ovm_component.svh">Hierarchy Interface</a></h3><div class=CBody><p>These methods provide user access to information about the component hierarchy, i.e., topology.</p></div></div></div>
<!--CONTENT index=3 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.get_parent" href="../../../../src/base/ovm_component.svh">get_parent</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function ovm_component get_parent ()</td></tr></table></blockquote><div class=CBody><p>Returns a handle to this component&rsquo;s parent, or null if it has no parent.</p></div></div></div>
<!--CONTENT index=4 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.get_full_name" href="../../../../src/base/ovm_component.svh">get_full_name</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function string get_full_name ()</td></tr></table></blockquote><div class=CBody><p>Returns the full hierarchical name of this object.&nbsp; The default implementation concatenates the hierarchical name of the parent, if any, with the leaf name of this object, as given by <a href="ovm_object-svh.html#ovm_object.get_name" class=LMethod id=link94 onMouseOver="ShowTip(event, 'tt79', 'link94')" onMouseOut="HideTip('tt79')">ovm_object::get_name</a>.</p></div></div></div>
<!--CONTENT index=5 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.get_child" href="../../../../src/base/ovm_component.svh">get_child</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 ovm_component get_child (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody></div></div></div>
<!--CONTENT index=6 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.get_next_child" href="../../../../src/base/ovm_component.svh">get_next_child</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_next_child (</td><td class=PTypePrefix nowrap>ref&nbsp;</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody></div></div></div>
<!--CONTENT index=7 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.get_first_child" href="../../../../src/base/ovm_component.svh">get_first_child</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_first_child (</td><td class=PTypePrefix nowrap>ref&nbsp;</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>These methods are used to iterate through this component&rsquo;s children, if any.&nbsp; For example, given a component with an object handle, <i>comp</i>, the following code calls <a href="ovm_object-svh.html#ovm_object.print" class=LMethod id=link95 onMouseOver="ShowTip(event, 'tt80', 'link95')" onMouseOut="HideTip('tt80')">ovm_object::print</a> for each child:</p><blockquote><pre>string name;
ovm_component child;
if (comp.get_first_child(name))
do begin
child = comp.get_child(name);
child.print();
end while (comp.get_next_child(name));</pre></blockquote></div></div></div>
<!--CONTENT index=8 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.get_num_children" href="../../../../src/base/ovm_component.svh">get_num_children</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function int get_num_children ()</td></tr></table></blockquote><div class=CBody><p>Returns the number of this component&rsquo;s children.</p></div></div></div>
<!--CONTENT index=9 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.has_child" href="../../../../src/base/ovm_component.svh">has_child</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 has_child (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>Returns 1 if this component has a child with the given <i>name</i>, 0 otherwise.</p></div></div></div>
<!--CONTENT index=10 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_name" href="../../../../src/base/ovm_component.svh">set_name</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 set_name (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>Renames this component to <i>name</i> and recalculates all descendants&rsquo; full names.</p></div></div></div>
<!--CONTENT index=11 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.lookup" href="../../../../src/base/ovm_component.svh">lookup</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 ovm_component lookup (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>Looks for a component with the given hierarchical <i>name</i> relative to this component.&nbsp; If the given <i>name</i> is preceded with a &lsquo;.&rsquo;&nbsp; (dot), then the search begins relative to the top level (absolute lookup).&nbsp; The handle of the matching component is returned, else null.&nbsp; The name must not contain wildcards.</p></div></div></div>
<!--CONTENT index=12 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="ovm_component.Phasing_Interface" href="../../../../src/base/ovm_component.svh">Phasing Interface</a></h3><div class=CBody><p>Components execute their behavior in strictly ordered, pre-defined phases.&nbsp; Each phase is defined by its own method, which derived components can override to incorporate component-specific behavior.&nbsp; During simulation, the phases are executed one by one, where one phase must complete before the next phase begins.&nbsp; The following briefly describe each phase:</p><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>new</td><td class=CDLDescription>Also known as the <i>constructor</i>, the component does basic initialization of any members not subject to configuration.</td></tr><tr><td class=CDLEntry>build</td><td class=CDLDescription>The component constructs its children.&nbsp; It uses the get_config interface to obtain any configuration for itself, the set_config interface to set any configuration for its own children, and the factory interface for actually creating the children and other objects it might need.</td></tr><tr><td class=CDLEntry>connect</td><td class=CDLDescription>The component now makes connections (binds TLM ports and exports) from child-to-child or from child-to-self (i.e. to promote a child port or export up the hierarchy for external access.&nbsp; Afterward, all connections are checked via <a href="#ovm_component.resolve_bindings" class=LMethod id=link96 onMouseOver="ShowTip(event, 'tt30', 'link96')" onMouseOut="HideTip('tt30')">resolve_bindings</a> before entering the <a href="#ovm_component.end_of_elaboration" class=LMethod id=link97 onMouseOver="ShowTip(event, 'tt16', 'link97')" onMouseOut="HideTip('tt16')">end_of_elaboration</a> phase.</td></tr><tr><td class=CDLEntry>end_of_elaboration</td><td class=CDLDescription>At this point, the entire testbench environment has been built and connected.&nbsp; No new components and connections may be created from this point forward.&nbsp; Components can do final checks for proper connectivity, and it can initiate communication with other tools that require stable, quasi-static component structure..</td></tr><tr><td class=CDLEntry>start_of_simulation</td><td class=CDLDescription>The simulation is about to begin, and this phase can be used to perform any pre-run activity such as displaying banners, printing final testbench topology and configuration information.</td></tr><tr><td class=CDLEntry>run</td><td class=CDLDescription>This is where verification takes place.&nbsp; It is the only predefined, time-consuming phase.&nbsp; A component&rsquo;s primary function is implemented in the <a href="#ovm_component.run" class=LMethod id=link98 onMouseOver="ShowTip(event, 'tt18', 'link98')" onMouseOut="HideTip('tt18')">run</a> task.&nbsp; Other processes may be forked if desired.&nbsp; When a component returns from its run task, it does not signify completion of its run phase.&nbsp; Any processes that it may have forked <i>continue to run</i>.&nbsp; The run phase terminates in one of four ways:</td></tr><tr><td class=CDLEntry>stop</td><td class=CDLDescription>When a component&rsquo;s <a href="#ovm_component.enable_stop_interrupt" class=LVariable id=link99 onMouseOver="ShowTip(event, 'tt28', 'link99')" onMouseOut="HideTip('tt28')">enable_stop_interrupt</a> bit is set and <a href="ovm_globals-svh.html#global_stop_request" class=LMethod id=link100 onMouseOver="ShowTip(event, 'tt29', 'link100')" onMouseOut="HideTip('tt29')">global_stop_request</a> is called, the component&rsquo;s <a href="#ovm_component.stop" class=LMethod id=link101 onMouseOver="ShowTip(event, 'tt27', 'link101')" onMouseOut="HideTip('tt27')">stop</a> task is called.&nbsp; Components can implement stop to allow completion of in-progress transactions, &lt;flush&gt; queues, etc.&nbsp; Upon return from stop() by all enabled components, a <a href="#ovm_component.do_kill_all" class=LMethod id=link102 onMouseOver="ShowTip(event, 'tt26', 'link102')" onMouseOut="HideTip('tt26')">do_kill_all</a> is issued.&nbsp; If the <a href="ovm_objection-svh.html#ovm_test_done_objection" class=LClass id=link103 onMouseOver="ShowTip(event, 'tt81', 'link103')" onMouseOut="HideTip('tt81')">ovm_test_done_objection</a> is being used, this stopping procedure is deferred until all outstanding objections on <a href="ovm_globals-svh.html#ovm_test_done" class=LVariable id=link104 onMouseOver="ShowTip(event, 'tt82', 'link104')" onMouseOut="HideTip('tt82')">ovm_test_done</a> have been dropped.</td></tr><tr><td class=CDLEntry>objections dropped</td><td class=CDLDescription>The <a href="ovm_objection-svh.html#ovm_test_done_objection" class=LClass id=link105 onMouseOver="ShowTip(event, 'tt81', 'link105')" onMouseOut="HideTip('tt81')">ovm_test_done_objection</a> will implicitly call <a href="ovm_globals-svh.html#global_stop_request" class=LMethod id=link106 onMouseOver="ShowTip(event, 'tt29', 'link106')" onMouseOut="HideTip('tt29')">global_stop_request</a> when all objections to ending the phase are dropped.&nbsp; The stop procedure described above is then allowed to proceed normally.</td></tr><tr><td class=CDLEntry>kill</td><td class=CDLDescription>When called, all component&rsquo;s <a href="#ovm_component.run" class=LMethod id=link107 onMouseOver="ShowTip(event, 'tt18', 'link107')" onMouseOut="HideTip('tt18')">run</a> processes are killed immediately.&nbsp; While kill can be called directly, it is recommended that components use the stopping mechanism, which affords a more ordered and safe shut-down.</td></tr><tr><td class=CDLEntry>timeout</td><td class=CDLDescription>If a timeout was set, then the phase ends if it expires before either of the above occur.&nbsp; Without a stop, kill, or timeout, simulation can continue &ldquo;forever&rdquo;, or the simulator may end simulation prematurely if it determines that all processes are waiting.</td></tr><tr><td class=CDLEntry>extract</td><td class=CDLDescription>This phase can be used to extract simulation results from coverage collectors and scoreboards, collect status/error counts, statistics, and other information from components in bottom-up order.&nbsp; Being a separate phase, extract ensures all relevant data from potentially independent sources (i.e. other components) are collected before being checked in the next phase.</td></tr><tr><td class=CDLEntry>check</td><td class=CDLDescription>Having extracted vital simulation results in the previous phase, the check phase can be used to validate such data and determine the overall simulation outcome.&nbsp; It too executes bottom-up.</td></tr><tr><td class=CDLEntry>report</td><td class=CDLDescription>Finally, the report phase is used to output results to files and/or the screen.</td></tr></table><p>All task-based phases (<a href="#ovm_component.run" class=LMethod id=link108 onMouseOver="ShowTip(event, 'tt18', 'link108')" onMouseOut="HideTip('tt18')">run</a> is the only pre-defined task phase) will run forever until killed or stopped via <a href="#ovm_component.kill" class=LMethod id=link109 onMouseOver="ShowTip(event, 'tt25', 'link109')" onMouseOut="HideTip('tt25')">kill</a> or <a href="ovm_globals-svh.html#global_stop_request" class=LMethod id=link110 onMouseOver="ShowTip(event, 'tt29', 'link110')" onMouseOut="HideTip('tt29')">global_stop_request</a>.&nbsp; The latter causes each component&rsquo;s <a href="#ovm_component.stop" class=LMethod id=link111 onMouseOver="ShowTip(event, 'tt27', 'link111')" onMouseOut="HideTip('tt27')">stop</a> task to get called back if its <a href="#ovm_component.enable_stop_interrupt" class=LVariable id=link112 onMouseOver="ShowTip(event, 'tt28', 'link112')" onMouseOut="HideTip('tt28')">enable_stop_interrupt</a> bit is set.&nbsp; After all components&rsquo; stop tasks return, the OVM will end the phase.</p><p>Note- the post_new, export_connections, import_connections, configure, and pre_run phases are deprecated.&nbsp; <a href="#ovm_component.build" class=LMethod id=link113 onMouseOver="ShowTip(event, 'tt14', 'link113')" onMouseOut="HideTip('tt14')">build</a> replaces post_new, <a href="#ovm_component.connect" class=LMethod id=link114 onMouseOver="ShowTip(event, 'tt15', 'link114')" onMouseOut="HideTip('tt15')">connect</a> replaces both import_ and export_connections, and <a href="#ovm_component.start_of_simulation" class=LMethod id=link115 onMouseOver="ShowTip(event, 'tt17', 'link115')" onMouseOut="HideTip('tt17')">start_of_simulation</a> replaces pre_run.</p></div></div></div>
<!--CONTENT index=13 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.build" href="../../../../src/base/ovm_component.svh">build</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void build ()</td></tr></table></blockquote><div class=CBody><p>The build phase callback is the first of several methods automatically called during the course of simulation.&nbsp; The build phase is the second of a two-pass construction process (the first is the built-in new method).</p><p>The build phase can add additional hierarchy based on configuration information not available at time of initial construction.&nbsp; Any override should call super.build().</p><p>Starting after the initial construction phase (<a href="#ovm_component.new" class=LMethod id=link116 onMouseOver="ShowTip(event, 'tt4', 'link116')" onMouseOut="HideTip('tt4')">new</a> method) has completed, the build phase consists of calling all components&rsquo; build methods recursively top-down, i.e., parents&rsquo; build are executed before the children.&nbsp; This is the only phase that executes top-down.</p><p>The build phase of the ovm_component class executes the automatic configuration of fields registed in the component by calling <a href="#ovm_component.apply_config_settings" class=LMethod id=link117 onMouseOver="ShowTip(event, 'tt38', 'link117')" onMouseOut="HideTip('tt38')">apply_config_settings</a>.&nbsp; To turn off automatic configuration for a component, do not call super.build() in the subtype&rsquo;s build method.</p><p>See <a href="ovm_phases-sv.html#ovm_phase" class=LClass id=link118 onMouseOver="ShowTip(event, 'tt83', 'link118')" onMouseOut="HideTip('tt83')">ovm_phase</a> for more information on phases.</p></div></div></div>
<!--CONTENT index=14 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.connect" href="../../../../src/base/ovm_component.svh">connect</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void connect ()</td></tr></table></blockquote><div class=CBody><p>The connect phase callback is one of several methods automatically called during the course of simulation.</p><p>Starting after the <a href="#ovm_component.build" class=LMethod id=link119 onMouseOver="ShowTip(event, 'tt14', 'link119')" onMouseOut="HideTip('tt14')">build</a> phase has completed, the connect phase consists of calling all components&rsquo; connect methods recursively in depth-first, bottom-up order, i.e., children are executed before their parents.</p><p>Generally, derived classes should override this method to make port and export connections via the similarly-named <a href="ovm_port_base-svh.html#ovm_port_base#(IF).connect" class=LMethod id=link120 onMouseOver="ShowTip(event, 'tt84', 'link120')" onMouseOut="HideTip('tt84')">ovm_port_base #(IF)::connect</a> method.&nbsp; Any override should call super.connect().</p><p>This method should never be called directly.</p><p>See <a href="ovm_phases-sv.html#ovm_phase" class=LClass id=link121 onMouseOver="ShowTip(event, 'tt83', 'link121')" onMouseOut="HideTip('tt83')">ovm_phase</a> for more information on phases.</p></div></div></div>
<!--CONTENT index=15 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.end_of_elaboration" href="../../../../src/base/ovm_component.svh">end_of_elaboration</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void end_of_elaboration ()</td></tr></table></blockquote><div class=CBody><p>The end_of_elaboration phase callback is one of several methods automatically called during the course of simulation.</p><p>Starting after the <a href="#ovm_component.connect" class=LMethod id=link122 onMouseOver="ShowTip(event, 'tt15', 'link122')" onMouseOut="HideTip('tt15')">connect</a> phase has completed, this phase consists of calling all components&rsquo; end_of_elaboration methods recursively in depth-first, bottom-up order, i.e., children are executed before their parents.</p><p>Generally, derived classes should override this method to perform any checks on the elaborated hierarchy before the simulation phases begin.&nbsp; Any override should call super.end_of_elaboration().</p><p>This method should never be called directly.</p><p>See <a href="ovm_phases-sv.html#ovm_phase" class=LClass id=link123 onMouseOver="ShowTip(event, 'tt83', 'link123')" onMouseOut="HideTip('tt83')">ovm_phase</a> for more information on phases.</p></div></div></div>
<!--CONTENT index=16 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.start_of_simulation" href="../../../../src/base/ovm_component.svh">start_of_simulation</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void start_of_simulation ()</td></tr></table></blockquote><div class=CBody><p>The start_of_simulation phase callback is one of several methods automatically called during the course of simulation.</p><p>Starting after the <a href="#ovm_component.end_of_elaboration" class=LMethod id=link124 onMouseOver="ShowTip(event, 'tt16', 'link124')" onMouseOut="HideTip('tt16')">end_of_elaboration</a> phase has completed, this phase consists of calling all components&rsquo; start_of_simulation methods recursively in depth-first, bottom-up order, i.e. children are executed before their parents.</p><p>Generally, derived classes should override this method to perform component- specific pre-run operations, such as discovery of the elaborated hierarchy, printing banners, etc.&nbsp; Any override should call super.start_of_simulation().</p><p>This method should never be called directly.</p><p>See <a href="ovm_phases-sv.html#ovm_phase" class=LClass id=link125 onMouseOver="ShowTip(event, 'tt83', 'link125')" onMouseOut="HideTip('tt83')">ovm_phase</a> for more information on phases.</p></div></div></div>
<!--CONTENT index=17 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.run" href="../../../../src/base/ovm_component.svh">run</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual task run ()</td></tr></table></blockquote><div class=CBody><p>The run phase callback is the only predefined phase that is time-consuming, i.e., task-based.&nbsp; It executes after the <a href="#ovm_component.start_of_simulation" class=LMethod id=link126 onMouseOver="ShowTip(event, 'tt17', 'link126')" onMouseOut="HideTip('tt17')">start_of_simulation</a> phase has completed.&nbsp; Derived classes should override this method to perform the bulk of its functionality, forking additional processes if needed.</p><p>In the run phase, all components&rsquo; run tasks are forked as independent processes.&nbsp; Returning from its run task does not signify completion of a component&rsquo;s run phase; any processes forked by run continue to run.</p><p>The run phase terminates in one of four ways.</p><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>1</td><td class=CDLDescription>explicit call to <a href="ovm_globals-svh.html#global_stop_request" class=LMethod id=link127 onMouseOver="ShowTip(event, 'tt29', 'link127')" onMouseOut="HideTip('tt29')">global_stop_request</a> - When <a href="ovm_globals-svh.html#global_stop_request" class=LMethod id=link128 onMouseOver="ShowTip(event, 'tt29', 'link128')" onMouseOut="HideTip('tt29')">global_stop_request</a> is called, an ordered shut-down for the currently running phase begins.&nbsp; First, all enabled components&rsquo; status tasks are called bottom-up, i.e., childrens&rsquo; <a href="#ovm_component.stop" class=LMethod id=link129 onMouseOver="ShowTip(event, 'tt27', 'link129')" onMouseOut="HideTip('tt27')">stop</a> tasks are called before the parent&rsquo;s.&nbsp; A component is enabled by its enable_stop_interrupt bit.&nbsp; Each component can implement stop to allow completion of in-progress transactions, flush queues, and other shut-down activities.&nbsp; Upon return from stop by all enabled components, the recursive do_kill_all is called on all top-level component(s).&nbsp; If the <a href="ovm_globals-svh.html#ovm_test_done" class=LVariable id=link130 onMouseOver="ShowTip(event, 'tt82', 'link130')" onMouseOut="HideTip('tt82')">ovm_test_done</a> objection&gt; is being used, this stopping procedure is deferred until all outstanding objections on <a href="ovm_globals-svh.html#ovm_test_done" class=LVariable id=link131 onMouseOver="ShowTip(event, 'tt82', 'link131')" onMouseOut="HideTip('tt82')">ovm_test_done</a> have been dropped.</td></tr><tr><td class=CDLEntry>2</td><td class=CDLDescription>all objections to <a href="ovm_globals-svh.html#ovm_test_done" class=LVariable id=link132 onMouseOver="ShowTip(event, 'tt82', 'link132')" onMouseOut="HideTip('tt82')">ovm_test_done</a> have been dropped - When all objections on the <a href="ovm_globals-svh.html#ovm_test_done" class=LVariable id=link133 onMouseOver="ShowTip(event, 'tt82', 'link133')" onMouseOut="HideTip('tt82')">ovm_test_done</a> objection have been dropped, <a href="ovm_globals-svh.html#global_stop_request" class=LMethod id=link134 onMouseOver="ShowTip(event, 'tt29', 'link134')" onMouseOut="HideTip('tt29')">global_stop_request</a> is called automatically, thus kicking off the stopping procedure described above.&nbsp; See <a href="ovm_objection-svh.html#ovm_objection" class=LClass id=link135 onMouseOver="ShowTip(event, 'tt41', 'link135')" onMouseOut="HideTip('tt41')">ovm_objection</a> for details on using the objection mechanism.</td></tr><tr><td class=CDLEntry>3</td><td class=CDLDescription>explicit call to <a href="#ovm_component.kill" class=LMethod id=link136 onMouseOver="ShowTip(event, 'tt25', 'link136')" onMouseOut="HideTip('tt25')">kill</a> or <a href="#ovm_component.do_kill_all" class=LMethod id=link137 onMouseOver="ShowTip(event, 'tt26', 'link137')" onMouseOut="HideTip('tt26')">do_kill_all</a> - When <a href="#ovm_component.kill" class=LMethod id=link138 onMouseOver="ShowTip(event, 'tt25', 'link138')" onMouseOut="HideTip('tt25')">kill</a> is called, this component&rsquo;s run processes are killed immediately.&nbsp; The <a href="#ovm_component.do_kill_all" class=LMethod id=link139 onMouseOver="ShowTip(event, 'tt26', 'link139')" onMouseOut="HideTip('tt26')">do_kill_all</a> methods applies to this component and all its descendants.&nbsp; Use of this method is not recommended.&nbsp; It is better to use the stopping mechanism, which affords a more ordered, safer shut-down.</td></tr><tr><td class=CDLEntry>4</td><td class=CDLDescription>timeout - The phase ends if the timeout expires before an explicit call to <a href="ovm_globals-svh.html#global_stop_request" class=LMethod id=link140 onMouseOver="ShowTip(event, 'tt29', 'link140')" onMouseOut="HideTip('tt29')">global_stop_request</a> or kill.&nbsp; By default, the timeout is set to near the maximum simulation time possible.&nbsp; You may override this via <a href="ovm_globals-svh.html#set_global_timeout" class=LMethod id=link141 onMouseOver="ShowTip(event, 'tt85', 'link141')" onMouseOut="HideTip('tt85')">set_global_timeout</a>, but you cannot disable the timeout completely.</td></tr></table><p>If the default timeout occurs in your simulation, or if simulation never ends despite completion of your test stimulus, then it usually indicates a missing call to <a href="ovm_globals-svh.html#global_stop_request" class=LMethod id=link142 onMouseOver="ShowTip(event, 'tt29', 'link142')" onMouseOut="HideTip('tt29')">global_stop_request</a>.</p><p>The run task should never be called directly.</p><p>See <a href="ovm_phases-sv.html#ovm_phase" class=LClass id=link143 onMouseOver="ShowTip(event, 'tt83', 'link143')" onMouseOut="HideTip('tt83')">ovm_phase</a> for more information on phases.</p></div></div></div>
<!--CONTENT index=18 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.extract" href="../../../../src/base/ovm_component.svh">extract</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void extract ()</td></tr></table></blockquote><div class=CBody><p>The extract phase callback is one of several methods automatically called during the course of simulation.</p><p>Starting after the <a href="#ovm_component.run" class=LMethod id=link144 onMouseOver="ShowTip(event, 'tt18', 'link144')" onMouseOut="HideTip('tt18')">run</a> phase has completed, the extract phase consists of calling all components&rsquo; extract methods recursively in depth-first, bottom-up order, i.e., children are executed before their parents.</p><p>Generally, derived classes should override this method to collect information for the subsequent <a href="#ovm_component.check" class=LMethod id=link145 onMouseOver="ShowTip(event, 'tt20', 'link145')" onMouseOut="HideTip('tt20')">check</a> phase when such information needs to be collected in a hierarchical, bottom-up manner.&nbsp; Any override should call super.extract().</p><p>This method should never be called directly.</p><p>See <a href="ovm_phases-sv.html#ovm_phase" class=LClass id=link146 onMouseOver="ShowTip(event, 'tt83', 'link146')" onMouseOut="HideTip('tt83')">ovm_phase</a> for more information on phases.</p></div></div></div>
<!--CONTENT index=19 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.check" href="../../../../src/base/ovm_component.svh">check</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void check ()</td></tr></table></blockquote><div class=CBody><p>The check phase callback is one of several methods automatically called during the course of simulation.</p><p>Starting after the <a href="#ovm_component.extract" class=LMethod id=link147 onMouseOver="ShowTip(event, 'tt19', 'link147')" onMouseOut="HideTip('tt19')">extract</a> phase has completed, the check phase consists of calling all components&rsquo; check methods recursively in depth-first, bottom-up order, i.e., children are executed before their parents.</p><p>Generally, derived classes should override this method to perform component specific, end-of-test checks.&nbsp; Any override should call super.check().</p><p>This method should never be called directly.</p><p>See <a href="ovm_phases-sv.html#ovm_phase" class=LClass id=link148 onMouseOver="ShowTip(event, 'tt83', 'link148')" onMouseOut="HideTip('tt83')">ovm_phase</a> for more information on phases.</p></div></div></div>
<!--CONTENT index=20 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.report" href="../../../../src/base/ovm_component.svh">report</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void report ()</td></tr></table></blockquote><div class=CBody><p>The report phase callback is the last of several predefined phase methods automatically called during the course of simulation.</p><p>Starting after the <a href="#ovm_component.check" class=LMethod id=link149 onMouseOver="ShowTip(event, 'tt20', 'link149')" onMouseOut="HideTip('tt20')">check</a> phase has completed, the report phase consists of calling all components&rsquo; report methods recursively in depth-first, bottom-up order, i.e., children are executed before their parents.</p><p>Generally, derived classes should override this method to perform component-specific reporting of test results.&nbsp; Any override should call super.report().</p><p>This method should never be called directly.</p><p>See <a href="ovm_phases-sv.html#ovm_phase" class=LClass id=link150 onMouseOver="ShowTip(event, 'tt83', 'link150')" onMouseOut="HideTip('tt83')">ovm_phase</a> for more information on phases.</p></div></div></div>
<!--CONTENT index=21 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.suspend" href="../../../../src/base/ovm_component.svh">suspend</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual task suspend ()</td></tr></table></blockquote><div class=CBody><p>Suspends the process tree spawned from this component&rsquo;s currently executing task-based phase, e.g.&nbsp; <a href="#ovm_component.run" class=LMethod id=link151 onMouseOver="ShowTip(event, 'tt18', 'link151')" onMouseOut="HideTip('tt18')">run</a>.</p></div></div></div>
<!--CONTENT index=22 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.resume" href="../../../../src/base/ovm_component.svh">resume</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual task resume ()</td></tr></table></blockquote><div class=CBody><p>Resumes the process tree spawned from this component&rsquo;s currently executing task-based phase, e.g.&nbsp; <a href="#ovm_component.run" class=LMethod id=link152 onMouseOver="ShowTip(event, 'tt18', 'link152')" onMouseOut="HideTip('tt18')">run</a>.</p></div></div></div>
<!--CONTENT index=23 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.status" href="../../../../src/base/ovm_component.svh">status</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function string status ()</td></tr></table></blockquote><div class=CBody><p>Returns the status of the parent process associated with the currently running task-based phase, e.g., <a href="#ovm_component.run" class=LMethod id=link153 onMouseOver="ShowTip(event, 'tt18', 'link153')" onMouseOut="HideTip('tt18')">run</a>.</p></div></div></div>
<!--CONTENT index=24 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.kill" href="../../../../src/base/ovm_component.svh">kill</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void kill ()</td></tr></table></blockquote><div class=CBody><p>Kills the process tree associated with this component&rsquo;s currently running task-based phase, e.g., <a href="#ovm_component.run" class=LMethod id=link154 onMouseOver="ShowTip(event, 'tt18', 'link154')" onMouseOut="HideTip('tt18')">run</a>.</p><p>An alternative mechanism for stopping the <a href="#ovm_component.run" class=LMethod id=link155 onMouseOver="ShowTip(event, 'tt18', 'link155')" onMouseOut="HideTip('tt18')">run</a> phase is the stop request.&nbsp; Calling <a href="ovm_globals-svh.html#global_stop_request" class=LMethod id=link156 onMouseOver="ShowTip(event, 'tt29', 'link156')" onMouseOut="HideTip('tt29')">global_stop_request</a> causes all components&rsquo; run processes to be killed, but only after all components have had the opportunity to complete in progress transactions and shutdown cleanly via their <a href="#ovm_component.stop" class=LMethod id=link157 onMouseOver="ShowTip(event, 'tt27', 'link157')" onMouseOut="HideTip('tt27')">stop</a> tasks.</p></div></div></div>
<!--CONTENT index=25 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.do_kill_all" href="../../../../src/base/ovm_component.svh">do_kill_all</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void do_kill_all ()</td></tr></table></blockquote><div class=CBody><p>Recursively calls <a href="#ovm_component.kill" class=LMethod id=link158 onMouseOver="ShowTip(event, 'tt25', 'link158')" onMouseOut="HideTip('tt25')">kill</a> on this component and all its descendants, which abruptly ends the currently running task-based phase, e.g., <a href="#ovm_component.run" class=LMethod id=link159 onMouseOver="ShowTip(event, 'tt18', 'link159')" onMouseOut="HideTip('tt18')">run</a>.&nbsp; See <a href="#ovm_component.run" class=LMethod id=link160 onMouseOver="ShowTip(event, 'tt18', 'link160')" onMouseOut="HideTip('tt18')">run</a> for better options to ending a task-based phase.</p></div></div></div>
<!--CONTENT index=26 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.stop" href="../../../../src/base/ovm_component.svh">stop</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 stop (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>ph_name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>The stop task is called when this component&rsquo;s <a href="#ovm_component.enable_stop_interrupt" class=LVariable id=link161 onMouseOver="ShowTip(event, 'tt28', 'link161')" onMouseOut="HideTip('tt28')">enable_stop_interrupt</a> bit is set and <a href="ovm_globals-svh.html#global_stop_request" class=LMethod id=link162 onMouseOver="ShowTip(event, 'tt29', 'link162')" onMouseOut="HideTip('tt29')">global_stop_request</a> is called during a task-based phase, e.g., <a href="#ovm_component.run" class=LMethod id=link163 onMouseOver="ShowTip(event, 'tt18', 'link163')" onMouseOut="HideTip('tt18')">run</a>.</p><p>Before a phase is abruptly ended, e.g., when a test deems the simulation complete, some components may need extra time to shut down cleanly.&nbsp; Such components may implement stop to finish the currently executing transaction, flush the queue, or perform other cleanup.&nbsp; Upon return from its stop, a component signals it is ready to be stopped.</p><p>The stop method will not be called if <a href="#ovm_component.enable_stop_interrupt" class=LVariable id=link164 onMouseOver="ShowTip(event, 'tt28', 'link164')" onMouseOut="HideTip('tt28')">enable_stop_interrupt</a> is 0.</p><p>The default implementation of stop is empty, i.e., it will return immediately.</p><p>This method should never be called directly.</p></div></div></div>
<!--CONTENT index=27 -->
<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="ovm_component.enable_stop_interrupt" href="../../../../src/base/ovm_component.svh">enable_stop_interrupt</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>protected int enable_stop_interrupt = 0</td></tr></table></blockquote><div class=CBody><p>This bit allows a component to raise an objection to the stopping of the current phase.&nbsp; It affects only time consuming phases (such as the <a href="#ovm_component.run" class=LMethod id=link165 onMouseOver="ShowTip(event, 'tt18', 'link165')" onMouseOut="HideTip('tt18')">run</a> phase).</p><p>When this bit is set, the <a href="#ovm_component.stop" class=LMethod id=link166 onMouseOver="ShowTip(event, 'tt27', 'link166')" onMouseOut="HideTip('tt27')">stop</a> task in the component is called as a result of a call to <a href="ovm_globals-svh.html#global_stop_request" class=LMethod id=link167 onMouseOver="ShowTip(event, 'tt29', 'link167')" onMouseOut="HideTip('tt29')">global_stop_request</a>.&nbsp; Components that are sensitive to an immediate killing of its run-time processes should set this bit and implement the stop task to prepare for shutdown.</p></div></div></div>
<!--CONTENT index=28 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.resolve_bindings" href="../../../../src/base/ovm_component.svh">resolve_bindings</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void resolve_bindings ()</td></tr></table></blockquote><div class=CBody><p>Processes all port, export, and imp connections.&nbsp; Checks whether each port&rsquo;s min and max connection requirements are met.</p><p>It is called just before the <a href="#ovm_component.end_of_elaboration" class=LMethod id=link168 onMouseOver="ShowTip(event, 'tt16', 'link168')" onMouseOut="HideTip('tt16')">end_of_elaboration</a> phase.</p><p>Users should not call directly.</p></div></div></div>
<!--CONTENT index=29 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="ovm_component.Configuration_Interface" href="../../../../src/base/ovm_component.svh">Configuration Interface</a></h3><div class=CBody><p>Components can be designed to be user-configurable in terms of its topology (the type and number of children it has), mode of operation, and run-time parameters (knobs).&nbsp; The configuration interface accommodates this common need, allowing component composition and state to be modified without having to derive new classes or new class hierarchies for every configuration scenario.</p></div></div></div>
<!--CONTENT index=30 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_config_int" href="../../../../src/base/ovm_component.svh">set_config_int</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 set_config_int (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>inst_name,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field_name,</td></tr><tr><td></td><td class=PType nowrap>ovm_bitstream_t&nbsp;</td><td class=PParameter nowrap>value</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody></div></div></div>
<!--CONTENT index=31 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_config_string" href="../../../../src/base/ovm_component.svh">set_config_string</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 set_config_string (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>inst_name,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field_name,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>value</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody></div></div></div>
<!--CONTENT index=32 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_config_object" href="../../../../src/base/ovm_component.svh">set_config_object</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 set_config_object (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>inst_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>value,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>clone</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>Calling set_config_* causes configuration settings to be created and placed in a table internal to this component.&nbsp; There are similar global methods that store settings in a global table.&nbsp; Each setting stores the supplied <i>inst_name</i>, <i>field_name</i>, and <i>value</i> for later use by descendent components during their construction.&nbsp; (The global table applies to all components and takes precedence over the component tables.)</p><p>When a descendant component calls a get_config_* method, the <i>inst_name</i> and <i>field_name</i> provided in the get call are matched against all the configuration settings stored in the global table and then in each component in the parent hierarchy, top-down.&nbsp; Upon the first match, the value stored in the configuration setting is returned.&nbsp; Thus, precedence is global, following by the top-level component, and so on down to the descendent component&rsquo;s parent.</p><p>These methods work in conjunction with the get_config_* methods to provide a configuration setting mechanism for integral, string, and ovm_object-based types.&nbsp; Settings of other types, such as virtual interfaces and arrays, can be indirectly supported by defining a class that contains them.</p><p>Both <i>inst_name</i> and <i>field_name</i> may contain wildcards.</p><ul><li>For set_config_int, <i>value</i> is an integral value that can be anything from 1 bit to 4096 bits.</li><li>For set_config_string, <i>value</i> is a string.</li><li>For set_config_object, <i>value</i> must be an <a href="ovm_object-svh.html#ovm_object" class=LClass id=link169 onMouseOver="ShowTip(event, 'tt1', 'link169')" onMouseOut="HideTip('tt1')">ovm_object</a>-based object or null.&nbsp; Its clone argument specifies whether the object should be cloned.&nbsp; If set, the object is cloned both going into the table (during the set) and coming out of the table (during the get), so that multiple components matched to the same setting (by way of wildcards) do not end up sharing the same object.</li></ul><p>The following message tags are used for configuration setting.&nbsp; You can use the standard ovm report messaging interface to control these messages.&nbsp; CFGNTS -- The configuration setting was not used by any component.&nbsp; This is a warning.&nbsp; CFGOVR -- The configuration setting was overridden by a setting above.&nbsp; CFGSET -- The configuration setting was used at least once.</p><p>See <a href="#ovm_component.get_config_int" class=LMethod id=link170 onMouseOver="ShowTip(event, 'tt34', 'link170')" onMouseOut="HideTip('tt34')">get_config_int</a>, <a href="#ovm_component.get_config_string" class=LMethod id=link171 onMouseOver="ShowTip(event, 'tt35', 'link171')" onMouseOut="HideTip('tt35')">get_config_string</a>, and <a href="#ovm_component.get_config_object" class=LMethod id=link172 onMouseOver="ShowTip(event, 'tt36', 'link172')" onMouseOut="HideTip('tt36')">get_config_object</a> for information on getting the configurations set by these methods.</p></div></div></div>
<!--CONTENT index=33 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.get_config_int" href="../../../../src/base/ovm_component.svh">get_config_int</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 bit get_config_int (</td><td class=PTypePrefix nowrap></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field_name,</td></tr><tr><td></td><td class=PTypePrefix nowrap>inout&nbsp;</td><td class=PType nowrap>ovm_bitstream_t&nbsp;</td><td class=PParameter nowrap>value</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody></div></div></div>
<!--CONTENT index=34 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.get_config_string" href="../../../../src/base/ovm_component.svh">get_config_string</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 bit get_config_string (</td><td class=PTypePrefix nowrap></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field_name,</td></tr><tr><td></td><td class=PTypePrefix nowrap>inout&nbsp;</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>value</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody></div></div></div>
<!--CONTENT index=35 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.get_config_object" href="../../../../src/base/ovm_component.svh">get_config_object</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 bit get_config_object (</td><td class=PTypePrefix nowrap></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PTypePrefix nowrap>inout&nbsp;</td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>value,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PTypePrefix nowrap>input&nbsp;</td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>clone</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>These methods retrieve configuration settings made by previous calls to their set_config_* counterparts.&nbsp; As the methods&rsquo; names suggest, there is direct support for integral types, strings, and objects.&nbsp; Settings of other types can be indirectly supported by defining an object to contain them.</p><p>Configuration settings are stored in a global table and in each component instance.&nbsp; With each call to a get_config_* method, a top-down search is made for a setting that matches this component&rsquo;s full name and the given <i>field_name</i>.&nbsp; For example, say this component&rsquo;s full instance name is top.u1.u2.&nbsp; First, the global configuration table is searched.&nbsp; If that fails, then it searches the configuration table in component &lsquo;top&rsquo;, followed by top.u1.</p><p>The first instance/field that matches causes <i>value</i> to be written with the value of the configuration setting and 1 is returned.&nbsp; If no match is found, then <i>value</i> is unchanged and the 0 returned.</p><p>Calling the get_config_object method requires special handling.&nbsp; Because <i>value</i> is an output of type <a href="ovm_object-svh.html#ovm_object" class=LClass id=link173 onMouseOver="ShowTip(event, 'tt1', 'link173')" onMouseOut="HideTip('tt1')">ovm_object</a>, you must provide an ovm_object handle to assign to (<u>not</u> a derived class handle).&nbsp; After the call, you can then $cast to the actual type.</p><p>For example, the following code illustrates how a component designer might call upon the configuration mechanism to assign its <i>data</i> object property, whose type myobj_t derives from ovm_object.</p><blockquote><pre>class mycomponent extends ovm_component;
local myobj_t data;
function void build();
ovm_object tmp;
super.build();
if(get_config_object(&quot;data&quot;, tmp))
if (!$cast(data, tmp))
$display(&quot;error! config setting for 'data' not of type myobj_t&quot;);
endfunction
...</pre></blockquote><p>The above example overrides the <a href="#ovm_component.build" class=LMethod id=link174 onMouseOver="ShowTip(event, 'tt14', 'link174')" onMouseOut="HideTip('tt14')">build</a> method.&nbsp; If you want to retain any base functionality, you must call super.build().</p><p>The <i>clone</i> bit clones the data inbound.&nbsp; The get_config_object method can also clone the data outbound.</p><p>See Members for information on setting the global configuration table.</p></div></div></div>
<!--CONTENT index=36 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.check_config_usage" href="../../../../src/base/ovm_component.svh">check_config_usage</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 check_config_usage (</td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>recurse</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>Check all configuration settings in a components configuration table to determine if the setting has been used, overridden or not used.&nbsp; When <i>recurse</i> is 1 (default), configuration for this and all child components are recursively checked.&nbsp; This function is automatically called in the check phase, but can be manually called at any time.</p><h4 class=CHeading>Additional detail is provided by the following message tags</h4><ul><li>CFGOVR -- lists all configuration settings that have been overridden from above.</li><li>CFGSET -- lists all configuration settings that have been set.</li></ul><p>To get all configuration information prior to the run phase, do something like this in your top object:</p><blockquote><pre>function void start_of_simulation();
set_report_id_action_hier(CFGOVR, OVM_DISPLAY);
set_report_id_action_hier(CFGSET, OVM_DISPLAY);
check_config_usage();
endfunction</pre></blockquote></div></div></div>
<!--CONTENT index=37 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.apply_config_settings" href="../../../../src/base/ovm_component.svh">apply_config_settings</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 apply_config_settings (</td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>verbose</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>Searches for all config settings matching this component&rsquo;s instance path.&nbsp; For each match, the appropriate set_*_local method is called using the matching config setting&rsquo;s field_name and value.&nbsp; Provided the set_*_local method is implemented, the component property associated with the field_name is assigned the given value.</p><p>This function is called by <a href="#ovm_component.build" class=LMethod id=link175 onMouseOver="ShowTip(event, 'tt14', 'link175')" onMouseOut="HideTip('tt14')">ovm_component::build</a>.</p><p>The apply_config_settings method determines all the configuration settings targeting this component and calls the appropriate set_*_local method to set each one.&nbsp; To work, you must override one or more set_*_local methods to accommodate setting of your component&rsquo;s specific properties.&nbsp; Any properties registered with the optional `ovm_*_field macros do not require special handling by the set_*_local methods; the macros provide the set_*_local functionality for you.</p><p>If you do not want apply_config_settings to be called for a component, then the build() method should be overloaded and you should not call super.build().&nbsp; If this case, you must also set the m_build_done bit.&nbsp; Likewise, apply_config_settings can be overloaded to customize automated configuration.</p><p>When the <i>verbose</i> bit is set, all overrides are printed as they are applied.&nbsp; If the component&rsquo;s <a href="#ovm_component.print_config_matches" class=LVariable id=link176 onMouseOver="ShowTip(event, 'tt40', 'link176')" onMouseOut="HideTip('tt40')">print_config_matches</a> property is set, then apply_config_settings is automatically called with <i>verbose</i> = 1.</p></div></div></div>
<!--CONTENT index=38 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.print_config_settings" href="../../../../src/base/ovm_component.svh">print_config_settings</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 print_config_settings (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>ovm_component&nbsp;</td><td class=PParameter nowrap>comp</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>recurse</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>Called without arguments, print_config_settings prints all configuration information for this component, as set by previous calls to set_config_*.&nbsp; The settings are printing in the order of their precedence.</p><p>If <i>field</i> is specified and non-empty, then only configuration settings matching that field, if any, are printed.&nbsp; The field may not contain wildcards.</p><p>If <i>comp</i> is specified and non-null, then the configuration for that component is printed.</p><p>If <i>recurse</i> is set, then configuration information for all <i>comp</i>&rsquo;s children and below are printed as well.</p></div></div></div>
<!--CONTENT index=39 -->
<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="ovm_component.print_config_matches" href="../../../../src/base/ovm_component.svh">print_config_matches</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>static bit print_config_matches = 0</td></tr></table></blockquote><div class=CBody><p>Setting this static variable causes get_config_* to print info about matching configuration settings as they are being applied.</p></div></div></div>
<!--CONTENT index=40 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="ovm_component.Objection_Interface" href="../../../../src/base/ovm_component.svh">Objection Interface</a></h3><div class=CBody><p>These methods provide object level hooks into the <a href="ovm_objection-svh.html#ovm_objection" class=LClass id=link177 onMouseOver="ShowTip(event, 'tt41', 'link177')" onMouseOut="HideTip('tt41')">ovm_objection</a> mechanism.</p></div></div></div>
<!--CONTENT index=41 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.raised" href="../../../../src/base/ovm_component.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>ovm_objection&nbsp;</td><td class=PParameter nowrap>objection,</td></tr><tr><td></td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>source_obj,</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>The raised callback is called when a decendant of the component instance raises the specfied <i>objection</i>.&nbsp; The <i>source_obj</i> is the object which originally raised the object.&nbsp; <i>count</i> is an optional count that was used to indicate a number of objections which were raised.</p></div></div></div>
<!--CONTENT index=42 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.dropped" href="../../../../src/base/ovm_component.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>ovm_objection&nbsp;</td><td class=PParameter nowrap>objection,</td></tr><tr><td></td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>source_obj,</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>The dropped callback is called when a decendant of the component instance raises the specfied <i>objection</i>.&nbsp; The <i>source_obj</i> is the object which originally dropped the object.&nbsp; <i>count</i> is an optional count that was used to indicate a number of objections which were dropped.</p></div></div></div>
<!--CONTENT index=43 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.all_dropped" href="../../../../src/base/ovm_component.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>ovm_objection&nbsp;</td><td class=PParameter nowrap>objection,</td></tr><tr><td></td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>source_obj,</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>The all_dropped callback is called when a decendant of the component instance raises the specfied <i>objection</i>.&nbsp; The <i>source_obj</i> is the object which originally all_dropped the object.&nbsp; <i>count</i> is an optional count that was used to indicate a number of objections which were dropped.&nbsp; This callback is time-consuming and the all_dropped conditional will not be propagated up to the object&rsquo;s parent until the callback returns.</p></div></div></div>
<!--CONTENT index=44 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="ovm_component.Factory_Interface" href="../../../../src/base/ovm_component.svh">Factory Interface</a></h3><div class=CBody><p>The factory interface provides convenient access to a portion of OVM&rsquo;s <a href="ovm_factory-svh.html#ovm_factory" class=LClass id=link178 onMouseOver="ShowTip(event, 'tt45', 'link178')" onMouseOut="HideTip('tt45')">ovm_factory</a> interface.&nbsp; For creating new objects and components, the preferred method of accessing the factory is via the object or component wrapper (see <a href="ovm_registry-svh.html#ovm_component_registry#(T,Tname)" class=LClass id=link179 onMouseOver="ShowTip(event, 'tt86', 'link179')" onMouseOut="HideTip('tt86')">ovm_component_registry #(T,Tname)</a> and <a href="ovm_registry-svh.html#ovm_object_registry#(T,Tname)" class=LClass id=link180 onMouseOver="ShowTip(event, 'tt87', 'link180')" onMouseOut="HideTip('tt87')">ovm_object_registry #(T,Tname)</a>).&nbsp; The wrapper also provides functions for setting type and instance overrides.</p></div></div></div>
<!--CONTENT index=45 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.create_component" href="../../../../src/base/ovm_component.svh">create_component</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 ovm_component create_component (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>requested_type_name,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>A convenience function for <a href="ovm_factory-svh.html#ovm_factory.create_component_by_name" class=LMethod id=link181 onMouseOver="ShowTip(event, 'tt47', 'link181')" onMouseOut="HideTip('tt47')">ovm_factory::create_component_by_name</a>, this method calls upon the factory to create a new child component whose type corresponds to the preregistered type name, <i>requested_type_name</i>, and instance name, <i>name</i>.&nbsp; This method is equivalent to:</p><blockquote><pre>factory.create_component_by_name(requested_type_name,
get_full_name(), name, this);</pre></blockquote><p>If the factory determines that a type or instance override exists, the type of the component created may be different than the requested type.&nbsp; See <a href="#ovm_component.set_type_override" class=LMethod id=link182 onMouseOver="ShowTip(event, 'tt54', 'link182')" onMouseOut="HideTip('tt54')">set_type_override</a> and <a href="#ovm_component.set_inst_override" class=LMethod id=link183 onMouseOver="ShowTip(event, 'tt56', 'link183')" onMouseOut="HideTip('tt56')">set_inst_override</a>.&nbsp; See also <a href="ovm_factory-svh.html#ovm_factory" class=LClass id=link184 onMouseOver="ShowTip(event, 'tt45', 'link184')" onMouseOut="HideTip('tt45')">ovm_factory</a> for details on factory operation.</p></div></div></div>
<!--CONTENT index=46 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.create_object" href="../../../../src/base/ovm_component.svh">create_object</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 ovm_object create_object (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>requested_type_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>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>A convenience function for <a href="ovm_factory-svh.html#ovm_factory.create_object_by_name" class=LMethod id=link185 onMouseOver="ShowTip(event, 'tt49', 'link185')" onMouseOut="HideTip('tt49')">ovm_factory::create_object_by_name</a>, this method calls upon the factory to create a new object whose type corresponds to the preregistered type name, <i>requested_type_name</i>, and instance name, <i>name</i>.&nbsp; This method is equivalent to:</p><blockquote><pre>factory.create_object_by_name(requested_type_name,
get_full_name(), name);</pre></blockquote><p>If the factory determines that a type or instance override exists, the type of the object created may be different than the requested type.&nbsp; See <a href="ovm_factory-svh.html#ovm_factory" class=LClass id=link186 onMouseOver="ShowTip(event, 'tt45', 'link186')" onMouseOut="HideTip('tt45')">ovm_factory</a> for details on factory operation.</p></div></div></div>
<!--CONTENT index=47 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_type_override_by_type" href="../../../../src/base/ovm_component.svh">set_type_override_by_type</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 colspan=5>static function void set_type_override_by_type (</td></tr><tr><td>&nbsp;&nbsp;&nbsp;</td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>original_type,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td>&nbsp;&nbsp;&nbsp;</td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>override_type,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td>&nbsp;&nbsp;&nbsp;</td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>replace</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>1</td></tr><tr><td class=PAfterParameters colspan=5>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>A convenience function for <a href="ovm_factory-svh.html#ovm_factory.set_type_override_by_type" class=LMethod id=link187 onMouseOver="ShowTip(event, 'tt51', 'link187')" onMouseOut="HideTip('tt51')">ovm_factory::set_type_override_by_type</a>, this method registers a factory override for components and objects created at this level of hierarchy or below.&nbsp; This method is equivalent to:</p><blockquote><pre>factory.set_type_override_by_type(original_type, override_type,replace);</pre></blockquote><p>The <i>relative_inst_path</i> is relative to this component and may include wildcards.&nbsp; The <i>original_type</i> represents the type that is being overridden.&nbsp; In subsequent calls to <a href="ovm_factory-svh.html#ovm_factory.create_object_by_type" class=LMethod id=link188 onMouseOver="ShowTip(event, 'tt88', 'link188')" onMouseOut="HideTip('tt88')">ovm_factory::create_object_by_type</a> or <a href="ovm_factory-svh.html#ovm_factory.create_component_by_type" class=LMethod id=link189 onMouseOver="ShowTip(event, 'tt89', 'link189')" onMouseOut="HideTip('tt89')">ovm_factory::create_component_by_type</a>, if the requested_type matches the <i>original_type</i> and the instance paths match, the factory will produce the <i>override_type</i>.</p><p>The original and override type arguments are lightweight proxies to the types they represent.&nbsp; See <a href="#ovm_component.set_inst_override_by_type" class=LMethod id=link190 onMouseOver="ShowTip(event, 'tt52', 'link190')" onMouseOut="HideTip('tt52')">set_inst_override_by_type</a> for information on usage.</p></div></div></div>
<!--CONTENT index=48 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_inst_override_by_type" href="../../../../src/base/ovm_component.svh">set_inst_override_by_type</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_inst_override_by_type(</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>relative_inst_path,</td></tr><tr><td></td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>original_type,</td></tr><tr><td></td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>override_type</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>A convenience function for <a href="ovm_factory-svh.html#ovm_factory.set_inst_override_by_type" class=LMethod id=link191 onMouseOver="ShowTip(event, 'tt53', 'link191')" onMouseOut="HideTip('tt53')">ovm_factory::set_inst_override_by_type</a>, this method registers a factory override for components and objects created at this level of hierarchy or below.&nbsp; In typical usage, this method is equivalent to:</p><blockquote><pre>factory.set_inst_override_by_type({get_full_name(),&quot;.&quot;,
relative_inst_path},
original_type,
override_type);</pre></blockquote><p>The <i>relative_inst_path</i> is relative to this component and may include wildcards.&nbsp; The <i>original_type</i> represents the type that is being overridden.&nbsp; In subsequent calls to <a href="ovm_factory-svh.html#ovm_factory.create_object_by_type" class=LMethod id=link192 onMouseOver="ShowTip(event, 'tt88', 'link192')" onMouseOut="HideTip('tt88')">ovm_factory::create_object_by_type</a> or <a href="ovm_factory-svh.html#ovm_factory.create_component_by_type" class=LMethod id=link193 onMouseOver="ShowTip(event, 'tt89', 'link193')" onMouseOut="HideTip('tt89')">ovm_factory::create_component_by_type</a>, if the requested_type matches the <i>original_type</i> and the instance paths match, the factory will produce the <i>override_type</i>.</p><p>The original and override types are lightweight proxies to the types they represent.&nbsp; They can be obtained by calling type::get_type(), if implemented, or by directly calling type::type_id::get(), where type is the user type and type_id is the name of the typedef to <a href="ovm_registry-svh.html#ovm_object_registry#(T,Tname)" class=LClass id=link194 onMouseOver="ShowTip(event, 'tt87', 'link194')" onMouseOut="HideTip('tt87')">ovm_object_registry #(T,Tname)</a> or <a href="ovm_registry-svh.html#ovm_component_registry#(T,Tname)" class=LClass id=link195 onMouseOver="ShowTip(event, 'tt86', 'link195')" onMouseOut="HideTip('tt86')">ovm_component_registry #(T,Tname)</a>.</p><p>If you are employing the `ovm_*_utils macros, the typedef and the get_type method will be implemented for you.</p><h4 class=CHeading>The following example shows `ovm_*_utils usage</h4><blockquote><pre>class comp extends ovm_component;
`ovm_component_utils(comp)
...
endclass
class mycomp extends ovm_component;
`ovm_component_utils(mycomp)
...
endclass
class block extends ovm_component;
`ovm_component_utils(block)
comp c_inst;
virtual function void build();
set_inst_override_by_type(&quot;c_inst&quot;,comp::get_type(),
mycomp::get_type());
endfunction
...
endclass</pre></blockquote></div></div></div>
<!--CONTENT index=49 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_type_override" href="../../../../src/base/ovm_component.svh">set_type_override</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>static function void set_type_override(</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>original_type_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>override_type_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>replace</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>A convenience function for <a href="ovm_factory-svh.html#ovm_factory.set_type_override_by_name" class=LMethod id=link196 onMouseOver="ShowTip(event, 'tt55', 'link196')" onMouseOut="HideTip('tt55')">ovm_factory::set_type_override_by_name</a>, this method configures the factory to create an object of type <i>override_type_name</i> whenever the factory is asked to produce a type represented by <i>original_type_name</i>.&nbsp; This method is equivalent to:</p><blockquote><pre>factory.set_type_override_by_name(original_type_name,
override_type_name, replace);</pre></blockquote><p>The <i>original_type_name</i> typically refers to a preregistered type in the factory.&nbsp; It may, however, be any arbitrary string.&nbsp; Subsequent calls to create_component or create_object with the same string and matching instance path will produce the type represented by override_type_name.&nbsp; The <i>override_type_name</i> must refer to a preregistered type in the factory.</p></div></div></div>
<!--CONTENT index=50 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_inst_override" href="../../../../src/base/ovm_component.svh">set_inst_override</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_inst_override(</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>relative_inst_path,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>original_type_name,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>override_type_name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>A convenience function for <a href="ovm_factory-svh.html#ovm_factory.set_inst_override_by_type" class=LMethod id=link197 onMouseOver="ShowTip(event, 'tt53', 'link197')" onMouseOut="HideTip('tt53')">ovm_factory::set_inst_override_by_type</a>, this method registers a factory override for components created at this level of hierarchy or below.&nbsp; In typical usage, this method is equivalent to:</p><blockquote><pre>factory.set_inst_override_by_name({get_full_name(),&quot;.&quot;,
relative_inst_path},
original_type_name,
override_type_name);</pre></blockquote><p>The <i>relative_inst_path</i> is relative to this component and may include wildcards.&nbsp; The <i>original_type_name</i> typically refers to a preregistered type in the factory.&nbsp; It may, however, be any arbitrary string.&nbsp; Subsequent calls to create_component or create_object with the same string and matching instance path will produce the type represented by <i>override_type_name</i>.&nbsp; The <i>override_type_name</i> must refer to a preregistered type in the factory.</p></div></div></div>
<!--CONTENT index=51 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.print_override_info" href="../../../../src/base/ovm_component.svh">print_override_info</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 print_override_info(</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>requested_type_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>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>This factory debug method performs the same lookup process as create_object and create_component, but instead of creating an object, it prints information about what type of object would be created given the provided arguments.</p></div></div></div>
<!--CONTENT index=52 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="ovm_component.Hierarchical_Reporting_Interface" href="../../../../src/base/ovm_component.svh">Hierarchical Reporting Interface</a></h3><div class=CBody><p>This interface provides versions of the set_report_* methods in the <a href="ovm_report_object-svh.html#ovm_report_object" class=LClass id=link198 onMouseOver="ShowTip(event, 'tt2', 'link198')" onMouseOut="HideTip('tt2')">ovm_report_object</a> base class that are applied recursively to this component and all its children.</p><p>When a report is issued and its associated action has the LOG bit set, the report will be sent to its associated FILE descriptor.</p></div></div></div>
<!--CONTENT index=53 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_report_severity_action_hier" href="../../../../src/base/ovm_component.svh">set_report_severity_action_hier</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_severity_action_hier (</td><td class=PType nowrap>ovm_severity&nbsp;</td><td class=PParameter nowrap>severity,</td></tr><tr><td></td><td class=PType nowrap>ovm_action&nbsp;</td><td class=PParameter nowrap>action</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody></div></div></div>
<!--CONTENT index=54 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_report_id_action_hier" href="../../../../src/base/ovm_component.svh">set_report_id_action_hier</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_id_action_hier (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>id,</td></tr><tr><td></td><td class=PType nowrap>ovm_action&nbsp;</td><td class=PParameter nowrap>action</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody></div></div></div>
<!--CONTENT index=55 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_report_severity_id_action_hier" href="../../../../src/base/ovm_component.svh">set_report_severity_id_action_hier</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_severity_id_action_hier(</td><td class=PType nowrap>ovm_severity&nbsp;</td><td class=PParameter nowrap>severity,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>id,</td></tr><tr><td></td><td class=PType nowrap>ovm_action&nbsp;</td><td class=PParameter nowrap>action</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>These methods recursively associate the specified action with reports of the given <i>severity</i>, <i>id</i>, or <i>severity-id</i> pair.&nbsp; An action associated with a particular severity-id pair takes precedence over an action associated with id, which takes precedence over an an action associated with a severity.</p><p>For a list of severities and their default actions, refer to <a href="ovm_report_handler-svh.html#ovm_report_handler" class=LClass id=link199 onMouseOver="ShowTip(event, 'tt77', 'link199')" onMouseOut="HideTip('tt77')">ovm_report_handler</a>.</p></div></div></div>
<!--CONTENT index=56 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_report_default_file_hier" href="../../../../src/base/ovm_component.svh">set_report_default_file_hier</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_default_file_hier (</td><td class=PType nowrap>OVM_FILE&nbsp;</td><td class=PParameter nowrap>file</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody></div></div></div>
<!--CONTENT index=57 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_report_severity_file_hier" href="../../../../src/base/ovm_component.svh">set_report_severity_file_hier</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_severity_file_hier (</td><td class=PType nowrap>ovm_severity&nbsp;</td><td class=PParameter nowrap>severity,</td></tr><tr><td></td><td class=PType nowrap>OVM_FILE&nbsp;</td><td class=PParameter nowrap>file</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody></div></div></div>
<!--CONTENT index=58 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_report_id_file_hier" href="../../../../src/base/ovm_component.svh">set_report_id_file_hier</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_id_file_hier (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>id,</td></tr><tr><td></td><td class=PType nowrap>OVM_FILE&nbsp;</td><td class=PParameter nowrap>file</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody></div></div></div>
<!--CONTENT index=59 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_report_severity_id_file_hier" href="../../../../src/base/ovm_component.svh">set_report_severity_id_file_hier</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_severity_id_file_hier(</td><td class=PType nowrap>ovm_severity&nbsp;</td><td class=PParameter nowrap>severity,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>id,</td></tr><tr><td></td><td class=PType nowrap>OVM_FILE&nbsp;</td><td class=PParameter nowrap>file</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>These methods recursively associate the specified FILE descriptor with reports of the given <i>severity</i>, <i>id</i>, or <i>severity-id</i> pair.&nbsp; A FILE associated with a particular severity-id pair takes precedence over a FILE associated with id, which take precedence over an a FILE associated with a severity, which takes precedence over the default FILE descriptor.</p><p>For a list of severities and other information related to the report mechanism, refer to <a href="ovm_report_handler-svh.html#ovm_report_handler" class=LClass id=link200 onMouseOver="ShowTip(event, 'tt77', 'link200')" onMouseOut="HideTip('tt77')">ovm_report_handler</a>.</p></div></div></div>
<!--CONTENT index=60 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.set_report_verbosity_level_hier" href="../../../../src/base/ovm_component.svh">set_report_verbosity_level_hier</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_verbosity_level_hier (</td><td class=PType nowrap>int&nbsp;</td><td class=PParameter nowrap>verbosity</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>This method recursively sets the maximum verbosity level for reports for this component and all those below it.&nbsp; Any report from this component subtree whose verbosity exceeds this maximum will be ignored.</p><p>See <a href="ovm_report_handler-svh.html#ovm_report_handler" class=LClass id=link201 onMouseOver="ShowTip(event, 'tt77', 'link201')" onMouseOut="HideTip('tt77')">ovm_report_handler</a> for a list of predefined message verbosity levels and their meaning.</p></div></div></div>
<!--CONTENT index=61 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="ovm_component.Recording_Interface" href="../../../../src/base/ovm_component.svh">Recording Interface</a></h3><div class=CBody><p>These methods comprise the component-based transaction recording interface.&nbsp; The methods can be used to record the transactions that this component &ldquo;sees&rdquo;, i.e. produces or consumes.</p><p>The API and implementation are subject to change once a vendor-independent use-model is determined.</p></div></div></div>
<!--CONTENT index=62 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.accept_tr" href="../../../../src/base/ovm_component.svh">accept_tr</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void accept_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td></tr><tr><td></td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>accept_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>This function marks the acceptance of a transaction, <i>tr</i>, by this component.&nbsp; Specifically, it performs the following actions:</p><ul><li>Calls the <i>tr</i>&rsquo;s <a href="ovm_transaction-svh.html#ovm_transaction.accept_tr" class=LMethod id=link202 onMouseOver="ShowTip(event, 'tt90', 'link202')" onMouseOut="HideTip('tt90')">ovm_transaction::accept_tr</a> method, passing to it the <i>accept_time</i> argument.</li><li>Calls this component&rsquo;s <a href="#ovm_component.do_accept_tr" class=LMethod id=link203 onMouseOver="ShowTip(event, 'tt67', 'link203')" onMouseOut="HideTip('tt67')">do_accept_tr</a> method to allow for any post-begin action in derived classes.</li><li>Triggers the component&rsquo;s internal accept_tr event.&nbsp; Any processes waiting on this event will resume in the next delta cycle.</li></ul></div></div></div>
<!--CONTENT index=63 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.do_accept_tr" href="../../../../src/base/ovm_component.svh">do_accept_tr</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>virtual protected function void do_accept_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>The <a href="#ovm_component.accept_tr" class=LMethod id=link204 onMouseOver="ShowTip(event, 'tt66', 'link204')" onMouseOut="HideTip('tt66')">accept_tr</a> method calls this function to accommodate any user-defined post-accept action.&nbsp; Implementations should call super.do_accept_tr to ensure correct operation.</p></div></div></div>
<!--CONTENT index=64 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.begin_tr" href="../../../../src/base/ovm_component.svh">begin_tr</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function integer begin_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>stream_name</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;main&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>label</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>desc</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>begin_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>This function marks the start of a transaction, <i>tr</i>, by this component.&nbsp; Specifically, it performs the following actions:</p><ul><li>Calls <i>tr</i>&rsquo;s <a href="ovm_transaction-svh.html#ovm_transaction.begin_tr" class=LMethod id=link205 onMouseOver="ShowTip(event, 'tt91', 'link205')" onMouseOut="HideTip('tt91')">ovm_transaction::begin_tr</a> method, passing to it the <i>begin_time</i> argument.&nbsp; The <i>begin_time</i> should be greater than or equal to the accept time.&nbsp; By default, when <i>begin_time</i> = 0, the current simulation time is used.</li></ul><p>If recording is enabled (recording_detail != OVM_OFF), then a new database-transaction is started on the component&rsquo;s transaction stream given by the stream argument.&nbsp; No transaction properties are recorded at this time.</p><ul><li>Calls the component&rsquo;s <a href="#ovm_component.do_begin_tr" class=LMethod id=link206 onMouseOver="ShowTip(event, 'tt70', 'link206')" onMouseOut="HideTip('tt70')">do_begin_tr</a> method to allow for any post-begin action in derived classes.</li><li>Triggers the component&rsquo;s internal begin_tr event.&nbsp; Any processes waiting on this event will resume in the next delta cycle.</li></ul><p>A handle to the transaction is returned.&nbsp; The meaning of this handle, as well as the interpretation of the arguments <i>stream_name</i>, <i>label</i>, and <i>desc</i> are vendor specific.</p></div></div></div>
<!--CONTENT index=65 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.begin_child_tr" href="../../../../src/base/ovm_component.svh">begin_child_tr</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function integer begin_child_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>integer&nbsp;</td><td class=PParameter nowrap>parent_handle</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>stream_name</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;main&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>label</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>desc</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>begin_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>This function marks the start of a child transaction, <i>tr</i>, by this component.&nbsp; Its operation is identical to that of <a href="#ovm_component.begin_tr" class=LMethod id=link207 onMouseOver="ShowTip(event, 'tt68', 'link207')" onMouseOut="HideTip('tt68')">begin_tr</a>, except that an association is made between this transaction and the provided parent transaction.&nbsp; This association is vendor-specific.</p></div></div></div>
<!--CONTENT index=66 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.do_begin_tr" href="../../../../src/base/ovm_component.svh">do_begin_tr</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>virtual protected function void do_begin_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>stream_name,</td></tr><tr><td></td><td class=PType nowrap>integer&nbsp;</td><td class=PParameter nowrap>tr_handle</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>The <a href="#ovm_component.begin_tr" class=LMethod id=link208 onMouseOver="ShowTip(event, 'tt68', 'link208')" onMouseOut="HideTip('tt68')">begin_tr</a> and <a href="#ovm_component.begin_child_tr" class=LMethod id=link209 onMouseOver="ShowTip(event, 'tt69', 'link209')" onMouseOut="HideTip('tt69')">begin_child_tr</a> methods call this function to accommodate any user-defined post-begin action.&nbsp; Implementations should call super.do_begin_tr to ensure correct operation.</p></div></div></div>
<!--CONTENT index=67 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.end_tr" href="../../../../src/base/ovm_component.svh">end_tr</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void end_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>end_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0,</td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>free_handle</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>1</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>This function marks the end of a transaction, <i>tr</i>, by this component.&nbsp; Specifically, it performs the following actions:</p><ul><li>Calls <i>tr</i>&rsquo;s <a href="ovm_transaction-svh.html#ovm_transaction.end_tr" class=LMethod id=link210 onMouseOver="ShowTip(event, 'tt92', 'link210')" onMouseOut="HideTip('tt92')">ovm_transaction::end_tr</a> method, passing to it the <i>end_time</i> argument.&nbsp; The <i>end_time</i> must at least be greater than the begin time.&nbsp; By default, when <i>end_time</i> = 0, the current simulation time is used.</li></ul><p>The transaction&rsquo;s properties are recorded to the database-transaction on which it was started, and then the transaction is ended.&nbsp; Only those properties handled by the transaction&rsquo;s do_record method (and optional `ovm_*_field macros) are recorded.</p><ul><li>Calls the component&rsquo;s <a href="#ovm_component.do_end_tr" class=LMethod id=link211 onMouseOver="ShowTip(event, 'tt72', 'link211')" onMouseOut="HideTip('tt72')">do_end_tr</a> method to accommodate any post-end action in derived classes.</li><li>Triggers the component&rsquo;s internal end_tr event.&nbsp; Any processes waiting on this event will resume in the next delta cycle.</li></ul><p>The <i>free_handle</i> bit indicates that this transaction is no longer needed.&nbsp; The implementation of free_handle is vendor-specific.</p></div></div></div>
<!--CONTENT index=68 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.do_end_tr" href="../../../../src/base/ovm_component.svh">do_end_tr</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>virtual protected function void do_end_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr,</td></tr><tr><td></td><td class=PType nowrap>integer&nbsp;</td><td class=PParameter nowrap>tr_handle</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>The <a href="#ovm_component.end_tr" class=LMethod id=link212 onMouseOver="ShowTip(event, 'tt71', 'link212')" onMouseOut="HideTip('tt71')">end_tr</a> method calls this function to accommodate any user-defined post-end action.&nbsp; Implementations should call super.do_end_tr to ensure correct operation.</p></div></div></div>
<!--CONTENT index=69 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.record_error_tr" href="../../../../src/base/ovm_component.svh">record_error_tr</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function integer record_error_tr (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>stream_name</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;main&quot;,</td></tr><tr><td></td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>info</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>label</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;error_tr&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>desc</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>error_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0,</td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>keep_active</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>This function marks an error transaction by a component.&nbsp; Properties of the given ovm_object, <i>info</i>, as implemented in its &lt;do_record&gt; method, are recorded to the transaction database.</p><p>An <i>error_time</i> of 0 indicates to use the current simulation time.&nbsp; The <i>keep_active</i> bit determines if the handle should remain active.&nbsp; If 0, then a zero-length error transaction is recorded.&nbsp; A handle to the database-transaction is returned.</p><p>Interpretation of this handle, as well as the strings <i>stream_name</i>, <i>label</i>, and <i>desc</i>, are vendor-specific.</p></div></div></div>
<!--CONTENT index=70 -->
<div class="CMethod"><div class=CTopic><h3 class=CTitle><a name="ovm_component.record_event_tr" href="../../../../src/base/ovm_component.svh">record_event_tr</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function integer record_event_tr (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>stream_name</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;main&quot;,</td></tr><tr><td></td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>info</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>label</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;event_tr&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>desc</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>event_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0,</td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>keep_active</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><div class=CBody><p>This function marks an event transaction by a component.</p><p>An <i>event_time</i> of 0 indicates to use the current simulation time.</p><p>A handle to the transaction is returned.&nbsp; The <i>keep_active</i> bit determines if the handle may be used for other vendor-specific purposes.</p><p>The strings for <i>stream_name</i>, <i>label</i>, and <i>desc</i> are vendor-specific identifiers for the transaction.</p></div></div></div>
<!--CONTENT index=71 -->
<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="ovm_component.print_enabled" href="../../../../src/base/ovm_component.svh">print_enabled</a></h3><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>bit print_enabled = 1</td></tr></table></blockquote><div class=CBody><p>This bit determines if this component should automatically be printed as a child of its parent object.</p><p>By default, all children are printed.&nbsp; However, this bit allows a parent component to disable the printing of specific children.</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>virtual class ovm_object extends ovm_void</td></tr></table></blockquote>The ovm_object class is the base class for all OVM data and hierarchical classes. </div></div><div class=CToolTip id="tt2"><div class=CClass><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class ovm_report_object extends ovm_object</td></tr></table></blockquote>The ovm_report_object provides an interface to the OVM reporting facility. </div></div><div class=CToolTip id="tt3"><div class=CClass><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class ovm_component extends ovm_report_object</td></tr></table></blockquote>The ovm_component class is the root base class for OVM components. </div></div><div class=CToolTip id="tt4"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function new (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name,</td></tr><tr><td></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>Creates a new component with the given leaf instance <i>name</i> and handle to to its <i>parent</i>. </div></div><div class=CToolTip id="tt5"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function ovm_component get_parent ()</td></tr></table></blockquote>Returns a handle to this component&rsquo;s parent, or null if it has no parent.</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_full_name ()</td></tr></table></blockquote>Returns the full hierarchical name of this object. </div></div><div class=CToolTip id="tt7"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function ovm_component get_child (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></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 int get_next_child (</td><td class=PTypePrefix nowrap>ref&nbsp;</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></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 int get_first_child (</td><td class=PTypePrefix nowrap>ref&nbsp;</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>These methods are used to iterate through this component&rsquo;s children, if any. </div></div><div class=CToolTip id="tt10"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function int get_num_children ()</td></tr></table></blockquote>Returns the number of this component&rsquo;s children.</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>function int has_child (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Returns 1 if this component has a child with the given <i>name</i>, 0 otherwise.</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 set_name (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Renames this component to <i>name</i> and recalculates all descendants&rsquo; full names.</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>function ovm_component lookup (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Looks for a component with the given hierarchical <i>name</i> relative to this component. </div></div><div class=CToolTip id="tt14"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void build ()</td></tr></table></blockquote>The build phase callback is the first of several methods automatically called during the course of simulation. </div></div><div class=CToolTip id="tt15"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void connect ()</td></tr></table></blockquote>The connect phase callback is one of several methods automatically called during the course of simulation.</div></div><div class=CToolTip id="tt16"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void end_of_elaboration ()</td></tr></table></blockquote>The end_of_elaboration phase callback is one of several methods automatically called during the course of simulation.</div></div><div class=CToolTip id="tt17"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void start_of_simulation ()</td></tr></table></blockquote>The start_of_simulation phase callback is one of several methods automatically called during the course of simulation.</div></div><div class=CToolTip id="tt18"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual task run ()</td></tr></table></blockquote>The run phase callback is the only predefined phase that is time-consuming, i.e., task-based. </div></div><div class=CToolTip id="tt19"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void extract ()</td></tr></table></blockquote>The extract phase callback is one of several methods automatically called during the course of simulation.</div></div><div class=CToolTip id="tt20"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void check ()</td></tr></table></blockquote>The check phase callback is one of several methods automatically called during the course of simulation.</div></div><div class=CToolTip id="tt21"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void report ()</td></tr></table></blockquote>The report phase callback is the last of several predefined phase methods automatically called during the course of simulation.</div></div><div class=CToolTip id="tt22"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual task suspend ()</td></tr></table></blockquote>Suspends the process tree spawned from this component&rsquo;s currently executing task-based phase, e.g. </div></div><div class=CToolTip id="tt23"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual task resume ()</td></tr></table></blockquote>Resumes the process tree spawned from this component&rsquo;s currently executing task-based phase, e.g. </div></div><div class=CToolTip id="tt24"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function string status ()</td></tr></table></blockquote>Returns the status of the parent process associated with the currently running task-based phase, e.g., run.</div></div><div class=CToolTip id="tt25"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void kill ()</td></tr></table></blockquote>Kills the process tree associated with this component&rsquo;s currently running task-based phase, e.g., run.</div></div><div class=CToolTip id="tt26"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void do_kill_all ()</td></tr></table></blockquote>Recursively calls kill on this component and all its descendants, which abruptly ends the currently running task-based phase, e.g., run. </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 task stop (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>ph_name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>The stop task is called when this component&rsquo;s enable_stop_interrupt bit is set and global_stop_request is called during a task-based phase, e.g., run.</div></div><div class=CToolTip id="tt28"><div class=CVariable><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>protected int enable_stop_interrupt = 0</td></tr></table></blockquote>This bit allows a component to raise an objection to the stopping of the current phase. </div></div><div class=CToolTip id="tt29"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function void global_stop_request()</td></tr></table></blockquote>Convenience function for ovm_top.stop_request(). </div></div><div class=CToolTip id="tt30"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void resolve_bindings ()</td></tr></table></blockquote>Processes all port, export, and imp connections. </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 function void set_config_int (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>inst_name,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field_name,</td></tr><tr><td></td><td class=PType nowrap>ovm_bitstream_t&nbsp;</td><td class=PParameter nowrap>value</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt32"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>virtual function void set_config_string (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>inst_name,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field_name,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>value</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt33"><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 set_config_object (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>inst_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>value,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>clone</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>Calling set_config_* causes configuration settings to be created and placed in a table internal to this component. </div></div><div class=CToolTip id="tt34"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>virtual function bit get_config_int (</td><td class=PTypePrefix nowrap></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field_name,</td></tr><tr><td></td><td class=PTypePrefix nowrap>inout&nbsp;</td><td class=PType nowrap>ovm_bitstream_t&nbsp;</td><td class=PParameter nowrap>value</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt35"><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 bit get_config_string (</td><td class=PTypePrefix nowrap></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field_name,</td></tr><tr><td></td><td class=PTypePrefix nowrap>inout&nbsp;</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>value</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt36"><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 bit get_config_object (</td><td class=PTypePrefix nowrap></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PTypePrefix nowrap>inout&nbsp;</td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>value,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PTypePrefix nowrap>input&nbsp;</td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>clone</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>These methods retrieve configuration settings made by previous calls to their set_config_* counterparts. </div></div><div class=CToolTip id="tt37"><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 check_config_usage (</td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>recurse</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>Check all configuration settings in a components configuration table to determine if the setting has been used, overridden or not used. </div></div><div class=CToolTip id="tt38"><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 apply_config_settings (</td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>verbose</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Searches for all config settings matching this component&rsquo;s instance path. </div></div><div class=CToolTip id="tt39"><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 print_config_settings (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>field</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>ovm_component&nbsp;</td><td class=PParameter nowrap>comp</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>recurse</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Called without arguments, print_config_settings prints all configuration information for this component, as set by previous calls to set_config_*. </div></div><div class=CToolTip id="tt40"><div class=CVariable><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>static bit print_config_matches = 0</td></tr></table></blockquote>Setting this static variable causes get_config_* to print info about matching configuration settings as they are being applied.</div></div><div class=CToolTip id="tt41"><div class=CClass><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class ovm_objection extends ovm_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="tt42"><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>ovm_objection&nbsp;</td><td class=PParameter nowrap>objection,</td></tr><tr><td></td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>source_obj,</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 raised callback is called when a decendant of the component instance raises the specfied <i>objection</i>. </div></div><div class=CToolTip id="tt43"><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>ovm_objection&nbsp;</td><td class=PParameter nowrap>objection,</td></tr><tr><td></td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>source_obj,</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 dropped callback is called when a decendant of the component instance raises the specfied <i>objection</i>. </div></div><div class=CToolTip id="tt44"><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>ovm_objection&nbsp;</td><td class=PParameter nowrap>objection,</td></tr><tr><td></td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>source_obj,</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 all_dropped callback is called when a decendant of the component instance raises the specfied <i>objection</i>. </div></div><div class=CToolTip id="tt45"><div class=CClass><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class ovm_factory</td></tr></table></blockquote>As the name implies, ovm_factory is used to manufacture (create) OVM objects and components. </div></div><div class=CToolTip id="tt46"><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 ovm_component create_component (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>requested_type_name,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>A convenience function for ovm_factory::create_component_by_name, this method calls upon the factory to create a new child component whose type corresponds to the preregistered type name, <i>requested_type_name</i>, and instance name, <i>name</i>. </div></div><div class=CToolTip id="tt47"><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 ovm_component create_component_by_name (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>requested_type_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>parent_inst_path</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>ovm_component&nbsp;</td><td class=PParameter nowrap>parent</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Creates and returns a component or object of the requested type, which may be specified by type or by name. </div></div><div class=CToolTip id="tt48"><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 ovm_object create_object (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>requested_type_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>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>A convenience function for ovm_factory::create_object_by_name, this method calls upon the factory to create a new object whose type corresponds to the preregistered type name, <i>requested_type_name</i>, and instance name, <i>name</i>. </div></div><div class=CToolTip id="tt49"><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 ovm_object create_object_by_name (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>requested_type_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>parent_inst_path</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>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></div><div class=CToolTip id="tt50"><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 colspan=5>static function void set_type_override_by_type (</td></tr><tr><td>&nbsp;&nbsp;&nbsp;</td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>original_type,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td>&nbsp;&nbsp;&nbsp;</td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>override_type,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td>&nbsp;&nbsp;&nbsp;</td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>replace</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>1</td></tr><tr><td class=PAfterParameters colspan=5>)</td></tr></table></td></tr></table></blockquote>A convenience function for ovm_factory::set_type_override_by_type, this method registers a factory override for components and objects created at this level of hierarchy or below. </div></div><div class=CToolTip id="tt51"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_type_override_by_type (</td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>original_type,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>override_type,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>replace</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></div><div class=CToolTip id="tt52"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_inst_override_by_type(</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>relative_inst_path,</td></tr><tr><td></td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>original_type,</td></tr><tr><td></td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>override_type</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>A convenience function for ovm_factory::set_inst_override_by_type, this method registers a factory override for components and objects created at this level of hierarchy or below. </div></div><div class=CToolTip id="tt53"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_inst_override_by_type (</td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>original_type,</td></tr><tr><td></td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>override_type,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>full_inst_path</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt54"><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>static function void set_type_override(</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>original_type_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>override_type_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>replace</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>A convenience function for ovm_factory::set_type_override_by_name, this method configures the factory to create an object of type <i>override_type_name</i> whenever the factory is asked to produce a type represented by <i>original_type_name</i>. </div></div><div class=CToolTip id="tt55"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_type_override_by_name (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>original_type_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>override_type_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>replace</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>Configures the factory to create an object of the override&rsquo;s type whenever a request is made to create an object of the original type, provided no instance override applies. </div></div><div class=CToolTip id="tt56"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_inst_override(</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>relative_inst_path,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>original_type_name,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>override_type_name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>A convenience function for ovm_factory::set_inst_override_by_type, this method registers a factory override for components created at this level of hierarchy or below. </div></div><div class=CToolTip id="tt57"><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 print_override_info(</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>requested_type_name,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>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>This factory debug method performs the same lookup process as create_object and create_component, but instead of creating an object, it prints information about what type of object would be created given the provided arguments.</div></div><div class=CToolTip id="tt58"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_severity_action_hier (</td><td class=PType nowrap>ovm_severity&nbsp;</td><td class=PParameter nowrap>severity,</td></tr><tr><td></td><td class=PType nowrap>ovm_action&nbsp;</td><td class=PParameter nowrap>action</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt59"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_id_action_hier (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>id,</td></tr><tr><td></td><td class=PType nowrap>ovm_action&nbsp;</td><td class=PParameter nowrap>action</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt60"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_severity_id_action_hier(</td><td class=PType nowrap>ovm_severity&nbsp;</td><td class=PParameter nowrap>severity,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>id,</td></tr><tr><td></td><td class=PType nowrap>ovm_action&nbsp;</td><td class=PParameter nowrap>action</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>These methods recursively associate the specified action with reports of the given <i>severity</i>, <i>id</i>, or <i>severity-id</i> pair. </div></div><div class=CToolTip id="tt61"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_default_file_hier (</td><td class=PType nowrap>OVM_FILE&nbsp;</td><td class=PParameter nowrap>file</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt62"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_severity_file_hier (</td><td class=PType nowrap>ovm_severity&nbsp;</td><td class=PParameter nowrap>severity,</td></tr><tr><td></td><td class=PType nowrap>OVM_FILE&nbsp;</td><td class=PParameter nowrap>file</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt63"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_id_file_hier (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>id,</td></tr><tr><td></td><td class=PType nowrap>OVM_FILE&nbsp;</td><td class=PParameter nowrap>file</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt64"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_severity_id_file_hier(</td><td class=PType nowrap>ovm_severity&nbsp;</td><td class=PParameter nowrap>severity,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>id,</td></tr><tr><td></td><td class=PType nowrap>OVM_FILE&nbsp;</td><td class=PParameter nowrap>file</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>These methods recursively associate the specified FILE descriptor with reports of the given <i>severity</i>, <i>id</i>, or <i>severity-id</i> pair. </div></div><div class=CToolTip id="tt65"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_report_verbosity_level_hier (</td><td class=PType nowrap>int&nbsp;</td><td class=PParameter nowrap>verbosity</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This method recursively sets the maximum verbosity level for reports for this component and all those below it. </div></div><div class=CToolTip id="tt66"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void accept_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td></tr><tr><td></td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>accept_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function marks the acceptance of a transaction, <i>tr</i>, by this component. </div></div><div class=CToolTip id="tt67"><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 protected function void do_accept_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>The accept_tr method calls this function to accommodate any user-defined post-accept action. </div></div><div class=CToolTip id="tt68"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function integer begin_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>stream_name</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;main&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>label</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>desc</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>begin_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function marks the start of a transaction, <i>tr</i>, by this component. </div></div><div class=CToolTip id="tt69"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function integer begin_child_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>integer&nbsp;</td><td class=PParameter nowrap>parent_handle</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>stream_name</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;main&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>label</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>desc</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>begin_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function marks the start of a child transaction, <i>tr</i>, by this component. </div></div><div class=CToolTip id="tt70"><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 protected function void do_begin_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>stream_name,</td></tr><tr><td></td><td class=PType nowrap>integer&nbsp;</td><td class=PParameter nowrap>tr_handle</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>The begin_tr and begin_child_tr methods call this function to accommodate any user-defined post-begin action. </div></div><div class=CToolTip id="tt71"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void end_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>end_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0,</td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>free_handle</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>1</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function marks the end of a transaction, <i>tr</i>, by this component. </div></div><div class=CToolTip id="tt72"><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 protected function void do_end_tr (</td><td class=PType nowrap>ovm_transaction&nbsp;</td><td class=PParameter nowrap>tr,</td></tr><tr><td></td><td class=PType nowrap>integer&nbsp;</td><td class=PParameter nowrap>tr_handle</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>The end_tr method calls this function to accommodate any user-defined post-end action. </div></div><div class=CToolTip id="tt73"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function integer record_error_tr (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>stream_name</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;main&quot;,</td></tr><tr><td></td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>info</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>label</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;error_tr&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>desc</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>error_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0,</td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>keep_active</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function marks an error transaction by a component. </div></div><div class=CToolTip id="tt74"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function integer record_event_tr (</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>stream_name</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;main&quot;,</td></tr><tr><td></td><td class=PType nowrap>ovm_object&nbsp;</td><td class=PParameter nowrap>info</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>label</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;event_tr&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>desc</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>event_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0,</td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>keep_active</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function marks an event transaction by a component.</div></div><div class=CToolTip id="tt75"><div class=CVariable><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>bit print_enabled = 1</td></tr></table></blockquote>This bit determines if this component should automatically be printed as a child of its parent object.</div></div><div class=CToolTip id="tt76"><div class=CClass><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class ovm_root extends ovm_component</td></tr></table></blockquote>The <i>ovm_root</i> class serves as the implicit top-level and phase controller for all OVM components. </div></div><div class=CToolTip id="tt77"><div class=CClass><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class ovm_report_handler</td></tr></table></blockquote>The ovm_report_handler is the class to which most methods in ovm_report_object delegate. </div></div><div class=CToolTip id="tt78"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function void reseed ()</td></tr></table></blockquote>Calls <i>srandom</i> on the object to reseed the object using the OVM seeding mechanism, which sets the seed based on type name and instance name instead of based on instance position in a thread.</div></div><div class=CToolTip id="tt79"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function string get_name ()</td></tr></table></blockquote>Returns the name of the object, as provided by the <i>name</i> argument in the new constructor or set_name method.</div></div><div class=CToolTip id="tt80"><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 print (</td><td class=PType nowrap>ovm_printer&nbsp;</td><td class=PParameter nowrap>printer</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>The print method deep-prints this object&rsquo;s properties in a format and manner governed by the given <i>printer</i> argument; if the <i>printer</i> argument is not provided, the global ovm_default_printer is used. </div></div><div class=CToolTip id="tt81"><div class=CClass><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class ovm_test_done_objection extends ovm_objection</td></tr></table></blockquote>Built-in end-of-test coordination</div></div><div class=CToolTip id="tt82"><div class=CVariable><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>ovm_test_done_objection ovm_test_done = ovm_test_done_objection::get()</td></tr></table></blockquote>An instance of the ovm_test_done_objection class, this object is used by components to coordinate when to end the currently running task-based phase. </div></div><div class=CToolTip id="tt83"><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="tt84"><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 connect (</td><td class=PType nowrap>this_type&nbsp;</td><td class=PParameter nowrap>provider</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Connects this port to the given <i>provider</i> port. </div></div><div class=CToolTip id="tt85"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void set_global_timeout(</td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>timeout</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Convenience function for ovm_top.phase_timeout = timeout. </div></div><div class=CToolTip id="tt86"><div class=CClass><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters colspan=5>class ovm_component_registry #(</td></tr><tr><td>&nbsp;&nbsp;&nbsp;</td><td class=PType nowrap>type&nbsp;</td><td class=PParameter nowrap>T</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>ovm_component,</td></tr><tr><td>&nbsp;&nbsp;&nbsp;</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>Tname</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&lt;unknown&gt;&quot;</td></tr><tr><td class=PAfterParameters colspan=5>) extends ovm_object_wrapper</td></tr></table></td></tr></table></blockquote>The ovm_component_registry serves as a lightweight proxy for a component of type <i>T</i> and type name <i>Tname</i>, a string. </div></div><div class=CToolTip id="tt87"><div class=CClass><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters colspan=5>class ovm_object_registry #(</td></tr><tr><td>&nbsp;&nbsp;&nbsp;</td><td class=PType nowrap>type&nbsp;</td><td class=PParameter nowrap>T</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>ovm_object,</td></tr><tr><td>&nbsp;&nbsp;&nbsp;</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>Tname</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&lt;unknown&gt;&quot;</td></tr><tr><td class=PAfterParameters colspan=5>) extends ovm_object_wrapper</td></tr></table></td></tr></table></blockquote>The ovm_object_registry serves as a lightweight proxy for an ovm_object of type <i>T</i> and type name <i>Tname</i>, a string. </div></div><div class=CToolTip id="tt88"><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 ovm_object create_object_by_type (</td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>requested_type,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>parent_inst_path</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td></td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>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></div><div class=CToolTip id="tt89"><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 colspan=5>function ovm_component create_component_by_type (</td></tr><tr><td>&nbsp;&nbsp;&nbsp;</td><td class=PType nowrap>ovm_object_wrapper&nbsp;</td><td class=PParameter nowrap>requested_type,</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td>&nbsp;&nbsp;&nbsp;</td><td class=PType nowrap>string&nbsp;</td><td class=PParameter nowrap>parent_inst_path</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>&quot;&quot;,</td></tr><tr><td>&nbsp;&nbsp;&nbsp;</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%></td></tr><tr><td>&nbsp;&nbsp;&nbsp;</td><td class=PType nowrap>ovm_component&nbsp;</td><td class=PParameter nowrap>parent</td><td class=PDefaultValuePrefix>&nbsp;&nbsp;</td><td class=PDefaultValue width=100%></td></tr><tr><td class=PAfterParameters colspan=5>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt90"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void accept_tr (</td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>accept_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Calling accept_tr indicates that the transaction has been accepted for processing by a consumer component, such as an ovm_driver. </div></div><div class=CToolTip id="tt91"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function integer begin_tr (</td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>begin_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function indicates that the transaction has been started and is not the child of another transaction. </div></div><div class=CToolTip id="tt92"><div class=CMethod><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function void end_tr (</td><td class=PType nowrap>time&nbsp;</td><td class=PParameter nowrap>end_time</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>0,</td></tr><tr><td></td><td class=PType nowrap>bit&nbsp;</td><td class=PParameter nowrap>free_handle</td><td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td><td class=PDefaultValue width=100%>1</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>This function indicates that the transaction execution has ended. </div></div><!--END_ND_TOOLTIPS-->
<script language=JavaScript><!--
if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>