blob: f688227fa15574ad62a4dcb173a5bc91d3a6d867 [file] [log] [blame]
<html><head><title>UVM 1.2 Release Notes</title><link rel="stylesheet" type="text/css" href="../../styles/main.css"><script language=JavaScript src="../../javascript/main.js"></script></head><body class="FramedContentPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
<!-- Generated by Natural Docs, version Development Release 01-12-2008 (1.35 base) -->
<!-- http://www.naturaldocs.org -->
<!-- saved from url=(0026)http://www.naturaldocs.org -->
<!--TOP - START OF CONTENT-->
<div id=Content>
<!--CONTENT index=0 -->
<div class="CSection"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="UVM_1.2_Release_Notes" href="../../src/overviews/relnotes.txt">UVM 1.<span class=HB> </span>2 Release Notes</a></h1><div class=CBody>
<!--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="SMain"><td colspan=2 class=SEntry><a href="#UVM_1.2_Release_Notes" >UVM 1.<span class=HB> </span>2 Release Notes</a></td></tr>
<tr class=SMain><td colspan=2 class=SWideDescription></td></tr>
<!-- index=1 -->
<tr class="SGeneric SIndent1"><td class=SEntry><a href="#General_Overview" >General Overview</a></td><td class=SDescription>This is release 1.2 of the Universal Verification Methodology (UVM) reference implementation from Accellera. </td></tr>
<!-- index=2 -->
<tr class="SGeneric SIndent1 SMarked"><td class=SEntry><a href="#What's_Changed" >What&rsquo;s Changed</a></td><td class=SDescription>Release 1.2 contains enhancements and fixes to errata.</td></tr>
<!-- index=3 -->
<tr class="SGeneric SIndent1"><td class=SEntry><a href="#1.1_to_1.2_Migration_Script" >1.<span class=HB> </span>1 to 1.<span class=HB> </span>2 Migration Script</a></td><td class=SDescription>Many of the backwards compatibility concerns caused when transitioning from UVM version 1.1 to 1.2 can be addressed with a reasonably simple search-and-replace in user code. </td></tr>
<!-- index=4 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_3407(+)" >Mantis 3407 (+)</a></td><td class=SDescription>uvm_event should be a parameterized class</td></tr>
<!-- index=5 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_3472(*)" >Mantis 3472 (*)</a></td><td class=SDescription>Deprecate get_config/set_config interface for configuration</td></tr>
<!-- index=6 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>Care must be taken when switching from <i>set_config_object</i> and <i>get_config_object</i> to <a href="../base/uvm_config_db-svh.html#uvm_config_object" class=LGeneric id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">uvm_config_object</a>, as the <i>clone</i> functionality of the old API no longer exists.</td></tr>
<!-- index=7 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_3557" >Mantis 3557</a></td><td class=SDescription>ref guide doesn&rsquo;t show names of UVM runtime phases</td></tr>
<!-- index=8 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_3586(+)" >Mantis 3586 (+)</a></td><td class=SDescription>UVM_DISABLE_AUTO_ITEM_RECORDING should be a run_time option</td></tr>
<!-- index=9 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_3693(+)" >Mantis 3693 (+)</a></td><td class=SDescription>Setting enum values by name from command line doesn&rsquo;t work</td></tr>
<!-- index=10 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_3741(+)" >Mantis 3741 (+)</a></td><td class=SDescription>Phase&rsquo;s default sequence should also have get_config string support</td></tr>
<!-- index=11 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_3783" >Mantis 3783</a></td><td class=SDescription>Remove all $display calls from BCL, except report_server</td></tr>
<!-- index=12 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_3887(*)" >Mantis 3887 (*)</a></td><td class=SDescription>request facility to identify unused factory overrides</td></tr>
<!-- index=13 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility:" >Backwards Compatibility:</a></td><td class=SDescription>The undocumented <i>uvm_pkg::factory</i> variable has been removed, as it was unsafe during static initialization, and incompatible with the <a href="../base/uvm_coreservice-svh.html#uvm_coreservice_t" class=LClass id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">uvm_coreservice_t</a> class. </td></tr>
<!-- index=14 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_3893(+)" >Mantis 3893 (+)</a></td><td class=SDescription>Feature request to create a non-hierarchical objection</td></tr>
<!-- index=15 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_3901" >Mantis 3901</a></td><td class=SDescription>Feature request to prevent objection from throwing decrement-below-zero error if the count is 0</td></tr>
<!-- index=16 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4032(+)" >Mantis 4032 (+)</a></td><td class=SDescription>Not possible to undo a factory override.</td></tr>
<!-- index=17 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4091" >Mantis 4091</a></td><td class=SDescription>bug in the <i>get_full_name</i> method of <a href="../reg/uvm_reg_file-svh.html#uvm_reg_file" class=LClass id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">uvm_reg_file</a>.</td></tr>
<!-- index=18 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4160" >Mantis 4160</a></td><td class=SDescription>uvm_comparer not using verbosity setting for print_msg()</td></tr>
<!-- index=19 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4181(+)" >Mantis 4181 (+)</a></td><td class=SDescription>transaction order unclear and cant be changed when bus/reg size differ</td></tr>
<!-- index=20 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4253" >Mantis 4253</a></td><td class=SDescription>Volatile fields should always need updating</td></tr>
<!-- index=21 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4269(*)" >Mantis 4269 (*)</a></td><td class=SDescription>Add UVM_ prefix to enumerated values</td></tr>
<!-- index=22 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backawards_Compatibility" >Backawards Compatibility</a></td><td class=SDescription>References to the values within <a href="../base/uvm_object_globals-svh.html#uvm_sequence_state_enum" class=LType id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">uvm_sequence_state_enum</a> and <a href="../base/uvm_object_globals-svh.html#uvm_sequencer_arb_mode" class=LType id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">uvm_sequencer_arb_mode</a> must now be prefixed with <i>UVM_</i>.</td></tr>
<!-- index=23 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4306" >Mantis 4306</a></td><td class=SDescription>Bad reference to &ldquo;record_field_int&rdquo; in reference guide</td></tr>
<!-- index=24 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4307" >Mantis 4307</a></td><td class=SDescription>Bad reference to &ldquo;DEC&rdquo; in reference guide</td></tr>
<!-- index=25 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4366(+)" >Mantis 4366 (+)</a></td><td class=SDescription>uvm_sequence_library documentation missing from html documentation</td></tr>
<!-- index=26 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4378" >Mantis 4378</a></td><td class=SDescription>Documentation of uvm_component::set_inst_override_by_type() incorrectly documents uvm_factory::set_inst_override_by_type()</td></tr>
<!-- index=27 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4382(+)" >Mantis 4382 (+)</a></td><td class=SDescription>some symbols in uvm_radix_enum undocumented</td></tr>
<!-- index=28 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4389(+)" >Mantis 4389 (+)</a></td><td class=SDescription>Deprecate hierarchical propagation of objections; add mode bit in interim</td></tr>
<!-- index=29 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4391" >Mantis 4391</a></td><td class=SDescription>Redundant code in uvm_port_base</td></tr>
<!-- index=30 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4416(*)" >Mantis 4416 (*)</a></td><td class=SDescription>Remove the confusing uvm_severity type</td></tr>
<!-- index=31 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>This change should have minimal effect on user code, as the old type was simply deprecated, as opposed to removed. </td></tr>
<!-- index=32 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4418" >Mantis 4418</a></td><td class=SDescription>set_report_verbosity doc unclear about setting value or threshold</td></tr>
<!-- index=33 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4425" >Mantis 4425</a></td><td class=SDescription>BUSY flag not cleared when register model is reset</td></tr>
<!-- index=34 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4430(+)" >Mantis 4430 (+)</a></td><td class=SDescription>Refactor start_phase_sequence logic to be able to kill sequence on phase ending</td></tr>
<!-- index=35 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>While technically acting different than the previous implementation, it is unlikely that this will result in any backwards incompatibility challenges, as the old mechanism simply terminated the process which launched the <i>default_sequence</i>, resulting in a &ldquo;zombie&rdquo; sequence.</td></tr>
<!-- index=36 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4431(*)(+)" >Mantis 4431 (*)(+)</a></td><td class=SDescription>Enhance uvm_sequence::starting_phase</td></tr>
<!-- index=37 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>This change could potentially effect users, as references to the <i>uvm_sequence_base::starting_phase</i> variable will now miscompile. </td></tr>
<!-- index=38 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4432(+)" >Mantis 4432 (+)</a></td><td class=SDescription>Provide auto-object-to-phase in uvm_sequence_base</td></tr>
<!-- index=39 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4433(*)" >Mantis 4433 (*)</a></td><td class=SDescription>Clean up the number of objections created by phasing</td></tr>
<!-- index=40 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>While technically acting different than the previous implementation, it is unlikely that this will result in any backwards incompatibility challenges. </td></tr>
<!-- index=41 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4434(+)" >Mantis 4434 (+)</a></td><td class=SDescription>Provide get_objection_count in uvm_phase</td></tr>
<!-- index=42 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4439(+)" >Mantis 4439 (+)</a></td><td class=SDescription>seq_item_port.put_response is not documented</td></tr>
<!-- index=43 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4440" >Mantis 4440</a></td><td class=SDescription>jump logic too early in phase state pipeline</td></tr>
<!-- index=44 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4469(+)" >Mantis 4469 (+)</a></td><td class=SDescription>Provide schedule introspection via get_predecessor/successor_nodes</td></tr>
<!-- index=45 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4476(+)" >Mantis 4476 (+)</a></td><td class=SDescription>uvm_sequence fields req/rsp are not documented</td></tr>
<!-- index=46 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4488(+)" >Mantis 4488 (+)</a></td><td class=SDescription>sequencer_base should throw error if user allows wait_for_relevant to return while is_relevant=0</td></tr>
<!-- index=47 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4513(+)" >Mantis 4513 (+)</a></td><td class=SDescription>Add uvm_mem_mam_policy allocator to uvm_vreg::allocate()</td></tr>
<!-- index=48 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4516(*)" >Mantis 4516 (*)</a></td><td class=SDescription>Remove the unnecessary over-prioritization of uvm_sequence_base in default_sequence</td></tr>
<!-- index=49 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>While technically acting different than the previous implementation, it is unlikely that this will result in any backwards incompatibility challenges. </td></tr>
<!-- index=50 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4517(+)" >Mantis 4517 (+)</a></td><td class=SDescription>Add phase-transition callbacks</td></tr>
<!-- index=51 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4518(*)(+)" >Mantis 4518 (*)(+)</a></td><td class=SDescription>Make UVM_OBJECT_MUST_HAVE_CONSTRUCTOR the default behavior</td></tr>
<!-- index=52 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Why_uvm_object_constructors_are_now_mandatory" >Why uvm_object constructors are now mandatory</a></td><td class=SDescription>The UVM recommends that the following constructor be specified for any class extended from <a href="../base/uvm_object-svh.html#uvm_object" class=LClass id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">uvm_object</a>:</td></tr>
<!-- index=53 -->
<tr class="SGeneric SIndent2"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>In UVM 1.2, the UVM object factory now requires that uvm_object have a constructor with a name argument. </td></tr>
<!-- index=54 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Code_migration_script" >Code migration script</a></td><td class=SDescription>Suitable constructors may be automatically added to classes that are missing them by using the <i>add_uvm_object_new.pl</i> script. </td></tr>
<!-- index=55 -->
<tr class="SGeneric SIndent2"><td class=SEntry><a href="#Migrating_code_using_UVM_1.2" >Migrating code using UVM 1.2</a></td><td class=SDescription>To ease the process of migrating code to UVM 1.2, the old (incorrect) behavior remain available. </td></tr>
<!-- index=56 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#What_will_happen_in_UVM_1.3" >What will happen in UVM 1.3?</a></td><td class=SDescription>In UVM 1.3, the UVM object factory will have the corrected behavior <b>ONLY</b>. </td></tr>
<!-- index=57 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4519(+)" >Mantis 4519 (+)</a></td><td class=SDescription>Enable all flavors of phase jumping</td></tr>
<!-- index=58 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4532" >Mantis 4532</a></td><td class=SDescription>uvm_reg_access_seq ignoring regs with one RO field</td></tr>
<!-- index=59 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4533" >Mantis 4533</a></td><td class=SDescription>initialized memory on DPI side may survive reset and will cause bad behaviour</td></tr>
<!-- index=60 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4542" >Mantis 4542</a></td><td class=SDescription>uvm_test_done should be made &ldquo;const&rdquo;</td></tr>
<!-- index=61 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>The <i>uvm_test_done</i> variable is not part of the UVM standard, but may have been used by users coming from the OVM. </td></tr>
<!-- index=62 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4550" >Mantis 4550</a></td><td class=SDescription>are uvm tlm connections with non-uvm_object a legal/supported use model?</td></tr>
<!-- index=63 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4553(+)" >Mantis 4553 (+)</a></td><td class=SDescription>Infinite recursion in uvm_reg_field::get_access</td></tr>
<!-- index=64 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4548" >Mantis 4548</a></td><td class=SDescription>cleanup static dpi issues</td></tr>
<!-- index=65 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4566" >Mantis 4566</a></td><td class=SDescription>comparer.show_max can cause check to pass when length mismatches</td></tr>
<!-- index=66 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4567" >Mantis 4567</a></td><td class=SDescription>uvm_reg::do_predict ignoring UVM_NOT_OK</td></tr>
<!-- index=67 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4570(*)(+)" >Mantis 4570 (*)(+)</a></td><td class=SDescription>Messaging System Revamp</td></tr>
<!-- index=68 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>The <i>uvm_report_server::process_report</i> and <i>uvm_report_server::compose_message</i> methods have been replaced by the object-based <a href="../base/uvm_report_server-svh.html#uvm_report_server.execute_report_message" class=LMethod id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">uvm_report_server::execute_report_message</a> and <a href="../base/uvm_report_server-svh.html#uvm_report_server.compose_report_message" class=LMethod id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')">uvm_report_server::compose_report_message</a> methods. </td></tr>
<!-- index=69 -->
<tr class="SGeneric SIndent2"><td class=SEntry><a href="#Migrating_code_using_UVM_1.2" >Migrating code using UVM 1.2</a></td><td class=SDescription>To ease the process of migrating code to UVM 1.2, the old behavior remains available to the user. </td></tr>
<!-- index=70 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4572" >Mantis 4572</a></td><td class=SDescription>packing/unpacking issues</td></tr>
<!-- index=71 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4587" >Mantis 4587</a></td><td class=SDescription>Bugs in UVM 1.1-c: uvm_reg_tlm_adapter::reg2bus()</td></tr>
<!-- index=72 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4588" >Mantis 4588</a></td><td class=SDescription>in-built sequence is not equipped to exclude a block from the test sequence</td></tr>
<!-- index=73 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4590" >Mantis 4590</a></td><td class=SDescription>update uvm_hdl.c to allow VCS/IUS to perform backdoor access to VHDL</td></tr>
<!-- index=74 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4606" >Mantis 4606</a></td><td class=SDescription>uvm_report_server is not really extendable/chainable</td></tr>
<!-- index=75 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>If users had previously extended <a href="../base/uvm_report_server-svh.html#uvm_report_server" class=LClass id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')">uvm_report_server</a>, then their code will likely no longer compile because they are not fully implementing the <i>pure virtual</i> interface which the report server now provides. </td></tr>
<!-- index=76 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4617" >Mantis 4617</a></td><td class=SDescription>uvm_report_cb::add_by_name example needs review</td></tr>
<!-- index=77 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4618(*)" >Mantis 4618 (*)</a></td><td class=SDescription>resource lookup broken/undefined when fieldname has wildcards</td></tr>
<!-- index=78 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>The previous behavior for meta characters within the field name was not fully defined.</td></tr>
<!-- index=79 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4621" >Mantis 4621</a></td><td class=SDescription>printing of int fields will mask Z values with X</td></tr>
<!-- index=80 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4622" >Mantis 4622</a></td><td class=SDescription>uvm_phase::unsync() does not work</td></tr>
<!-- index=81 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4643" >Mantis 4643</a></td><td class=SDescription>uvm_dpi_get_next_arg_c doesnt fully adhere to -1800-lrm</td></tr>
<!-- index=82 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4649(+)(*)" >Mantis 4649 (+)(*)</a></td><td class=SDescription>Improve memory performance of &lsquo;bitstream&rsquo; interfaces for report/record/etc.</td></tr>
<!-- index=83 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>In order to provide a consistent API, the <i>uvm_printer::print_int</i> method was deprecated and replaced by <a href="../base/uvm_printer-svh.html#uvm_printer.print_field_int" class=LMethod id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')">uvm_printer::print_field_int</a>.</td></tr>
<!-- index=84 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4666" >Mantis 4666</a></td><td class=SDescription>uvm_config_db::set expects to be invoked in process context</td></tr>
<!-- index=85 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4677" >Mantis 4677</a></td><td class=SDescription>remove uvm_global_copy_map</td></tr>
<!-- index=86 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4686(+)" >Mantis 4686 (+)</a></td><td class=SDescription>predict updated not just the mirrored field</td></tr>
<!-- index=87 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4690" >Mantis 4690</a></td><td class=SDescription>Typo in uvm_sequence_base.vh (mehod should be method)</td></tr>
<!-- index=88 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4711" >Mantis 4711</a></td><td class=SDescription>uvm macros violate 1800lrm iterator requirements</td></tr>
<!-- index=89 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4731" >Mantis 4731</a></td><td class=SDescription>Static initialization races</td></tr>
<!-- index=90 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4732(+)" >Mantis 4732 (+)</a></td><td class=SDescription>uvm_phase_state initializes to incorrect value</td></tr>
<!-- index=91 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4734" >Mantis 4734</a></td><td class=SDescription>Bug in uvm_reg_map::get_size();</td></tr>
<!-- index=92 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4738" >Mantis 4738</a></td><td class=SDescription>DPI Code does not use UVM Messaging</td></tr>
<!-- index=93 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4743(+)" >Mantis 4743 (+)</a></td><td class=SDescription>Promote get_next_item, try_next_item, item_done, get, peek, and put to be a part of the standard</td></tr>
<!-- index=94 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4744(*)(+)" >Mantis 4744 (*)(+)</a></td><td class=SDescription>Recording System Revamp</td></tr>
<!-- index=95 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>The changes made to the <a href="../base/uvm_recorder-svh.html#uvm_recorder" class=LClass id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')">uvm_recorder</a> API were primarily isolated to undocumented and non-standardized methods within <a href="../base/uvm_recorder-svh.html#uvm_recorder" class=LClass id=link12 onMouseOver="ShowTip(event, 'tt11', 'link12')" onMouseOut="HideTip('tt11')">uvm_recorder</a> class. </td></tr>
<!-- index=96 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4766(*)" >Mantis 4766 (*)</a></td><td class=SDescription>Fix broken `uvm_record_field + `uvm_record_attribute interaction</td></tr>
<!-- index=97 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>Vendors which had provided an implementation of the <a href="../macros/uvm_object_defines-svh.html#`uvm_record_attribute" class=LMacro id=link13 onMouseOver="ShowTip(event, 'tt12', 'link13')" onMouseOut="HideTip('tt12')">`uvm_record_attribute</a> macro need to add an implementation of <a href="../base/uvm_recorder-svh.html#uvm_recorder.use_record_attribute" class=LMethod id=link14 onMouseOver="ShowTip(event, 'tt13', 'link14')" onMouseOut="HideTip('tt13')">uvm_recorder::use_record_attribute</a> in their recorders to allow compatibility with the new macro implementation.</td></tr>
<!-- index=98 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4767(+)" >Mantis 4767 (+)</a></td><td class=SDescription>`uvm_pack_int and `uvm_unpack_int bypass the uvm_packer policy methods</td></tr>
<!-- index=99 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4772" >Mantis 4772</a></td><td class=SDescription>separate uvm_hdl* source into files-by-vendor</td></tr>
<!-- index=100 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4783(*)" >Mantis 4783 (*)</a></td><td class=SDescription>`uvm_record_* macros bypass uvm_recorder policy class</td></tr>
<!-- index=101 -->
<tr class="SGeneric SIndent2 SMarked"><td class=SEntry><a href="#Backwards_Compatibility" >Backwards Compatibility</a></td><td class=SDescription>The changes to the macros should be transparent to most end users, however developers which were supporting the old undocumented macros may need to update their implementations.</td></tr>
<!-- index=102 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4786(+)" >Mantis 4786 (+)</a></td><td class=SDescription>print_real is undocumented</td></tr>
<!-- index=103 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4784(+)" >Mantis 4784 (+)</a></td><td class=SDescription>`uvm_record_int/string/time/real are undocumented</td></tr>
<!-- index=104 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4861" >Mantis 4861</a></td><td class=SDescription>Adding a uvm_reg_map to an existing regmap instance required both maps to have the same parent. </td></tr>
<!-- index=105 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4871" >Mantis 4871</a></td><td class=SDescription>Fixed a problem wherein multiple <i>+uvm_set_*</i> commands were ignored after a format error.</td></tr>
<!-- index=106 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4882" >Mantis 4882</a></td><td class=SDescription>The instance name of the phase objection was changed to reflect the name of the phase.</td></tr>
<!-- index=107 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4884" >Mantis 4884</a></td><td class=SDescription>A performance fix was implemented which avoided the copy of large QDA within the spell checker.</td></tr>
<!-- index=108 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4893" >Mantis 4893</a></td><td class=SDescription>Fixed a bug within uvm_leaf_scope which could lead to stall of simulation.</td></tr>
<!-- index=109 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4920" >Mantis 4920</a></td><td class=SDescription>Fixed random stability bug in <i>lookup_name</i> which caused instability when the config database was queried.</td></tr>
<!-- index=110 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4923" >Mantis 4923</a></td><td class=SDescription>A check was added for an out-of-bound queue access in uvm_misc.svh. </td></tr>
<!-- index=111 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4925" >Mantis 4925</a></td><td class=SDescription>The macros <a href="../macros/uvm_global_defines-svh.html#`UVM_MAX_STREAMBITS" class=LMacro id=link15 onMouseOver="ShowTip(event, 'tt14', 'link15')" onMouseOut="HideTip('tt14')">`UVM_MAX_STREAMBITS</a>, <a href="../macros/uvm_global_defines-svh.html#`UVM_PACKER_MAX_BYTES" class=LMacro id=link16 onMouseOver="ShowTip(event, 'tt15', 'link16')" onMouseOut="HideTip('tt15')">`UVM_PACKER_MAX_BYTES</a> and <a href="../macros/uvm_global_defines-svh.html#`UVM_DEFAULT_TIMEOUT" class=LMacro id=link17 onMouseOver="ShowTip(event, 'tt16', 'link17')" onMouseOut="HideTip('tt16')">`UVM_DEFAULT_TIMEOUT</a> were relocated to src/macros/uvm_global_defines.svh, which is included via uvm_macros.svh. </td></tr>
<!-- index=112 -->
<tr class="SGroup SIndent1"><td class=SEntry><a href="#Mantis_4931" >Mantis 4931</a></td><td class=SDescription>Various typos and bad links within the reference guide were corrected.</td></tr></table></div></div><!--END_ND_SUMMARY-->
</div></div></div>
<!--CONTENT index=1 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="General_Overview" href="../../src/overviews/relnotes.txt">General Overview</a></h3><div class=CBody><p>This is release 1.2 of the Universal Verification Methodology (UVM) reference implementation from Accellera.&nbsp; This distribution includes a SystemVerilog based class library, examples, UVM Stardard Reference (PDF and HTML), and a User&rsquo;s Guide.</p><p>The class library is a reference implementation of the standard.&nbsp; It, the examples, and User Guide provide guidance to users of the standard.&nbsp; For additional information on the Accellera standard, see</p><p><a href="http://www.accellera.org/activities/vip" class=LURL target=_top>http://www.accellera.org/activities/vip</a></p><p>A good source for information, answers, and resources is <a href="http://www.accellera.org/community/uvm" class=LURL target=_top>http://www.accellera.org/community/uvm</a>.&nbsp; It contains forums on methodology, tool specific issues, and commercial announcements.&nbsp; It also has links to additional resources, Accellera sponsored events, and other UVM events.</p></div></div></div>
<!--CONTENT index=2 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="What's_Changed" href="../../src/overviews/relnotes.txt">What&rsquo;s Changed</a></h3><div class=CBody><p>Release 1.2 contains enhancements and fixes to errata.</p><p>UVM 1.2 fixes the following enhancements and issues reported under the Mantis bug-tracking system.&nbsp; Issues affecting the reference documentation (API changes or semantic changes) are follwed with a plus sign (+).&nbsp; Issues affecting backward compatibility are folled with an asterisk (*)</p><p>For detailed information on a specific issue, refer to the Mantis database at <a href="http://www.eda.org/svdb/view.php?id=" class=LURL target=_top>http://www.eda.org/svdb/view.php?id=</a>&lt;id&gt;, where &lt;id&gt; is the Mantis id.</p></div></div></div>
<!--CONTENT index=3 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="1.1_to_1.2_Migration_Script" href="../../src/overviews/relnotes.txt">1.<span class=HB> </span>1 to 1.<span class=HB> </span>2 Migration Script</a></h3><div class=CBody><p>Many of the backwards compatibility concerns caused when transitioning from UVM version 1.1 to 1.2 can be addressed with a reasonably simple search-and-replace in user code.&nbsp; To that end, the <i>uvm11-to-uvm12.pl</i> is provided.</p><p>The following command will update all SystemVerilog source files located in the current working directory and any sub-directory:</p><blockquote><pre>% uvm11-to-uvm12.pl --write</pre></blockquote><p>See the <i>--help</i> command-line option for additional details.</p><p>The script may not be able to automatically identify all cases of backwards incompatibility, and the user may need to fix some manually.&nbsp; Because most of these issues will result in a compile-time error, they should be easy to identify.</p></div></div></div>
<!--CONTENT index=4 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_3407(+)" href="../../src/overviews/relnotes.txt">Mantis 3407 (+)</a></h3><div class=CBody><p>uvm_event should be a parameterized class</p><p>The <i>uvm_event</i> class was split into two classes, an abstract <a href="../base/uvm_event-svh.html#uvm_event_base" class=LClass id=link18 onMouseOver="ShowTip(event, 'tt17', 'link18')" onMouseOut="HideTip('tt17')">uvm_event_base</a>, and a parameterized <a href="../base/uvm_event-svh.html#uvm_event#(T)" class=LClass id=link19 onMouseOver="ShowTip(event, 'tt18', 'link19')" onMouseOut="HideTip('tt18')">uvm_event#(T)</a>.</p><p>This should have minimal backwards compatibility concerns, as any code using <i>uvm_event</i> without explicitly declaring a <i>#(T)</i> will default to <i>uvm_event#(uvm_object)</i>.</p></div></div></div>
<!--CONTENT index=5 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_3472(*)" href="../../src/overviews/relnotes.txt">Mantis 3472 (*)</a></h3><div class=CBody><p>Deprecate get_config/set_config interface for configuration</p><p>The methods <i>set_config_int</i>, <i>set_config_string</i> and <i>set_config_object</i> (and their <i>get</i> counterparts) are now deprecated in favor of <a href="../base/uvm_config_db-svh.html#uvm_config_int" class=LGeneric id=link20 onMouseOver="ShowTip(event, 'tt19', 'link20')" onMouseOut="HideTip('tt19')">uvm_config_int</a>, <a href="../base/uvm_config_db-svh.html#uvm_config_string" class=LGeneric id=link21 onMouseOver="ShowTip(event, 'tt20', 'link21')" onMouseOut="HideTip('tt20')">uvm_config_string</a> and <a href="../base/uvm_config_db-svh.html#uvm_config_object" class=LGeneric id=link22 onMouseOver="ShowTip(event, 'tt1', 'link22')" onMouseOut="HideTip('tt1')">uvm_config_object</a>.</p></div></div></div>
<!--CONTENT index=6 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>Care must be taken when switching from <i>set_config_object</i> and <i>get_config_object</i> to <a href="../base/uvm_config_db-svh.html#uvm_config_object" class=LGeneric id=link23 onMouseOver="ShowTip(event, 'tt1', 'link23')" onMouseOut="HideTip('tt1')">uvm_config_object</a>, as the <i>clone</i> functionality of the old API no longer exists.</p></div></div></div>
<!--CONTENT index=7 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_3557" href="../../src/overviews/relnotes.txt">Mantis 3557</a></h3><div class=CBody><p>ref guide doesn&rsquo;t show names of UVM runtime phases</p><p>The documentation for <a href="../base/uvm_common_phases-svh.html#UVM_Common_Phases" class=LSection id=link24 onMouseOver="ShowTip(event, 'tt21', 'link24')" onMouseOut="HideTip('tt21')">UVM Common Phases</a> and <a href="../base/uvm_runtime_phases-svh.html#UVM_Run-Time_Phases" class=LSection id=link25 onMouseOver="ShowTip(event, 'tt22', 'link25')" onMouseOut="HideTip('tt22')">UVM Run-Time Phases</a> has been updated to include a definition of how phases are named.</p></div></div></div>
<!--CONTENT index=8 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_3586(+)" href="../../src/overviews/relnotes.txt">Mantis 3586 (+)</a></h3><div class=CBody><p>UVM_DISABLE_AUTO_ITEM_RECORDING should be a run_time option</p><p><a href="../tlm1/uvm_sqr_ifs-svh.html#uvm_sqr_if_base#(REQ,RSP).disable_auto_item_recording" class=LMethod id=link26 onMouseOver="ShowTip(event, 'tt23', 'link26')" onMouseOut="HideTip('tt23')">uvm_sqr_if_base#(REQ,RSP)::disable_auto_item_recording</a> and <a href="../tlm1/uvm_sqr_ifs-svh.html#uvm_sqr_if_base#(REQ,RSP).is_auto_item_recording_enabled" class=LMethod id=link27 onMouseOver="ShowTip(event, 'tt24', 'link27')" onMouseOut="HideTip('tt24')">uvm_sqr_if_base#(REQ,RSP)::is_auto_item_recording_enabled</a> have been added to the <a href="../tlm1/uvm_sqr_ifs-svh.html#uvm_sqr_if_base#(REQ,RSP)" class=LClass id=link28 onMouseOver="ShowTip(event, 'tt25', 'link28')" onMouseOut="HideTip('tt25')">uvm_sqr_if_base#(REQ,RSP)</a> class, allowing the driver runtime control over whether or not a sequencer should automatically record the items which flow through the sequence item port.</p></div></div></div>
<!--CONTENT index=9 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_3693(+)" href="../../src/overviews/relnotes.txt">Mantis 3693 (+)</a></h3><div class=CBody><p>Setting enum values by name from command line doesn&rsquo;t work</p><p>The <a href="../base/uvm_globals-svh.html#uvm_enum_wrapper#(T)" class=LClass id=link29 onMouseOver="ShowTip(event, 'tt26', 'link29')" onMouseOut="HideTip('tt26')">uvm_enum_wrapper#(T)</a> utility class has been added, which provides the ability to retrieve an enum value when provided with a string matching the <i>enum.name()</i> for that value.</p><p>This class is used by the <a href="../macros/uvm_object_defines-svh.html#`uvm_field_enum" class=LMacro id=link30 onMouseOver="ShowTip(event, 'tt27', 'link30')" onMouseOut="HideTip('tt27')">`uvm_field_enum</a> macro when performing auto-configuration, such that values can be set using <i>uvm_config_db#(string)</i> (or the <a href="../base/uvm_cmdline_processor-svh.html#uvm_cmdline_processor.+uvm_set_config_string" class=LVariable id=link31 onMouseOver="ShowTip(event, 'tt28', 'link31')" onMouseOut="HideTip('tt28')">uvm_cmdline_processor::+uvm_set_config_string</a> plusarg).</p></div></div></div>
<!--CONTENT index=10 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_3741(+)" href="../../src/overviews/relnotes.txt">Mantis 3741 (+)</a></h3><div class=CBody><p>Phase&rsquo;s default sequence should also have get_config string support</p><p>A new plusarg has been added (<a href="../base/uvm_cmdline_processor-svh.html#uvm_cmdline_processor.+uvm_set_default_sequence" class=LVariable id=link32 onMouseOver="ShowTip(event, 'tt29', 'link32')" onMouseOut="HideTip('tt29')">uvm_cmdline_processor::+uvm_set_default_sequence</a>) which allows for the <i>default_sequence</i> a sequencer executes in <a href="../seq/uvm_sequencer_base-svh.html#uvm_sequencer_base.start_phase_sequence" class=LMethod id=link33 onMouseOver="ShowTip(event, 'tt30', 'link33')" onMouseOut="HideTip('tt30')">uvm_sequencer_base::start_phase_sequence</a> to be set directly from the command line.</p><p>General support for setting <i>default_sequence</i> as a string was not provided, as during runtime the <i>default_sequence</i> should always be set using either <a href="../seq/uvm_sequence_base-svh.html#uvm_sequence_base" class=LClass id=link34 onMouseOver="ShowTip(event, 'tt31', 'link34')" onMouseOut="HideTip('tt31')">uvm_sequence_base</a> or <a href="../base/uvm_factory-svh.html#uvm_object_wrapper" class=LClass id=link35 onMouseOver="ShowTip(event, 'tt32', 'link35')" onMouseOut="HideTip('tt32')">uvm_object_wrapper</a>.</p></div></div></div>
<!--CONTENT index=11 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_3783" href="../../src/overviews/relnotes.txt">Mantis 3783</a></h3><div class=CBody><p>Remove all $display calls from BCL, except report_server</p><p>All messaging is now routed via <a href="../base/uvm_report_server-svh.html#uvm_report_server" class=LClass id=link36 onMouseOver="ShowTip(event, 'tt9', 'link36')" onMouseOut="HideTip('tt9')">uvm_report_server</a>.</p></div></div></div>
<!--CONTENT index=12 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_3887(*)" href="../../src/overviews/relnotes.txt">Mantis 3887 (*)</a></h3><div class=CBody><p>request facility to identify unused factory overrides</p><p>The <i>uvm_factory</i> class was split into two classes, an abstract <a href="../base/uvm_factory-svh.html#uvm_factory" class=LClass id=link37 onMouseOver="ShowTip(event, 'tt33', 'link37')" onMouseOut="HideTip('tt33')">uvm_factory</a>, a default implementation of <a href="../base/uvm_factory-svh.html#uvm_default_factory" class=LClass id=link38 onMouseOver="ShowTip(event, 'tt34', 'link38')" onMouseOut="HideTip('tt34')">uvm_default_factory</a>.&nbsp; This allows for alternate factories (including those with additional debug functionality) to be created.</p><p>Control over the global factory was migrated to the new <a href="../base/uvm_coreservice-svh.html#uvm_coreservice_t" class=LClass id=link39 onMouseOver="ShowTip(event, 'tt2', 'link39')" onMouseOut="HideTip('tt2')">uvm_coreservice_t</a> class.</p></div></div></div>
<!--CONTENT index=13 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility:" href="../../src/overviews/relnotes.txt">Backwards Compatibility:</a></h3><div class=CBody><p>The undocumented <i>uvm_pkg::factory</i> variable has been removed, as it was unsafe during static initialization, and incompatible with the <a href="../base/uvm_coreservice-svh.html#uvm_coreservice_t" class=LClass id=link40 onMouseOver="ShowTip(event, 'tt2', 'link40')" onMouseOut="HideTip('tt2')">uvm_coreservice_t</a> class.&nbsp; References to this variable need to be upgraded to retrieve the factory via <a href="../base/uvm_factory-svh.html#uvm_factory.get" class=LMethod id=link41 onMouseOver="ShowTip(event, 'tt35', 'link41')" onMouseOut="HideTip('tt35')">uvm_factory::get</a>.</p></div></div></div>
<!--CONTENT index=14 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_3893(+)" href="../../src/overviews/relnotes.txt">Mantis 3893 (+)</a></h3><div class=CBody><p>Feature request to create a non-hierarchical objection</p><p><a href="../base/uvm_objection-svh.html#uvm_objection.set_propagate_mode" class=LMethod id=link42 onMouseOver="ShowTip(event, 'tt36', 'link42')" onMouseOut="HideTip('tt36')">uvm_objection::set_propagate_mode</a> has been added to provide control over whether or not objections propagate.</p></div></div></div>
<!--CONTENT index=15 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_3901" href="../../src/overviews/relnotes.txt">Mantis 3901</a></h3><div class=CBody><p>Feature request to prevent objection from throwing decrement-below-zero error if the count is 0</p><p>An error is no longer produced if <a href="../base/uvm_objection-svh.html#uvm_objection.drop_objection" class=LMethod id=link43 onMouseOver="ShowTip(event, 'tt37', 'link43')" onMouseOut="HideTip('tt37')">uvm_objection::drop_objection</a> is called with a count of <i>0</i>, when the current object count is <i>0</i>.</p></div></div></div>
<!--CONTENT index=16 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4032(+)" href="../../src/overviews/relnotes.txt">Mantis 4032 (+)</a></h3><div class=CBody><p>Not possible to undo a factory override.</p><p>A factory override can now be &ldquo;undone&rdquo; by supplying a type as an override for itself.</p><p>i.e.</p><blockquote><pre>// Perform an override
set_type_override_by_type(old_type::get_type(), new_type::get_type());
// Undo the override
set_type_override_by_type(old_type::get_type(), old_type::get_type());</pre></blockquote></div></div></div>
<!--CONTENT index=17 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4091" href="../../src/overviews/relnotes.txt">Mantis 4091</a></h3><div class=CBody><p>bug in the <i>get_full_name</i> method of <a href="../reg/uvm_reg_file-svh.html#uvm_reg_file" class=LClass id=link44 onMouseOver="ShowTip(event, 'tt3', 'link44')" onMouseOut="HideTip('tt3')">uvm_reg_file</a>.</p><p>The <i>get_full_name</i> method of <a href="../reg/uvm_reg_file-svh.html#uvm_reg_file" class=LClass id=link45 onMouseOver="ShowTip(event, 'tt3', 'link45')" onMouseOut="HideTip('tt3')">uvm_reg_file</a> now includes the top-level block name.</p></div></div></div>
<!--CONTENT index=18 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4160" href="../../src/overviews/relnotes.txt">Mantis 4160</a></h3><div class=CBody><p>uvm_comparer not using verbosity setting for print_msg()</p><p>The <a href="../base/uvm_comparer-svh.html#uvm_comparer.print_msg" class=LMethod id=link46 onMouseOver="ShowTip(event, 'tt38', 'link46')" onMouseOut="HideTip('tt38')">uvm_comparer::print_msg</a> method now obeys the <a href="../base/uvm_comparer-svh.html#uvm_comparer.verbosity" class=LVariable id=link47 onMouseOver="ShowTip(event, 'tt39', 'link47')" onMouseOut="HideTip('tt39')">uvm_comparer::verbosity</a> setting.</p></div></div></div>
<!--CONTENT index=19 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4181(+)" href="../../src/overviews/relnotes.txt">Mantis 4181 (+)</a></h3><div class=CBody><p>transaction order unclear and cant be changed when bus/reg size differ</p><p>The ordering of transactions generated when the size of a register/field is different than the size of the bus can now be controlled via the new <a href="../reg/uvm_reg_map-svh.html#uvm_reg_transaction_order_policy" class=LClass id=link48 onMouseOver="ShowTip(event, 'tt40', 'link48')" onMouseOut="HideTip('tt40')">uvm_reg_transaction_order_policy</a> class.</p></div></div></div>
<!--CONTENT index=20 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4253" href="../../src/overviews/relnotes.txt">Mantis 4253</a></h3><div class=CBody><p>Volatile fields should always need updating</p><p>Volatile register fields will always cause a write(), even if mirrored and desired values are the same.</p></div></div></div>
<!--CONTENT index=21 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4269(*)" href="../../src/overviews/relnotes.txt">Mantis 4269 (*)</a></h3><div class=CBody><p>Add UVM_ prefix to enumerated values</p><p>Various top-level enumeration values (such as those declared in <a href="../base/uvm_object_globals-svh.html#uvm_sequence_state_enum" class=LType id=link49 onMouseOver="ShowTip(event, 'tt4', 'link49')" onMouseOut="HideTip('tt4')">uvm_sequence_state_enum</a>) did not have the <i>UVM_</i> prefix.&nbsp; This would cause compilation errors when the <i>uvm_pkg</i> was wildcard imported into a scope which had already declared the same names.&nbsp; These enumerations have been corrected to include the proper <i>UVM_</i> prefix.</p></div></div></div>
<!--CONTENT index=22 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backawards_Compatibility" href="../../src/overviews/relnotes.txt">Backawards Compatibility</a></h3><div class=CBody><p>References to the values within <a href="../base/uvm_object_globals-svh.html#uvm_sequence_state_enum" class=LType id=link50 onMouseOver="ShowTip(event, 'tt4', 'link50')" onMouseOut="HideTip('tt4')">uvm_sequence_state_enum</a> and <a href="../base/uvm_object_globals-svh.html#uvm_sequencer_arb_mode" class=LType id=link51 onMouseOver="ShowTip(event, 'tt5', 'link51')" onMouseOut="HideTip('tt5')">uvm_sequencer_arb_mode</a> must now be prefixed with <i>UVM_</i>.</p></div></div></div>
<!--CONTENT index=23 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4306" href="../../src/overviews/relnotes.txt">Mantis 4306</a></h3><div class=CBody><p>Bad reference to &ldquo;record_field_int&rdquo; in reference guide</p><p>A bad reference to <i>record_field_int</i> has been corrected to <i>record_field</i> inside of <a href="../base/uvm_recorder-svh.html#uvm_recorder" class=LClass id=link52 onMouseOver="ShowTip(event, 'tt11', 'link52')" onMouseOut="HideTip('tt11')">uvm_recorder</a>.</p></div></div></div>
<!--CONTENT index=24 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4307" href="../../src/overviews/relnotes.txt">Mantis 4307</a></h3><div class=CBody><p>Bad reference to &ldquo;DEC&rdquo; in reference guide</p><p>Bad references to &ldquo;DEC&rdquo; have been corrected to <a href="../base/uvm_object_globals-svh.html#UVM_DEC" class=LConstant id=link53 onMouseOver="ShowTip(event, 'tt41', 'link53')" onMouseOut="HideTip('tt41')">UVM_DEC</a> within <a href="../base/uvm_object-svh.html#uvm_object.do_print" class=LMethod id=link54 onMouseOver="ShowTip(event, 'tt42', 'link54')" onMouseOut="HideTip('tt42')">uvm_object::do_print</a> and <a href="../base/uvm_object-svh.html#uvm_object.do_record" class=LMethod id=link55 onMouseOver="ShowTip(event, 'tt43', 'link55')" onMouseOut="HideTip('tt43')">uvm_object::do_record</a>.</p></div></div></div>
<!--CONTENT index=25 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4366(+)" href="../../src/overviews/relnotes.txt">Mantis 4366 (+)</a></h3><div class=CBody><p>uvm_sequence_library documentation missing from html documentation</p><p>The <a href="../seq/uvm_sequence_library-svh.html#uvm_sequence_library" class=LClass id=link56 onMouseOver="ShowTip(event, 'tt44', 'link56')" onMouseOut="HideTip('tt44')">uvm_sequence_library</a> class has been updated from &ldquo;beta&rdquo; to &ldquo;official&rdquo; status.&nbsp; As such, it is now documented in the reference guide.</p></div></div></div>
<!--CONTENT index=26 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4378" href="../../src/overviews/relnotes.txt">Mantis 4378</a></h3><div class=CBody><p>Documentation of uvm_component::set_inst_override_by_type() incorrectly documents uvm_factory::set_inst_override_by_type()</p><p>The documentation of <a href="../base/uvm_component-svh.html#uvm_component.set_inst_override_by_type" class=LMethod id=link57 onMouseOver="ShowTip(event, 'tt45', 'link57')" onMouseOut="HideTip('tt45')">uvm_component::set_inst_override_by_type</a> as been updated to reflect the proper ordering of the parameters to <a href="../base/uvm_factory-svh.html#uvm_factory.set_inst_override_by_type" class=LMethod id=link58 onMouseOver="ShowTip(event, 'tt46', 'link58')" onMouseOut="HideTip('tt46')">uvm_factory::set_inst_override_by_type</a>.</p></div></div></div>
<!--CONTENT index=27 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4382(+)" href="../../src/overviews/relnotes.txt">Mantis 4382 (+)</a></h3><div class=CBody><p>some symbols in uvm_radix_enum undocumented</p><p>Documentation was added for <a href="../base/uvm_object_globals-svh.html#UVM_UNFORMAT2" class=LConstant id=link59 onMouseOver="ShowTip(event, 'tt47', 'link59')" onMouseOut="HideTip('tt47')">UVM_UNFORMAT2</a>, <a href="../base/uvm_object_globals-svh.html#UVM_UNFORMAT4" class=LConstant id=link60 onMouseOver="ShowTip(event, 'tt48', 'link60')" onMouseOut="HideTip('tt48')">UVM_UNFORMAT4</a>, <a href="../base/uvm_object_globals-svh.html#UVM_REAL" class=LConstant id=link61 onMouseOver="ShowTip(event, 'tt49', 'link61')" onMouseOut="HideTip('tt49')">UVM_REAL</a>, <a href="../base/uvm_object_globals-svh.html#UVM_REAL_DEC" class=LConstant id=link62 onMouseOver="ShowTip(event, 'tt50', 'link62')" onMouseOut="HideTip('tt50')">UVM_REAL_DEC</a>, and <a href="../base/uvm_object_globals-svh.html#UVM_REAL_EXP" class=LConstant id=link63 onMouseOver="ShowTip(event, 'tt51', 'link63')" onMouseOut="HideTip('tt51')">UVM_REAL_EXP</a> within the <a href="../base/uvm_object_globals-svh.html#uvm_radix_enum" class=LType id=link64 onMouseOver="ShowTip(event, 'tt52', 'link64')" onMouseOut="HideTip('tt52')">uvm_radix_enum</a>.</p></div></div></div>
<!--CONTENT index=28 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4389(+)" href="../../src/overviews/relnotes.txt">Mantis 4389 (+)</a></h3><div class=CBody><p>Deprecate hierarchical propagation of objections; add mode bit in interim</p><p><a href="#Mantis_3893(+)" class=LGroup id=link65 onMouseOver="ShowTip(event, 'tt53', 'link65')" onMouseOut="HideTip('tt53')">Mantis 3893 (+)</a> provides the mode bit for controlling propagation of objections.&nbsp; Hierarchical propagation was not outright deprecated in this release.</p></div></div></div>
<!--CONTENT index=29 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4391" href="../../src/overviews/relnotes.txt">Mantis 4391</a></h3><div class=CBody><p>Redundant code in uvm_port_base</p><p>Some redundant code in the <a href="../base/uvm_port_base-svh.html#uvm_port_base#(IF)" class=LClass id=link66 onMouseOver="ShowTip(event, 'tt54', 'link66')" onMouseOut="HideTip('tt54')">uvm_port_base#(IF)</a> was removed.</p></div></div></div>
<!--CONTENT index=30 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4416(*)" href="../../src/overviews/relnotes.txt">Mantis 4416 (*)</a></h3><div class=CBody><p>Remove the confusing uvm_severity type</p><p>The confusing <i>uvm_severity_type</i> was deprecated, and replaced internally using <a href="../base/uvm_object_globals-svh.html#uvm_severity" class=LType id=link67 onMouseOver="ShowTip(event, 'tt55', 'link67')" onMouseOut="HideTip('tt55')">uvm_severity</a>.</p></div></div></div>
<!--CONTENT index=31 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>This change should have minimal effect on user code, as the old type was simply deprecated, as opposed to removed.&nbsp; The <a href="#1.1_to_1.2_Migration_Script" class=LGeneric id=link68 onMouseOver="ShowTip(event, 'tt56', 'link68')" onMouseOut="HideTip('tt56')">1.1 to 1.2 Migration Script</a> can be used to replace any occurances of the old type in user code.</p></div></div></div>
<!--CONTENT index=32 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4418" href="../../src/overviews/relnotes.txt">Mantis 4418</a></h3><div class=CBody><p>set_report_verbosity doc unclear about setting value or threshold</p><p>The documentation of <a href="../base/uvm_report_object-svh.html#uvm_report_object.set_report_verbosity_level" class=LMethod id=link69 onMouseOver="ShowTip(event, 'tt57', 'link69')" onMouseOut="HideTip('tt57')">uvm_report_object::set_report_verbosity_level</a>, <a href="../base/uvm_report_object-svh.html#uvm_report_object.set_report_id_verbosity" class=LMethod id=link70 onMouseOver="ShowTip(event, 'tt58', 'link70')" onMouseOut="HideTip('tt58')">uvm_report_object::set_report_id_verbosity</a>, and <a href="../base/uvm_report_object-svh.html#uvm_report_object.set_report_severity_id_verbosity" class=LMethod id=link71 onMouseOver="ShowTip(event, 'tt59', 'link71')" onMouseOut="HideTip('tt59')">uvm_report_object::set_report_severity_id_verbosity</a> were updated to provide a clearer definition of exactly what the <i>verbosity</i> values implied.</p></div></div></div>
<!--CONTENT index=33 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4425" href="../../src/overviews/relnotes.txt">Mantis 4425</a></h3><div class=CBody><p>BUSY flag not cleared when register model is reset</p><p>The register model was updated to clear the BUSY flag when reset.</p></div></div></div>
<!--CONTENT index=34 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4430(+)" href="../../src/overviews/relnotes.txt">Mantis 4430 (+)</a></h3><div class=CBody><p>Refactor start_phase_sequence logic to be able to kill sequence on phase ending</p><p>The method <a href="../seq/uvm_sequencer_base-svh.html#uvm_sequencer_base.stop_phase_sequence" class=LMethod id=link72 onMouseOver="ShowTip(event, 'tt60', 'link72')" onMouseOut="HideTip('tt60')">uvm_sequencer_base::stop_phase_sequence</a> was added which acts as the bookend to <a href="../seq/uvm_sequencer_base-svh.html#uvm_sequencer_base.start_phase_sequence" class=LMethod id=link73 onMouseOver="ShowTip(event, 'tt30', 'link73')" onMouseOut="HideTip('tt30')">uvm_sequencer_base::start_phase_sequence</a>.&nbsp; It will call <a href="../seq/uvm_sequence_base-svh.html#uvm_sequence_base.kill" class=LMethod id=link74 onMouseOver="ShowTip(event, 'tt61', 'link74')" onMouseOut="HideTip('tt61')">uvm_sequence_base::kill</a> on the <i>default_sequence</i> if the sequence is still executing when the phase ends.</p></div></div></div>
<!--CONTENT index=35 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>While technically acting different than the previous implementation, it is unlikely that this will result in any backwards incompatibility challenges, as the old mechanism simply terminated the process which launched the <i>default_sequence</i>, resulting in a &ldquo;zombie&rdquo; sequence.</p></div></div></div>
<!--CONTENT index=36 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4431(*)(+)" href="../../src/overviews/relnotes.txt">Mantis 4431 (*)(+)</a></h3><div class=CBody><p>Enhance uvm_sequence::starting_phase</p><p>The <i>uvm_sequence_base::starting_phase</i> variable was publicly accessible and not protected from writes-after-reads.&nbsp; This would result in strange behavior (including FATALS and HANGS) if the value was changed between a <i>raise</i> and <i>drop</i> of the objection within the phase.</p><p>The variable was removed, and is now only accessible via the <a href="../seq/uvm_sequence_base-svh.html#uvm_sequence_base.set_starting_phase" class=LMethod id=link75 onMouseOver="ShowTip(event, 'tt62', 'link75')" onMouseOut="HideTip('tt62')">uvm_sequence_base::set_starting_phase</a> and <a href="../seq/uvm_sequence_base-svh.html#uvm_sequence_base.get_starting_phase" class=LMethod id=link76 onMouseOver="ShowTip(event, 'tt63', 'link76')" onMouseOut="HideTip('tt63')">uvm_sequence_base::get_starting_phase</a> accessors.&nbsp; An error will be thrown if there are any attempts to &lsquo;set&rsquo; the starting phase after it has been retrieved via a &lsquo;get&rsquo;.</p></div></div></div>
<!--CONTENT index=37 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>This change could potentially affect users, as references to the <i>uvm_sequence_base::starting_phase</i> variable will now miscompile (unless the deprecated behavior is restored by either defining UVM_DEPRECATED_STARTING_PHASE or not defining UVM_NO_DEPRECATED).&nbsp; The <a href="#1.1_to_1.2_Migration_Script" class=LGeneric id=link77 onMouseOver="ShowTip(event, 'tt56', 'link77')" onMouseOut="HideTip('tt56')">1.1 to 1.2 Migration Script</a> can be used to search-and-replace within the user code, updating it to the new methods.</p></div></div></div>
<!--CONTENT index=38 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4432(+)" href="../../src/overviews/relnotes.txt">Mantis 4432 (+)</a></h3><div class=CBody><p>Provide auto-object-to-phase in uvm_sequence_base</p><p>The <a href="../seq/uvm_sequence_base-svh.html#uvm_sequence_base.set_automatic_phase_objection" class=LMethod id=link78 onMouseOver="ShowTip(event, 'tt64', 'link78')" onMouseOut="HideTip('tt64')">uvm_sequence_base::set_automatic_phase_objection</a> method was added, simplifying the code required to object to the <i>starting_phase</i> inside of a phase.</p></div></div></div>
<!--CONTENT index=39 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4433(*)" href="../../src/overviews/relnotes.txt">Mantis 4433 (*)</a></h3><div class=CBody><p>Clean up the number of objections created by phasing</p><p>Objections only make sense in <a href="../base/uvm_task_phase-svh.html#uvm_task_phase" class=LClass id=link79 onMouseOver="ShowTip(event, 'tt65', 'link79')" onMouseOut="HideTip('tt65')">uvm_task_phase</a>s which are of the <a href="../base/uvm_object_globals-svh.html#UVM_PHASE_IMP" class=LConstant id=link80 onMouseOver="ShowTip(event, 'tt66', 'link80')" onMouseOut="HideTip('tt66')">UVM_PHASE_IMP</a> type.&nbsp; For all other phases and types, the objections have been removed, and any attempt to access the objection will result in an error.</p></div></div></div>
<!--CONTENT index=40 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>While technically acting different than the previous implementation, it is unlikely that this will result in any backwards incompatibility challenges.&nbsp; Any user code which would cause the error to occur would have been silently ignored by the library in the past, which meant that whatever the user was <i>trying</i> to do wouldn&rsquo;t have worked.</p></div></div></div>
<!--CONTENT index=41 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4434(+)" href="../../src/overviews/relnotes.txt">Mantis 4434 (+)</a></h3><div class=CBody><p>Provide get_objection_count in uvm_phase</p><p>The method <a href="../base/uvm_phase-svh.html#uvm_phase.get_objection_count" class=LMethod id=link81 onMouseOver="ShowTip(event, 'tt67', 'link81')" onMouseOut="HideTip('tt67')">uvm_phase::get_objection_count</a> was added, providing the user with a cleaner mechanism for dropping all raised objections.</p><blockquote><pre>// Old Code:
uvm_objection phase_done;
phase_done = phase.get_objection();
phase_done.drop_objection(this,
&quot;dropping all objections&quot;,
phase_done.get_objection_count(this));
// New Code:
phase.drop_objection(this,
&quot;dropping all objections&quot;,
phase.get_objection_count(this));</pre></blockquote></div></div></div>
<!--CONTENT index=42 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4439(+)" href="../../src/overviews/relnotes.txt">Mantis 4439 (+)</a></h3><div class=CBody><p>seq_item_port.put_response is not documented</p><p>The previously undocumented <a href="../tlm1/uvm_sqr_ifs-svh.html#uvm_sqr_if_base#(REQ,RSP).put_response" class=LMethod id=link82 onMouseOver="ShowTip(event, 'tt68', 'link82')" onMouseOut="HideTip('tt68')">uvm_sqr_if_base#(REQ,RSP)::put_response</a> was added to the standard, providing a non-blocking mechanism for sending response information from a driver.</p></div></div></div>
<!--CONTENT index=43 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4440" href="../../src/overviews/relnotes.txt">Mantis 4440</a></h3><div class=CBody><p>jump logic too early in phase state pipeline</p><p>The previous implementation of the <i>jump</i> logic <a href="../base/uvm_phase-svh.html#uvm_phase" class=LClass id=link83 onMouseOver="ShowTip(event, 'tt69', 'link83')" onMouseOut="HideTip('tt69')">uvm_phase</a> caused jumps during the <i>phase_ended</i> callback to be ignored.&nbsp; This has been corrected.</p></div></div></div>
<!--CONTENT index=44 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4469(+)" href="../../src/overviews/relnotes.txt">Mantis 4469 (+)</a></h3><div class=CBody><p>Provide schedule introspection via get_predecessor/successor_nodes</p><p>The <a href="../base/uvm_phase-svh.html#uvm_phase.get_adjacent_predecessor_nodes" class=LMethod id=link84 onMouseOver="ShowTip(event, 'tt70', 'link84')" onMouseOut="HideTip('tt70')">uvm_phase::get_adjacent_predecessor_nodes</a> and <a href="../base/uvm_phase-svh.html#uvm_phase.get_adjacent_successor_nodes" class=LMethod id=link85 onMouseOver="ShowTip(event, 'tt71', 'link85')" onMouseOut="HideTip('tt71')">uvm_phase::get_adjacent_successor_nodes</a> methods were adding the <a href="../base/uvm_phase-svh.html#uvm_phase" class=LClass id=link86 onMouseOver="ShowTip(event, 'tt69', 'link86')" onMouseOut="HideTip('tt69')">uvm_phase</a> api.&nbsp; This provides the user with the ability to programmatically traverse the entire phase graph.</p></div></div></div>
<!--CONTENT index=45 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4476(+)" href="../../src/overviews/relnotes.txt">Mantis 4476 (+)</a></h3><div class=CBody><p>uvm_sequence fields req/rsp are not documented</p><p>The previously undocumented <a href="../seq/uvm_sequence-svh.html#uvm_sequence#(REQ,RSP).req" class=LVariable id=link87 onMouseOver="ShowTip(event, 'tt72', 'link87')" onMouseOut="HideTip('tt72')">uvm_sequence#(REQ,RSP)::req</a> and <a href="../seq/uvm_sequence-svh.html#uvm_sequence#(REQ,RSP).rsp" class=LVariable id=link88 onMouseOver="ShowTip(event, 'tt73', 'link88')" onMouseOut="HideTip('tt73')">uvm_sequence#(REQ,RSP)::rsp</a> fields were added to the standard.</p></div></div></div>
<!--CONTENT index=46 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4488(+)" href="../../src/overviews/relnotes.txt">Mantis 4488 (+)</a></h3><div class=CBody><p>sequencer_base should throw error if user allows wait_for_relevant to return while is_relevant=0</p><p>An error will now be thrown if the sequencer exceeds the allowable number of returns from <a href="../seq/uvm_sequence_base-svh.html#uvm_sequence_base.wait_for_relevant" class=LMethod id=link89 onMouseOver="ShowTip(event, 'tt74', 'link89')" onMouseOut="HideTip('tt74')">uvm_sequence_base::wait_for_relevant</a> without <a href="../seq/uvm_sequence_base-svh.html#uvm_sequence_base.is_relevant" class=LMethod id=link90 onMouseOver="ShowTip(event, 'tt75', 'link90')" onMouseOut="HideTip('tt75')">uvm_sequence_base::is_relevant</a> returning true.&nbsp; The allowable maximum number can be controlled via the <a href="../seq/uvm_sequencer_base-svh.html#uvm_sequencer_base.set_max_zero_time_wait_relevant_count" class=LMethod id=link91 onMouseOver="ShowTip(event, 'tt76', 'link91')" onMouseOut="HideTip('tt76')">uvm_sequencer_base::set_max_zero_time_wait_relevant_count</a> method.</p></div></div></div>
<!--CONTENT index=47 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4513(+)" href="../../src/overviews/relnotes.txt">Mantis 4513 (+)</a></h3><div class=CBody><p>Add uvm_mem_mam_policy allocator to uvm_vreg::allocate()</p><p>The <a href="../reg/uvm_vreg-svh.html#uvm_vreg.allocate" class=LMethod id=link92 onMouseOver="ShowTip(event, 'tt77', 'link92')" onMouseOut="HideTip('tt77')">uvm_vreg::allocate</a> API was expanded to include an optional third <i>alloc</i> argument.</p></div></div></div>
<!--CONTENT index=48 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4516(*)" href="../../src/overviews/relnotes.txt">Mantis 4516 (*)</a></h3><div class=CBody><p>Remove the unnecessary over-prioritization of uvm_sequence_base in default_sequence</p><p>The previous implementation of <a href="../seq/uvm_sequencer_base-svh.html#uvm_sequencer_base" class=LClass id=link93 onMouseOver="ShowTip(event, 'tt78', 'link93')" onMouseOut="HideTip('tt78')">uvm_sequencer_base</a> over-prioritized <i>default_sequence</i> configurations which were of type <a href="../seq/uvm_sequence_base-svh.html#uvm_sequence_base" class=LClass id=link94 onMouseOver="ShowTip(event, 'tt31', 'link94')" onMouseOut="HideTip('tt31')">uvm_sequence_base</a>, such that they would override configurations of type <a href="../base/uvm_factory-svh.html#uvm_object_wrapper" class=LClass id=link95 onMouseOver="ShowTip(event, 'tt32', 'link95')" onMouseOut="HideTip('tt32')">uvm_object_wrapper</a>, even if the wrapper configurations were done with higher precedence.</p></div></div></div>
<!--CONTENT index=49 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>While technically acting different than the previous implementation, it is unlikely that this will result in any backwards incompatibility challenges.&nbsp; The previous implementation would have resulted in unexpected behavior at best.</p></div></div></div>
<!--CONTENT index=50 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4517(+)" href="../../src/overviews/relnotes.txt">Mantis 4517 (+)</a></h3><div class=CBody><p>Add phase-transition callbacks</p><p>The <a href="../base/uvm_phase-svh.html#uvm_phase_cb" class=LClass id=link96 onMouseOver="ShowTip(event, 'tt79', 'link96')" onMouseOut="HideTip('tt79')">uvm_phase_cb</a> and <a href="../base/uvm_phase-svh.html#uvm_phase_cb_pool" class=LClass id=link97 onMouseOver="ShowTip(event, 'tt80', 'link97')" onMouseOut="HideTip('tt80')">uvm_phase_cb_pool</a> were added to provide additional hooks into the phasing API.</p></div></div></div>
<!--CONTENT index=51 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4518(*)(+)" href="../../src/overviews/relnotes.txt">Mantis 4518 (*)(+)</a></h3><div class=CBody><p>Make UVM_OBJECT_MUST_HAVE_CONSTRUCTOR the default behavior</p><p><i>Mantis 3770</i> provided the ability to optionally enforce an explicit constructor with a string-type <i>name</i> argument in the UVM 1.1a, via the <i>`UVM_OBJECT_MUST_HAVE_CONSTRUCTOR</i> symbol.&nbsp; This functionality is now the <i><b>default</b></i> behavior for the UVM.</p></div></div></div>
<!--CONTENT index=52 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Why_uvm_object_constructors_are_now_mandatory" href="../../src/overviews/relnotes.txt">Why uvm_object constructors are now mandatory</a></h3><div class=CBody><p>The UVM recommends that the following constructor be specified for any class extended from <a href="../base/uvm_object-svh.html#uvm_object" class=LClass id=link98 onMouseOver="ShowTip(event, 'tt6', 'link98')" onMouseOut="HideTip('tt6')">uvm_object</a>:</p><blockquote><pre>class my_obj extends uvm_object;
...
`uvm_object_utils(my_obj)
function new(string name = &quot;my_obj&quot;)
super.new(name);
...
endfunction
...
endclass</pre></blockquote><p>However, in UVM 1.0 and UVM 1.1, the presence of such a constructor were not enforced by the library and they were technically optional.&nbsp; If no constructor was specified, a default constructor was provided by SystemVerilog:</p><blockquote><pre>class my_obj extends uvm_object;
...
`uvm_object_utils(my_obj)
function new();
endfunction
...
endclass</pre></blockquote><p>Note the important difference: in the default constructor, there is no <i>name</i> argument.&nbsp; Because the factory could not rely on the presence of that argument, <a href="../base/uvm_object-svh.html#uvm_object" class=LClass id=link99 onMouseOver="ShowTip(event, 'tt6', 'link99')" onMouseOut="HideTip('tt6')">uvm_object</a> instances were created by calling <i>new()</i> without any arguments and subsequently setting the object instance name using <a href="../base/uvm_object-svh.html#uvm_object.set_name" class=LMethod id=link100 onMouseOver="ShowTip(event, 'tt81', 'link100')" onMouseOut="HideTip('tt81')">uvm_object::set_name</a>.</p><blockquote><pre>obj = new();
if (name != &quot;&quot;) obj.set_name(name);</pre></blockquote><p>In most cases, this difference was not significant.&nbsp; However, for any class that makes use of the value of the <i>name</i> argument in the constructor,</p><blockquote><pre>class my_obj extends uvm_object;
your_obj sub;
`uvm_object_utils(my_obj)
function new(string name = &quot;my_obj&quot;)
super.new(name);
sub = your_obj::type_id::create({name,&quot;.sub&quot;});
endfunction
...
endclass</pre></blockquote><p>a difference in behavior was observed between instantiating an object directly:</p><blockquote><pre>my_obj o = new(&quot;o&quot;);</pre></blockquote><p>and instantiating an object via the factory:</p><blockquote><pre>my_obj o = my_obj::type_id::create(&quot;o&quot;);</pre></blockquote><p>The difference could have been worked around by overriding the <a href="../base/uvm_object-svh.html#uvm_object.set_name" class=LMethod id=link101 onMouseOver="ShowTip(event, 'tt81', 'link101')" onMouseOut="HideTip('tt81')">uvm_object::set_name</a> method to percolate the effect of the name change.&nbsp; However, that work-around was often impossible or too late.&nbsp; In the examples above, the former creates an instance of <i>your_obj</i> named &ldquo;o.sub&rdquo; whereas the latter creates an instance named &ldquo;my_obj.sub&rdquo;.&nbsp; It made it impossible to control the sub-object factory based on the parent object name.</p><p>Instantiating coverage group is another example where the work-around did not work.&nbsp; Coverage groups cannot be renamed and must be instantiated in the encapsulating object&rsquo;s constructor.&nbsp; The following example would create coverage groups that are always named &ldquo;my_obj&rdquo; when using the object factory.</p><blockquote><pre>class my_obj extends uvm_object;
covergroup my_cg(string name);
option.name = name;
...
endgroup
`uvm_object_utils(my_obj)
function new(string name = &quot;my_obj&quot;)
super.new(name);
my_cg = new(name);
endfunction
...
endclass</pre></blockquote><p>Because the object factory is such a fundamental element of UVM, it is important that it be able to rely on the presence of a <i>name</i> argument in object constructors.</p></div></div></div>
<!--CONTENT index=53 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>In UVM 1.2, the UVM object factory now requires that uvm_object have a constructor with a name argument.&nbsp; Should this constructor be missing, a syntax error will be issued.&nbsp; However, because much of the factory code is hidden in the utility macros, the syntax error may not point to the ultimate cause of the problem and may be confusing the diagnose.</p><p>For example, this simple file</p><blockquote><pre>`include &quot;uvm_macros.svh&quot;
program test;
import uvm_pkg::*;
class my_obj extends uvm_object;
`uvm_object_utils(my_obj)
endclass
endprogram</pre></blockquote><p>will produce the following error messages:</p><h4 class=CHeading>Questa</h4><blockquote><pre>TBD</pre></blockquote><h4 class=CHeading>IUS</h4><blockquote><pre>file: test.sv
`uvm_object_utils(my_obj)
|
ncvlog: *E,TOOMAC (test.sv,8|24): too many actual arguments [10.2.2][10.3(IEEE)].</pre></blockquote><h4 class=CHeading>VCS</h4><blockquote><pre>Error-[TMAFTC] Too many arguments to function/task call
$UVM_HOME/src/base/uvm_registry.svh, 197
&quot;my_obj::new(name)&quot;
The above function/task call is done with more arguments than needed.
Error-[TMAFTC] Too many arguments to function/task call
test.sv, 6
&quot;my_obj::new(name)&quot;
The above function/task call is done with more arguments than needed.</pre></blockquote><p>When using VCS, ignore the first message reported in uvm_registry.svh and focus on the subsequent one identifying the invalid constructor being called.&nbsp; The reported line number will be on the <i>endclass</i> token of the class that is missing the required constructor.</p></div></div></div>
<!--CONTENT index=54 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Code_migration_script" href="../../src/overviews/relnotes.txt">Code migration script</a></h3><div class=CBody><p>Suitable constructors may be automatically added to classes that are missing them by using the <i>add_uvm_object_new.pl</i> script.&nbsp; The following command will update all SystemVerilog source files located in the current working directory and any sub-directory:</p><blockquote><pre>% add_uvm_object_new.pl --write</pre></blockquote><p>See the <i>--help</i> command-line option for more details.</p><p>The script may not be able to automatically identify all classes with missing constructors, or users may prefer to manually modify their source files.&nbsp; The script is also unable to fix unsuitable constructors; those will need to be fixed manually.&nbsp; Because the error is a compile-time error, it will be easy to identify any remaining changes that are required.</p></div></div></div>
<!--CONTENT index=55 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Migrating_code_using_UVM_1.2" href="../../src/overviews/relnotes.txt">Migrating code using UVM 1.2</a></h3><div class=CBody><p>To ease the process of migrating code to UVM 1.2, the old (incorrect) behavior remain available.&nbsp; To restore the old behavior, it is necessary to define the `UVM_OBJECT_DO_NOT_NEED_CONSTRUCTOR symbol when compiling the UVM library:</p><blockquote><pre>% ... +define+UVM_OBJECT_DO_NOT_NEED_CONSTRUCTOR uvm_pkg.sv</pre></blockquote><p>Users must be aware that this may result in difference in behavior in code that now relies on the correct implementation of the UVM object factory.</p></div></div></div>
<!--CONTENT index=56 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="What_will_happen_in_UVM_1.3" href="../../src/overviews/relnotes.txt">What will happen in UVM 1.3?</a></h3><div class=CBody><p>In UVM 1.3, the UVM object factory will have the corrected behavior <b>ONLY</b>.&nbsp; The old (incorrect) behavior will no longer remain available.</p><p>This is to encourage users to migrate their code forward and enable VIP providers to eventually rely on the correct behavior of the UVM object factory.</p></div></div></div>
<!--CONTENT index=57 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4519(+)" href="../../src/overviews/relnotes.txt">Mantis 4519 (+)</a></h3><div class=CBody><p>Enable all flavors of phase jumping</p><p>The <a href="../base/uvm_phase-svh.html#uvm_phase" class=LClass id=link102 onMouseOver="ShowTip(event, 'tt69', 'link102')" onMouseOut="HideTip('tt69')">uvm_phase</a>&rsquo;s <i>jump</i> API was extended to include <a href="../base/uvm_phase-svh.html#uvm_phase.set_jump_phase" class=LMethod id=link103 onMouseOver="ShowTip(event, 'tt82', 'link103')" onMouseOut="HideTip('tt82')">uvm_phase::set_jump_phase</a> and <a href="../base/uvm_phase-svh.html#uvm_phase.end_prematurely" class=LMethod id=link104 onMouseOver="ShowTip(event, 'tt83', 'link104')" onMouseOut="HideTip('tt83')">uvm_phase::end_prematurely</a>.&nbsp; These methods allow for a &ldquo;softer&rdquo; <i>jump</i> wherein the phase&rsquo;s execution is not immediately terminated.</p></div></div></div>
<!--CONTENT index=58 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4532" href="../../src/overviews/relnotes.txt">Mantis 4532</a></h3><div class=CBody><p>uvm_reg_access_seq ignoring regs with one RO field</p><p>The <a href="../reg/sequences/uvm_reg_access_seq-svh.html#uvm_reg_access_seq" class=LClass id=link105 onMouseOver="ShowTip(event, 'tt84', 'link105')" onMouseOut="HideTip('tt84')">uvm_reg_access_seq</a> implementation was incorrectly skipping registers which contained <i>any</i> &lsquo;RO&rsquo; fields, as opposed to registers which had <i>only</i> &lsquo;RO&rsquo; fields.&nbsp; This behavior has been corrected.</p></div></div></div>
<!--CONTENT index=59 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4533" href="../../src/overviews/relnotes.txt">Mantis 4533</a></h3><div class=CBody><p>initialized memory on DPI side may survive reset and will cause bad behaviour</p><p>The C-side of the UVM&rsquo;s internal DPI calls was not safe during a simulation reset, and could potentially cause memory leaks and bad behavior.&nbsp; This has been corrected.</p></div></div></div>
<!--CONTENT index=60 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4542" href="../../src/overviews/relnotes.txt">Mantis 4542</a></h3><div class=CBody><p>uvm_test_done should be made &ldquo;const&rdquo;</p><p>The undocumented and deprecated <i>uvm_pkg::uvm_test_done</i> reference was made <i>const</i> to prevent users from accidently changing it.</p></div></div></div>
<!--CONTENT index=61 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>The <i>uvm_test_done</i> variable is not part of the UVM standard, but may have been used by users coming from the OVM.&nbsp; As such, this change does not have any backward compatibility concerns for the UVM standard.</p></div></div></div>
<!--CONTENT index=62 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4550" href="../../src/overviews/relnotes.txt">Mantis 4550</a></h3><div class=CBody><p>are uvm tlm connections with non-uvm_object a legal/supported use model?</p><p>The <i>TLM</i> documentation was expanded to explicitly allow non-<a href="../base/uvm_object-svh.html#uvm_object" class=LClass id=link106 onMouseOver="ShowTip(event, 'tt6', 'link106')" onMouseOut="HideTip('tt6')">uvm_object</a>-based types within their parameterization.</p></div></div></div>
<!--CONTENT index=63 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4553(+)" href="../../src/overviews/relnotes.txt">Mantis 4553 (+)</a></h3><div class=CBody><p>Infinite recursion in uvm_reg_field::get_access</p><p>An error message within the <a href="../reg/uvm_reg_field-svh.html#uvm_reg_field.get_access" class=LMethod id=link107 onMouseOver="ShowTip(event, 'tt85', 'link107')" onMouseOut="HideTip('tt85')">uvm_reg_field::get_access</a> method was recursively calling <a href="../reg/uvm_reg_field-svh.html#uvm_reg_field.get_access" class=LMethod id=link108 onMouseOver="ShowTip(event, 'tt85', 'link108')" onMouseOut="HideTip('tt85')">uvm_reg_field::get_access</a>, resulting in an infinite recursion.&nbsp; This behavior was corrected.</p><p>Additionally, while fixing this mantis is was determined that the map of field accesses defined in <a href="../reg/uvm_reg_field-svh.html#uvm_reg_field.set_access" class=LMethod id=link109 onMouseOver="ShowTip(event, 'tt86', 'link109')" onMouseOut="HideTip('tt86')">uvm_reg_field::set_access</a> was lacking a name for the scenario caused when a &lsquo;RO&rsquo; field was added to a &lsquo;WO&rsquo; map.&nbsp; The &ldquo;NOACCESS&rdquo; policy was added to handle this scenario.</p></div></div></div>
<!--CONTENT index=64 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4548" href="../../src/overviews/relnotes.txt">Mantis 4548</a></h3><div class=CBody><p>cleanup static dpi issues</p><p>This mantis wrapped various fixes within the C-side of DPI used within the UVM.</p></div></div></div>
<!--CONTENT index=65 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4566" href="../../src/overviews/relnotes.txt">Mantis 4566</a></h3><div class=CBody><p>comparer.show_max can cause check to pass when length mismatches</p><p>A bug in the <a href="../base/uvm_comparer-svh.html#uvm_comparer" class=LClass id=link110 onMouseOver="ShowTip(event, 'tt87', 'link110')" onMouseOut="HideTip('tt87')">uvm_comparer</a> class caused queues of different sizes to false-pass when the <a href="../base/uvm_comparer-svh.html#uvm_comparer.show_max" class=LVariable id=link111 onMouseOver="ShowTip(event, 'tt88', 'link111')" onMouseOut="HideTip('tt88')">uvm_comparer::show_max</a> value was not equal to &lsquo;1&rsquo;.&nbsp; This behavior has been corrected.</p></div></div></div>
<!--CONTENT index=66 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4567" href="../../src/overviews/relnotes.txt">Mantis 4567</a></h3><div class=CBody><p>uvm_reg::do_predict ignoring UVM_NOT_OK</p><p>The <i>uvm_reg::do_predict</i> method was overwriting <a href="../reg/uvm_reg_model-svh.html#UVM_NOT_OK" class=LConstant id=link112 onMouseOver="ShowTip(event, 'tt89', 'link112')" onMouseOut="HideTip('tt89')">UVM_NOT_OK</a> status under certain circumstances, and replacing it with <a href="../reg/uvm_reg_model-svh.html#UVM_IS_OK" class=LConstant id=link113 onMouseOver="ShowTip(event, 'tt90', 'link113')" onMouseOut="HideTip('tt90')">UVM_IS_OK</a>.&nbsp; This behavior has been corrected.</p></div></div></div>
<!--CONTENT index=67 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4570(*)(+)" href="../../src/overviews/relnotes.txt">Mantis 4570 (*)(+)</a></h3><div class=CBody><p>Messaging System Revamp</p><p>The reporting system was overhauled to use an object-based approach to passing information (as opposed to passing many fields multiple times).&nbsp; This simultaneously expanded the functionality of the messaging API while providing an easier path for adding functionality to this section of the standard in the future.</p></div></div></div>
<!--CONTENT index=68 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>The <i>uvm_report_server::process_report</i> and <i>uvm_report_server::compose_message</i> methods have been replaced by the object-based <a href="../base/uvm_report_server-svh.html#uvm_report_server.execute_report_message" class=LMethod id=link114 onMouseOver="ShowTip(event, 'tt7', 'link114')" onMouseOut="HideTip('tt7')">uvm_report_server::execute_report_message</a> and <a href="../base/uvm_report_server-svh.html#uvm_report_server.compose_report_message" class=LMethod id=link115 onMouseOver="ShowTip(event, 'tt8', 'link115')" onMouseOut="HideTip('tt8')">uvm_report_server::compose_report_message</a> methods.&nbsp; User code which used the old methods will not behave as expected with the new implementation.</p></div></div></div>
<!--CONTENT index=69 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Migrating_code_using_UVM_1.2" href="../../src/overviews/relnotes.txt">Migrating code using UVM 1.2</a></h3><div class=CBody><p>To ease the process of migrating code to UVM 1.2, the old behavior remains available to the user.&nbsp; To restore the old behavior, it is necessary to define the `UVM_DEPRECATED_REPORTING symbol when compiling the UVM library:</p><blockquote><pre>% ... +define+UVM_DEPRECATED_REPORTING uvm_pkg.sv</pre></blockquote><p>Users must be aware that this will result in different behavior in code that now relies on the new implementation of <a href="../base/uvm_report_server-svh.html#uvm_report_server" class=LClass id=link116 onMouseOver="ShowTip(event, 'tt9', 'link116')" onMouseOut="HideTip('tt9')">uvm_report_server</a>.</p></div></div></div>
<!--CONTENT index=70 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4572" href="../../src/overviews/relnotes.txt">Mantis 4572</a></h3><div class=CBody><p>packing/unpacking issues</p><p>The <i>uvm_packer::pack_int</i> method (which has been renamed to <a href="../base/uvm_packer-svh.html#uvm_packer.pack_field" class=LMethod id=link117 onMouseOver="ShowTip(event, 'tt91', 'link117')" onMouseOut="HideTip('tt91')">uvm_packer::pack_field</a>) was incorrectly implemented, causing big endian packs of 64+ bits to be preocessed incorrectly.&nbsp; Additionally, the <a href="../macros/uvm_object_defines-svh.html#`uvm_unpack_array" class=LMacro id=link118 onMouseOver="ShowTip(event, 'tt92', 'link118')" onMouseOut="HideTip('tt92')">`uvm_unpack_array</a> implementation did not work properly when <a href="../base/uvm_packer-svh.html#uvm_packer.use_metadata" class=LVariable id=link119 onMouseOver="ShowTip(event, 'tt93', 'link119')" onMouseOut="HideTip('tt93')">uvm_packer::use_metadata</a> was set to &lsquo;0&rsquo;.&nbsp; These behaviors have been corrected.</p></div></div></div>
<!--CONTENT index=71 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4587" href="../../src/overviews/relnotes.txt">Mantis 4587</a></h3><div class=CBody><p>Bugs in UVM 1.1-c: uvm_reg_tlm_adapter::reg2bus()</p><p>Various fixes we provided for <a href="../reg/uvm_reg_adapter-svh.html#uvm_reg_tlm_adapter.reg2bus" class=LMethod id=link120 onMouseOver="ShowTip(event, 'tt94', 'link120')" onMouseOut="HideTip('tt94')">uvm_reg_tlm_adapter::reg2bus</a> such that iw would properly adhere to <a href="../tlm2/uvm_tlm2_generic_payload-svh.html#uvm_tlm_gp" class=LClass id=link121 onMouseOver="ShowTip(event, 'tt95', 'link121')" onMouseOut="HideTip('tt95')">uvm_tlm_gp</a> rules for <i>length</i>, <i>byte_enable</i>, and <i>byte_enable_length</i>.</p></div></div></div>
<!--CONTENT index=72 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4588" href="../../src/overviews/relnotes.txt">Mantis 4588</a></h3><div class=CBody><p>in-built sequence is not equipped to exclude a block from the test sequence</p><p>The <a href="../reg/sequences/uvm_reg_hw_reset_seq-svh.html#uvm_reg_hw_reset_seq" class=LClass id=link122 onMouseOver="ShowTip(event, 'tt96', 'link122')" onMouseOut="HideTip('tt96')">uvm_reg_hw_reset_seq</a> was updated to ensure sub-blocks were properly excluded when relevant <i>NO_REG_TEST</i> attributes were set.</p></div></div></div>
<!--CONTENT index=73 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4590" href="../../src/overviews/relnotes.txt">Mantis 4590</a></h3><div class=CBody><p>update uvm_hdl.c to allow VCS/IUS to perform backdoor access to VHDL</p><p>The capability to allow VHDL UVM_REG backdoor access using VCS and IUS were added.</p></div></div></div>
<!--CONTENT index=74 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4606" href="../../src/overviews/relnotes.txt">Mantis 4606</a></h3><div class=CBody><p>uvm_report_server is not really extendable/chainable</p><p>In a fix similar to <a href="#Mantis_3887(*)" class=LGroup id=link123 onMouseOver="ShowTip(event, 'tt97', 'link123')" onMouseOut="HideTip('tt97')">Mantis 3887 (*)</a>, <i>uvm_report_server</i> was also split into two classes, an abstract <a href="../base/uvm_report_server-svh.html#uvm_report_server" class=LClass id=link124 onMouseOver="ShowTip(event, 'tt9', 'link124')" onMouseOut="HideTip('tt9')">uvm_report_server</a> and a default implementation of <a href="../base/uvm_report_server-svh.html#uvm_default_report_server" class=LClass id=link125 onMouseOver="ShowTip(event, 'tt98', 'link125')" onMouseOut="HideTip('tt98')">uvm_default_report_server</a>.&nbsp; This allows <a href="../base/uvm_report_server-svh.html#uvm_report_server" class=LClass id=link126 onMouseOver="ShowTip(event, 'tt9', 'link126')" onMouseOut="HideTip('tt9')">uvm_report_server</a> to be fully extended, and multiple report servers can be chained together using a &ldquo;delegate&rdquo; pattern.</p><p>Control over the global report server was migrated to the new <a href="../base/uvm_coreservice-svh.html#uvm_coreservice_t" class=LClass id=link127 onMouseOver="ShowTip(event, 'tt2', 'link127')" onMouseOut="HideTip('tt2')">uvm_coreservice_t</a> class.</p></div></div></div>
<!--CONTENT index=75 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>If users had previously extended <a href="../base/uvm_report_server-svh.html#uvm_report_server" class=LClass id=link128 onMouseOver="ShowTip(event, 'tt9', 'link128')" onMouseOut="HideTip('tt9')">uvm_report_server</a>, then their code will likely no longer compile because they are not fully implementing the <i>pure virtual</i> interface which the report server now provides.&nbsp; The fix to reinstate the previous functionality is to extend the <a href="../base/uvm_report_server-svh.html#uvm_default_report_server" class=LClass id=link129 onMouseOver="ShowTip(event, 'tt98', 'link129')" onMouseOut="HideTip('tt98')">uvm_default_report_server</a> instead of the <a href="../base/uvm_report_server-svh.html#uvm_report_server" class=LClass id=link130 onMouseOver="ShowTip(event, 'tt9', 'link130')" onMouseOut="HideTip('tt9')">uvm_report_server</a>.</p><p>The <a href="#1.1_to_1.2_Migration_Script" class=LGeneric id=link131 onMouseOver="ShowTip(event, 'tt56', 'link131')" onMouseOut="HideTip('tt56')">1.1 to 1.2 Migration Script</a> can be used to replace any occurances of the old type in user code.</p></div></div></div>
<!--CONTENT index=76 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4617" href="../../src/overviews/relnotes.txt">Mantis 4617</a></h3><div class=CBody><p>uvm_report_cb::add_by_name example needs review</p><p>A bad example in the documentation of <i>uvm_report_cb::add_by_name</i> has been fixed.</p></div></div></div>
<!--CONTENT index=77 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4618(*)" href="../../src/overviews/relnotes.txt">Mantis 4618 (*)</a></h3><div class=CBody><p>resource lookup broken/undefined when fieldname has wildcards</p><p>Meta characters (globs or regular expressions) within the <i>fieldname</i> of a resource are no longer interpretted by the resource pool.</p></div></div></div>
<!--CONTENT index=78 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>The previous behavior for meta characters within the field name was not fully defined.</p></div></div></div>
<!--CONTENT index=79 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4621" href="../../src/overviews/relnotes.txt">Mantis 4621</a></h3><div class=CBody><p>printing of int fields will mask Z values with X</p><p>The <a href="../base/uvm_printer-svh.html#uvm_printer.print_field" class=LMethod id=link132 onMouseOver="ShowTip(event, 'tt99', 'link132')" onMouseOut="HideTip('tt99')">uvm_printer::print_field</a> and <a href="../base/uvm_printer-svh.html#uvm_printer.print_field_int" class=LMethod id=link133 onMouseOver="ShowTip(event, 'tt10', 'link133')" onMouseOut="HideTip('tt10')">uvm_printer::print_field_int</a> methods were incorrectly implemented, causing &lsquo;Z&rsquo; values to appear as &lsquo;X&rsquo; when printed.&nbsp; This behavior has been corrected.</p></div></div></div>
<!--CONTENT index=80 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4622" href="../../src/overviews/relnotes.txt">Mantis 4622</a></h3><div class=CBody><p>uvm_phase::unsync() does not work</p><p>The implementation of <a href="../base/uvm_phase-svh.html#uvm_phase.unsync" class=LMethod id=link134 onMouseOver="ShowTip(event, 'tt100', 'link134')" onMouseOut="HideTip('tt100')">uvm_phase::unsync</a> was updated to properly remove the sync relationship.</p></div></div></div>
<!--CONTENT index=81 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4643" href="../../src/overviews/relnotes.txt">Mantis 4643</a></h3><div class=CBody><p>uvm_dpi_get_next_arg_c doesnt fully adhere to -1800-lrm</p><p>The internal method <i>uvm_dpi_get_next_arg_c</i> was updated to completely adhere to the 1800 lrm.</p></div></div></div>
<!--CONTENT index=82 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4649(+)(*)" href="../../src/overviews/relnotes.txt">Mantis 4649 (+)(*)</a></h3><div class=CBody><p>Improve memory performance of &lsquo;bitstream&rsquo; interfaces for report/record/etc.</p><p>The new <a href="../base/uvm_object_globals-svh.html#uvm_integral_t" class=LType id=link135 onMouseOver="ShowTip(event, 'tt101', 'link135')" onMouseOut="HideTip('tt101')">uvm_integral_t</a> was standardized, which is a less memory-expensive packed vector than the <a href="../base/uvm_object_globals-svh.html#uvm_bitstream_t" class=LType id=link136 onMouseOver="ShowTip(event, 'tt102', 'link136')" onMouseOut="HideTip('tt102')">uvm_bitstream_t</a>.&nbsp; Support for this new type was added to the <a href="../base/uvm_printer-svh.html#uvm_printer" class=LClass id=link137 onMouseOver="ShowTip(event, 'tt103', 'link137')" onMouseOut="HideTip('tt103')">uvm_printer</a>, <a href="../base/uvm_packer-svh.html#uvm_packer" class=LClass id=link138 onMouseOver="ShowTip(event, 'tt104', 'link138')" onMouseOut="HideTip('tt104')">uvm_packer</a>, <a href="../base/uvm_recorder-svh.html#uvm_recorder" class=LClass id=link139 onMouseOver="ShowTip(event, 'tt11', 'link139')" onMouseOut="HideTip('tt11')">uvm_recorder</a> and <a href="../base/uvm_comparer-svh.html#uvm_comparer" class=LClass id=link140 onMouseOver="ShowTip(event, 'tt87', 'link140')" onMouseOut="HideTip('tt87')">uvm_comparer</a>, as well as the auto-configuration provided by the <a href="../macros/uvm_object_defines-svh.html#`uvm_field_*macros" class=LGroup id=link141 onMouseOver="ShowTip(event, 'tt105', 'link141')" onMouseOut="HideTip('tt105')">`uvm_field_*macros</a>.</p></div></div></div>
<!--CONTENT index=83 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>In order to provide a consistent API, the <i>uvm_printer::print_int</i> method was deprecated and replaced by <a href="../base/uvm_printer-svh.html#uvm_printer.print_field_int" class=LMethod id=link142 onMouseOver="ShowTip(event, 'tt10', 'link142')" onMouseOut="HideTip('tt10')">uvm_printer::print_field_int</a>.</p></div></div></div>
<!--CONTENT index=84 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4666" href="../../src/overviews/relnotes.txt">Mantis 4666</a></h3><div class=CBody><p>uvm_config_db::set expects to be invoked in process context</p><p>The implementation of <a href="../base/uvm_config_db-svh.html#uvm_config_db.set" class=LMethod id=link143 onMouseOver="ShowTip(event, 'tt106', 'link143')" onMouseOut="HideTip('tt106')">uvm_config_db::set</a> was improperly assuming that the method would be invoked within a process context (i.e. process.self() != null).&nbsp; This behavior has been corrected.</p></div></div></div>
<!--CONTENT index=85 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4677" href="../../src/overviews/relnotes.txt">Mantis 4677</a></h3><div class=CBody><p>remove uvm_global_copy_map</p><p>The internal and undocumented <i>uvm_global_copy_map</i> was removed and replaced by a simple associative array.</p></div></div></div>
<!--CONTENT index=86 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4686(+)" href="../../src/overviews/relnotes.txt">Mantis 4686 (+)</a></h3><div class=CBody><p>predict updated not just the mirrored field</p><p>The documentation of the <a href="../reg/uvm_reg-svh.html#uvm_reg.predict" class=LMethod id=link144 onMouseOver="ShowTip(event, 'tt107', 'link144')" onMouseOut="HideTip('tt107')">uvm_reg::predict</a> and <a href="../reg/uvm_reg_field-svh.html#uvm_reg_field.predict" class=LMethod id=link145 onMouseOver="ShowTip(event, 'tt108', 'link145')" onMouseOut="HideTip('tt108')">uvm_reg_field::predict</a> methods was clarified to indicate that the methods update <i>both</i> the mirrored and desired values.</p></div></div></div>
<!--CONTENT index=87 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4690" href="../../src/overviews/relnotes.txt">Mantis 4690</a></h3><div class=CBody><p>Typo in uvm_sequence_base.vh (mehod should be method)</p><p>A typo in the documentation of <a href="../seq/uvm_sequence_base-svh.html#uvm_sequence_base" class=LClass id=link146 onMouseOver="ShowTip(event, 'tt31', 'link146')" onMouseOut="HideTip('tt31')">uvm_sequence_base</a> was corrected.</p></div></div></div>
<!--CONTENT index=88 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4711" href="../../src/overviews/relnotes.txt">Mantis 4711</a></h3><div class=CBody><p>uvm macros violate 1800lrm iterator requirements</p><p>The <a href="../macros/uvm_object_defines-svh.html#`uvm_field_*macros" class=LGroup id=link147 onMouseOver="ShowTip(event, 'tt105', 'link147')" onMouseOut="HideTip('tt105')">`uvm_field_*macros</a> were updated to obey 1800 LRM requirements for the iterators of arrays.</p></div></div></div>
<!--CONTENT index=89 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4731" href="../../src/overviews/relnotes.txt">Mantis 4731</a></h3><div class=CBody><p>Static initialization races</p><p>The fix to <a href="#Mantis_4606" class=LGroup id=link148 onMouseOver="ShowTip(event, 'tt109', 'link148')" onMouseOut="HideTip('tt109')">Mantis 4606</a> accidently included a static race condition which was fixed.</p></div></div></div>
<!--CONTENT index=90 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4732(+)" href="../../src/overviews/relnotes.txt">Mantis 4732 (+)</a></h3><div class=CBody><p>uvm_phase_state initializes to incorrect value</p><p>The new phase state <a href="../base/uvm_object_globals-svh.html#UVM_PHASE_UNINITIALIZED" class=LConstant id=link149 onMouseOver="ShowTip(event, 'tt110', 'link149')" onMouseOut="HideTip('tt110')">UVM_PHASE_UNINITIALIZED</a> was added to the <a href="../base/uvm_object_globals-svh.html#uvm_phase_state" class=LType id=link150 onMouseOver="ShowTip(event, 'tt111', 'link150')" onMouseOut="HideTip('tt111')">uvm_phase_state</a>.&nbsp; This new state is the default state for all phases after construction.</p></div></div></div>
<!--CONTENT index=91 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4734" href="../../src/overviews/relnotes.txt">Mantis 4734</a></h3><div class=CBody><p>Bug in uvm_reg_map::get_size();</p><p>The implementation of <i>uvm_reg_map::get_size</i> had a typo which resulted in the value of the last offset added being used instead of the value of the largest offset.&nbsp; This behavior has been corrected.</p></div></div></div>
<!--CONTENT index=92 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4738" href="../../src/overviews/relnotes.txt">Mantis 4738</a></h3><div class=CBody><p>DPI Code does not use UVM Messaging</p><p>Similar to <a href="#Mantis_3783" class=LGroup id=link151 onMouseOver="ShowTip(event, 'tt112', 'link151')" onMouseOut="HideTip('tt112')">Mantis 3783</a>, the messages generated from the C-side implementation of the UVM dpi code have been refactored to route through standard UVM messaging.</p></div></div></div>
<!--CONTENT index=93 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4743(+)" href="../../src/overviews/relnotes.txt">Mantis 4743 (+)</a></h3><div class=CBody><p>Promote get_next_item, try_next_item, item_done, get, peek, and put to be a part of the standard</p><p>The documentation of the <a href="../seq/uvm_sequencer-svh.html#uvm_sequencer#(REQ,RSP).Sequencer_Interface" class=LGroup id=link152 onMouseOver="ShowTip(event, 'tt113', 'link152')" onMouseOut="HideTip('tt113')">uvm_sequencer#(REQ,RSP)::Sequencer Interface</a> was expanded to include the implementations of the various methods.</p></div></div></div>
<!--CONTENT index=94 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4744(*)(+)" href="../../src/overviews/relnotes.txt">Mantis 4744 (*)(+)</a></h3><div class=CBody><p>Recording System Revamp</p><p>Similar to <a href="#Mantis_4570(*)(+)" class=LGroup id=link153 onMouseOver="ShowTip(event, 'tt114', 'link153')" onMouseOut="HideTip('tt114')">Mantis 4570 (*)(+)</a>, the recording system was overhauled to use an object-based approach to connecting to transaction databases.&nbsp; This resulted in two new classes <a href="../base/uvm_tr_stream-svh.html#uvm_tr_stream" class=LClass id=link154 onMouseOver="ShowTip(event, 'tt115', 'link154')" onMouseOut="HideTip('tt115')">uvm_tr_stream</a> and <a href="../base/uvm_tr_database-svh.html#uvm_tr_database" class=LClass id=link155 onMouseOver="ShowTip(event, 'tt116', 'link155')" onMouseOut="HideTip('tt116')">uvm_tr_database</a>, which provided an object-based implementation of the undocumented implementation API for the <i>uvm_recorder</i>.</p><p>Additionally, a new data policy <a href="../base/uvm_links-svh.html#uvm_link_base" class=LClass id=link156 onMouseOver="ShowTip(event, 'tt117', 'link156')" onMouseOut="HideTip('tt117')">uvm_link_base</a> was added for expressing arbitrary relationships in a compile-safe manner.</p></div></div></div>
<!--CONTENT index=95 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>The changes made to the <a href="../base/uvm_recorder-svh.html#uvm_recorder" class=LClass id=link157 onMouseOver="ShowTip(event, 'tt11', 'link157')" onMouseOut="HideTip('tt11')">uvm_recorder</a> API were primarily isolated to undocumented and non-standardized methods within <a href="../base/uvm_recorder-svh.html#uvm_recorder" class=LClass id=link158 onMouseOver="ShowTip(event, 'tt11', 'link158')" onMouseOut="HideTip('tt11')">uvm_recorder</a> class.&nbsp; New examples are provided via <a href="../base/uvm_recorder-svh.html#uvm_text_recorder" class=LClass id=link159 onMouseOver="ShowTip(event, 'tt118', 'link159')" onMouseOut="HideTip('tt118')">uvm_text_recorder</a>, <a href="../base/uvm_tr_stream-svh.html#uvm_text_tr_stream" class=LClass id=link160 onMouseOver="ShowTip(event, 'tt119', 'link160')" onMouseOut="HideTip('tt119')">uvm_text_tr_stream</a> and <a href="../base/uvm_tr_database-svh.html#uvm_text_tr_database" class=LClass id=link161 onMouseOver="ShowTip(event, 'tt120', 'link161')" onMouseOut="HideTip('tt120')">uvm_text_tr_database</a> to illustrate to developers how the new system works.</p></div></div></div>
<!--CONTENT index=96 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4766(*)" href="../../src/overviews/relnotes.txt">Mantis 4766 (*)</a></h3><div class=CBody><p>Fix broken `uvm_record_field + `uvm_record_attribute interaction</p><p>The fix for this mantis involved creating a new method <a href="../base/uvm_recorder-svh.html#uvm_recorder.use_record_attribute" class=LMethod id=link162 onMouseOver="ShowTip(event, 'tt13', 'link162')" onMouseOut="HideTip('tt13')">uvm_recorder::use_record_attribute</a>.&nbsp; The new method allows for a conditional usage of the <a href="../macros/uvm_object_defines-svh.html#`uvm_record_attribute" class=LMacro id=link163 onMouseOver="ShowTip(event, 'tt12', 'link163')" onMouseOut="HideTip('tt12')">`uvm_record_attribute</a> macro, allowing users to create their own recorders without interfering with vendor-specific recorders</p></div></div></div>
<!--CONTENT index=97 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>Vendors which had provided an implementation of the <a href="../macros/uvm_object_defines-svh.html#`uvm_record_attribute" class=LMacro id=link164 onMouseOver="ShowTip(event, 'tt12', 'link164')" onMouseOut="HideTip('tt12')">`uvm_record_attribute</a> macro need to add an implementation of <a href="../base/uvm_recorder-svh.html#uvm_recorder.use_record_attribute" class=LMethod id=link165 onMouseOver="ShowTip(event, 'tt13', 'link165')" onMouseOut="HideTip('tt13')">uvm_recorder::use_record_attribute</a> in their recorders to allow compatibility with the new macro implementation.</p></div></div></div>
<!--CONTENT index=98 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4767(+)" href="../../src/overviews/relnotes.txt">Mantis 4767 (+)</a></h3><div class=CBody><p>`uvm_pack_int and `uvm_unpack_int bypass the uvm_packer policy methods</p><p>The previous implementation of the <i>`uvm_pack_*</i> macros bypassed the <a href="../base/uvm_packer-svh.html#uvm_packer" class=LClass id=link166 onMouseOver="ShowTip(event, 'tt104', 'link166')" onMouseOut="HideTip('tt104')">uvm_packer</a> policy methods, and directly accessed an undocumented member variable of the <a href="../base/uvm_packer-svh.html#uvm_packer" class=LClass id=link167 onMouseOver="ShowTip(event, 'tt104', 'link167')" onMouseOut="HideTip('tt104')">uvm_packer</a> class.&nbsp; This implementation was refactored to use the policy methods without accessing any undocumented functionality.</p><p>Additionally, a new API was added to the <a href="../base/uvm_packer-svh.html#uvm_packer" class=LClass id=link168 onMouseOver="ShowTip(event, 'tt104', 'link168')" onMouseOut="HideTip('tt104')">uvm_packer</a> to provide the ability to pack/unpack an arbrary number of bits from an array of bits, bytes or ints.&nbsp; This new API provides easier compatibility with the SystemVerilog stream operator.</p></div></div></div>
<!--CONTENT index=99 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4772" href="../../src/overviews/relnotes.txt">Mantis 4772</a></h3><div class=CBody><p>separate uvm_hdl* source into files-by-vendor</p><p>Related to <a href="#Mantis_4588" class=LGroup id=link169 onMouseOver="ShowTip(event, 'tt121', 'link169')" onMouseOut="HideTip('tt121')">Mantis 4588</a>, the fix for this mantis separated the hdl vendor dpi implementations into vendor-specific files.</p></div></div></div>
<!--CONTENT index=100 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4783(*)" href="../../src/overviews/relnotes.txt">Mantis 4783 (*)</a></h3><div class=CBody><p>`uvm_record_* macros bypass uvm_recorder policy class</p><p>The previously undocumented <i>`uvm_record_*</i> macros bypassed the <a href="../base/uvm_recorder-svh.html#uvm_recorder" class=LClass id=link170 onMouseOver="ShowTip(event, 'tt11', 'link170')" onMouseOut="HideTip('tt11')">uvm_recorder</a> policy methods, and called undocumented and non-standard methods.&nbsp; Their implementation has been refactored to use the <a href="../base/uvm_recorder-svh.html#uvm_recorder" class=LClass id=link171 onMouseOver="ShowTip(event, 'tt11', 'link171')" onMouseOut="HideTip('tt11')">uvm_recorder</a> policy methods by default.</p></div></div></div>
<!--CONTENT index=101 -->
<div class="CGeneric"><div class=CTopic><h3 class=CTitle><a name="Backwards_Compatibility" href="../../src/overviews/relnotes.txt">Backwards Compatibility</a></h3><div class=CBody><p>The changes to the macros should be transparent to most end users, however developers which were supporting the old undocumented macros may need to update their implementations.</p></div></div></div>
<!--CONTENT index=102 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4786(+)" href="../../src/overviews/relnotes.txt">Mantis 4786 (+)</a></h3><div class=CBody><p>print_real is undocumented</p><p>A typo in the documentation of <a href="../base/uvm_printer-svh.html#uvm_printer.print_real" class=LMethod id=link172 onMouseOver="ShowTip(event, 'tt122', 'link172')" onMouseOut="HideTip('tt122')">uvm_printer::print_real</a> resulted in the method being absent from the standard.&nbsp; This has been corrected.</p></div></div></div>
<!--CONTENT index=103 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4784(+)" href="../../src/overviews/relnotes.txt">Mantis 4784 (+)</a></h3><div class=CBody><p>`uvm_record_int/string/time/real are undocumented</p><p>After fixing <a href="#Mantis_4783(*)" class=LGroup id=link173 onMouseOver="ShowTip(event, 'tt123', 'link173')" onMouseOut="HideTip('tt123')">Mantis 4783 (*)</a>, the previously undocumented <a href="../macros/uvm_object_defines-svh.html#`uvm_record_int" class=LMacro >`uvm_record_int</a>, <a href="../macros/uvm_object_defines-svh.html#`uvm_record_field" class=LMacro id=link174 onMouseOver="ShowTip(event, 'tt124', 'link174')" onMouseOut="HideTip('tt124')">`uvm_record_field</a>, <a href="../macros/uvm_object_defines-svh.html#`uvm_record_real" class=LMacro >`uvm_record_real</a>, <a href="../macros/uvm_object_defines-svh.html#`uvm_record_string" class=LMacro >`uvm_record_string</a> and <a href="../macros/uvm_object_defines-svh.html#`uvm_record_time" class=LMacro >`uvm_record_time</a> have been officially added to the standard.</p></div></div></div>
<!--CONTENT index=104 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4861" href="../../src/overviews/relnotes.txt">Mantis 4861</a></h3><div class=CBody><p>Adding a uvm_reg_map to an existing regmap instance required both maps to have the same parent.&nbsp; The behavior was fixed and the bad error message corrected.</p></div></div></div>
<!--CONTENT index=105 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4871" href="../../src/overviews/relnotes.txt">Mantis 4871</a></h3><div class=CBody><p>Fixed a problem wherein multiple <i>+uvm_set_*</i> commands were ignored after a format error.</p></div></div></div>
<!--CONTENT index=106 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4882" href="../../src/overviews/relnotes.txt">Mantis 4882</a></h3><div class=CBody><p>The instance name of the phase objection was changed to reflect the name of the phase.</p></div></div></div>
<!--CONTENT index=107 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4884" href="../../src/overviews/relnotes.txt">Mantis 4884</a></h3><div class=CBody><p>A performance fix was implemented which avoided the copy of large QDA within the spell checker.</p></div></div></div>
<!--CONTENT index=108 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4893" href="../../src/overviews/relnotes.txt">Mantis 4893</a></h3><div class=CBody><p>Fixed a bug within uvm_leaf_scope which could lead to stall of simulation.</p></div></div></div>
<!--CONTENT index=109 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4920" href="../../src/overviews/relnotes.txt">Mantis 4920</a></h3><div class=CBody><p>Fixed random stability bug in <i>lookup_name</i> which caused instability when the config database was queried.</p></div></div></div>
<!--CONTENT index=110 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4923" href="../../src/overviews/relnotes.txt">Mantis 4923</a></h3><div class=CBody><p>A check was added for an out-of-bound queue access in uvm_misc.svh.&nbsp; This check caused no functional change, but prevents certain tools from throwing a warning when processing the code.</p></div></div></div>
<!--CONTENT index=111 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4925" href="../../src/overviews/relnotes.txt">Mantis 4925</a></h3><div class=CBody><p>The macros <a href="../macros/uvm_global_defines-svh.html#`UVM_MAX_STREAMBITS" class=LMacro id=link175 onMouseOver="ShowTip(event, 'tt14', 'link175')" onMouseOut="HideTip('tt14')">`UVM_MAX_STREAMBITS</a>, <a href="../macros/uvm_global_defines-svh.html#`UVM_PACKER_MAX_BYTES" class=LMacro id=link176 onMouseOver="ShowTip(event, 'tt15', 'link176')" onMouseOut="HideTip('tt15')">`UVM_PACKER_MAX_BYTES</a> and <a href="../macros/uvm_global_defines-svh.html#`UVM_DEFAULT_TIMEOUT" class=LMacro id=link177 onMouseOver="ShowTip(event, 'tt16', 'link177')" onMouseOut="HideTip('tt16')">`UVM_DEFAULT_TIMEOUT</a> were relocated to src/macros/uvm_global_defines.svh, which is included via uvm_macros.svh.&nbsp; These changes will make the UVM 1.2 Reference HTML out of sync with the UVM 1.2 Reference PDF, however this change is strictly contained to the formatting/location of documentation, not a functional difference.</p></div></div></div>
<!--CONTENT index=112 -->
<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="Mantis_4931" href="../../src/overviews/relnotes.txt">Mantis 4931</a></h3><div class=CBody><p>Various typos and bad links within the reference guide were corrected.</p></div></div></div>
</div><!--Content-->
<!--START_ND_TOOLTIPS-->
<div class=CToolTip id="tt1"><div class=CGeneric>Convenience type for uvm_config_db#(uvm_object)</div></div><div class=CToolTip id="tt2"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_coreservice_t
</td></tr></table></blockquote>The singleton instance of uvm_coreservice_t provides a common point for all central uvm services such as uvm_factory, uvm_report_server, ... </div></div><div class=CToolTip id="tt3"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_reg_file extends uvm_object
</td></tr></table></blockquote>Register file abstraction base class</div></div><div class=CToolTip id="tt4"><div class=CType>Defines current sequence state</div></div><div class=CToolTip id="tt5"><div class=CType>Specifies a sequencer&rsquo;s arbitration mode</div></div><div class=CToolTip id="tt6"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_object extends uvm_void
</td></tr></table></blockquote>The uvm_object class is the base class for all UVM data and hierarchical classes. </div></div><div class=CToolTip id="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 colspan=3>pure virtual function void execute_report_message(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_report_message&nbsp;</td>
<td class=PParameter nowrap width=100%>report_message,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap width=100%>composed_message</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Processes the provided message per the actions contained within.</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 colspan=5>pure virtual function string compose_report_message(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_report_message&nbsp;</td>
<td class=PParameter nowrap>report_message,</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>report_object_name</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> &quot;&quot;</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>)</td></tr>
</table></td></tr>
</table></blockquote>
Constructs the actual string sent to the file or command line from the severity, component name, report id, and the message itself.</div></div><div class=CToolTip id="tt9"><div class=CClass>uvm_report_server is a global server that processes all of the reports generated by a uvm_report_handler.</div></div><div class=CToolTip id="tt10"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters colspan=5>virtual function void print_field_int (</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>uvm_integral_t&nbsp;</td>
<td class=PParameter nowrap>value,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>size,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_radix_enum&nbsp;</td>
<td class=PParameter nowrap>radix</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>UVM_NORADIX,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>byte&nbsp;</td>
<td class=PParameter nowrap>scope_separator</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>type_name</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;&quot;</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>)</td></tr>
</table></td></tr>
</table></blockquote>
Prints an integral field (up to 64 bits).</div></div><div class=CToolTip id="tt11"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_recorder extends uvm_object
</td></tr></table></blockquote>Abstract class which defines the <i>recorder</i> API.</div></div><div class=CToolTip id="tt12"><div class=CMacro>Vendor-independent macro to hide tool-specific interface for recording attributes (fields) to a transaction database.</div></div><div class=CToolTip id="tt13"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function bit use_record_attribute()
</td></tr></table></blockquote>Indicates that this recorder does (or does not) support usage of the `uvm_record_attribute macro.</div></div><div class=CToolTip id="tt14"><div class=CMacro>Defines the maximum bit vector size for integral types. </div></div><div class=CToolTip id="tt15"><div class=CMacro>Defines the maximum bytes to allocate for packing an object using the uvm_packer. </div></div><div class=CToolTip id="tt16"><div class=CMacro>The default timeout for simulation, if not overridden by uvm_root::set_timeout or uvm_cmdline_processor::+UVM_TIMEOUT</div></div><div class=CToolTip id="tt17"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_event_base extends uvm_object
</td></tr></table></blockquote>The uvm_event_base class is an abstract wrapper class around the SystemVerilog event construct. </div></div><div class=CToolTip id="tt18"><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 uvm_event#(</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%>uvm_object</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>) extends uvm_event_base</td></tr>
</table></td></tr>
</table></blockquote>
The uvm_event class is an extension of the abstract uvm_event_base class.</div></div><div class=CToolTip id="tt19"><div class=CGeneric>Convenience type for uvm_config_db#(uvm_bitstream_t)</div></div><div class=CToolTip id="tt20"><div class=CGeneric>Convenience type for uvm_config_db#(string)</div></div><div class=CToolTip id="tt21"><div class=CSection>The common phases are the set of function and task phases that all uvm_components execute together. </div></div><div class=CToolTip id="tt22"><div class=CSection>The run-time schedule is the pre-defined phase schedule which runs concurrently to the uvm_run_phase global run phase. </div></div><div class=CToolTip id="tt23"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function void disable_auto_item_recording()
</td></tr></table></blockquote>By default, item recording is performed automatically when get_next_item() and item_done() are called. </div></div><div class=CToolTip id="tt24"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function bit is_auto_item_recording_enabled()
</td></tr></table></blockquote>Return TRUE if automatic item recording is enabled for this port instance.</div></div><div class=CToolTip id="tt25"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters colspan=5>virtual class uvm_sqr_if_base #(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>type&nbsp;</td>
<td class=PParameter nowrap>T1</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>uvm_object,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>&nbsp;</td>
<td class=PParameter nowrap>T2</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>T1</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>)</td></tr>
</table></td></tr>
</table></blockquote>
This class defines an interface for sequence drivers to communicate with sequencers. </div></div><div class=CToolTip id="tt26"><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 uvm_enum_wrapper#(</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%>uvm_active_passive_enum</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>)</td></tr>
</table></td></tr>
</table></blockquote>
The <i>uvm_enum_wrapper#(T)</i> class is a utility mechanism provided as a convenience to the end user. </div></div><div class=CToolTip id="tt27"><div class=CMacro>Implements the data operations for an enumerated property.</div></div><div class=CToolTip id="tt28"><div class=CVariable><i>+uvm_set_config_int=&lt;comp&gt;,&lt;field&gt;,&lt;value&gt;</i> and <i>+uvm_set_config_string=&lt;comp&gt;,&lt;field&gt;,&lt;value&gt;</i> work like their procedural counterparts: set_config_int() and set_config_string(). </div></div><div class=CToolTip id="tt29"><div class=CVariable>The <i>+uvm_set_default_sequence=&lt;seqr&gt;,&lt;phase&gt;,&lt;type&gt;</i> plusarg allows the user to define a default sequence from the command line, using the <i>typename</i> of that sequence. </div></div><div class=CToolTip id="tt30"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters colspan=3>virtual function void start_phase_sequence(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_phase&nbsp;</td>
<td class=PParameter nowrap width=100%>phase</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Start the default sequence for this phase, if any. </div></div><div class=CToolTip id="tt31"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_sequence_base extends uvm_sequence_item
</td></tr></table></blockquote>The uvm_sequence_base class provides the interfaces needed to create streams of sequence items and/or other sequences.</div></div><div class=CToolTip id="tt32"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_object_wrapper
</td></tr></table></blockquote>The uvm_object_wrapper provides an abstract interface for creating object and component proxies. </div></div><div class=CToolTip id="tt33"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_factory
</td></tr></table></blockquote>As the name implies, uvm_factory is used to manufacture (create) UVM objects and components. </div></div><div class=CToolTip id="tt34"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_default_factory extends uvm_factory
</td></tr></table></blockquote>Default implementation of the UVM factory.</div></div><div class=CToolTip id="tt35"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>static function uvm_factory get()
</td></tr></table></blockquote>Static accessor for uvm_factory</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 colspan=3>function void set_propagate_mode (</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>bit&nbsp;</td>
<td class=PParameter nowrap width=100%>prop_mode</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Sets the propagation mode for this objection.</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 colspan=5>virtual function void drop_objection (</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>description</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;&quot;,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>count</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>1</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>)</td></tr>
</table></td></tr>
</table></blockquote>
Drops the number of objections for the source <i>object</i> by <i>count</i>, which defaults to 1. </div></div><div class=CToolTip id="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 colspan=3>function void print_msg (</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap width=100%>msg</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Causes the error count to be incremented and the message, <i>msg</i>, to be appended to the miscompares string (a newline is used to separate messages).</div></div><div class=CToolTip id="tt39"><div class=CVariable>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>int unsigned verbosity = UVM_LOW
</td></tr></table></blockquote>Sets the verbosity for printed messages.</div></div><div class=CToolTip id="tt40"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_reg_transaction_order_policy extends uvm_object
</td></tr></table></blockquote></div></div><div class=CToolTip id="tt41"><div class=CConstant>Selects decimal (%d) format</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 colspan=3>virtual function void do_print (</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_printer&nbsp;</td>
<td class=PParameter nowrap width=100%>printer</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
The <i>do_print</i> method is the user-definable hook called by print and sprint that allows users to customize what gets printed or sprinted beyond the field information provided by the `uvm_field_* macros, Utility and Field Macros for Components and Objects.</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 colspan=3>virtual function void do_record (</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_recorder&nbsp;</td>
<td class=PParameter nowrap width=100%>recorder</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
The <i>do_record</i> method is the user-definable hook called by the record method. </div></div><div class=CToolTip id="tt44"><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 uvm_sequence_library #(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>type&nbsp;</td>
<td class=PParameter nowrap>REQ</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>uvm_sequence_item,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>&nbsp;</td>
<td class=PParameter nowrap>RSP</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>REQ</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>) extends uvm_sequence #(REQ,RSP)</td></tr>
</table></td></tr>
</table></blockquote>
The <i>uvm_sequence_library</i> is a sequence that contains a list of registered sequence types. </div></div><div class=CToolTip id="tt45"><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=3>function void set_inst_override_by_type(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap width=100%>relative_inst_path,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_object_wrapper&nbsp;</td>
<td class=PParameter nowrap width=100%>original_type,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_object_wrapper&nbsp;</td>
<td class=PParameter nowrap width=100%>override_type</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
A convenience function for uvm_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="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 colspan=3>pure virtual function void set_inst_override_by_type (</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_object_wrapper&nbsp;</td>
<td class=PParameter nowrap width=100%>original_type,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_object_wrapper&nbsp;</td>
<td class=PParameter nowrap width=100%>override_type,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap width=100%>full_inst_path</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
</div></div><div class=CToolTip id="tt47"><div class=CConstant>Selects unformatted 2 value data (%u) format</div></div><div class=CToolTip id="tt48"><div class=CConstant>Selects unformatted 4 value data (%z) format</div></div><div class=CToolTip id="tt49"><div class=CConstant>Selects real (%g) in exponential or decimal format, whichever format results in the shorter printed output</div></div><div class=CToolTip id="tt50"><div class=CConstant>Selects real (%f) in decimal format</div></div><div class=CToolTip id="tt51"><div class=CConstant>Selects real (%e) in exponential format</div></div><div class=CToolTip id="tt52"><div class=CType>Specifies the radix to print or record in.</div></div><div class=CToolTip id="tt53"><div class=CGroup>Feature request to create a non-hierarchical objection</div></div><div class=CToolTip id="tt54"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype>
<tr><td><table border=0 cellspacing=0 cellpadding=0><tr>
<td class=PBeforeParameters colspan=5>virtual class uvm_port_base #(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>type&nbsp;</td>
<td class=PParameter nowrap>IF</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>uvm_void</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>) extends IF</td></tr>
</table></td></tr>
</table></blockquote>
Transaction-level communication between components is handled via its ports, exports, and imps, all of which derive from this class.</div></div><div class=CToolTip id="tt55"><div class=CType>Defines all possible values for report severity.</div></div><div class=CToolTip id="tt56"><div class=CGeneric>Many of the backwards compatibility concerns caused when transitioning from UVM version 1.1 to 1.2 can be addressed with a reasonably simple search-and-replace in user code. </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 colspan=3>function void set_report_verbosity_level (</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap width=100%>verbosity_level</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
This method sets the maximum verbosity level for reports for this component. </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 colspan=3>function void set_report_id_verbosity (</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap width=100%>id,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap width=100%>verbosity</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</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 colspan=3>function void set_report_severity_id_verbosity (</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_severity&nbsp;</td>
<td class=PParameter nowrap width=100%>severity,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap width=100%>id,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap width=100%>verbosity</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
These methods associate the specified verbosity threshold with reports of the given <i>severity</i>, <i>id</i>, or <i>severity-id</i> pair. </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 colspan=3>virtual function void stop_phase_sequence(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_phase&nbsp;</td>
<td class=PParameter nowrap width=100%>phase</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Stop the default sequence for this phase, if any exists, and it is still executing.</div></div><div class=CToolTip id="tt61"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function void kill()
</td></tr></table></blockquote>This function will kill the sequence, and cause all current locks and requests in the sequence&rsquo;s default sequencer to be removed. </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 colspan=3>function void set_starting_phase(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_phase&nbsp;</td>
<td class=PParameter nowrap width=100%>phase</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Sets the &lsquo;starting phase&rsquo;.</div></div><div class=CToolTip id="tt63"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function uvm_phase get_starting_phase()
</td></tr></table></blockquote>Returns the &lsquo;starting phase&rsquo;.</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 colspan=3>function void set_automatic_phase_objection(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>bit&nbsp;</td>
<td class=PParameter nowrap width=100%>value</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Sets the &lsquo;automatically object to starting phase&rsquo; bit.</div></div><div class=CToolTip id="tt65"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_task_phase extends uvm_phase
</td></tr></table></blockquote>Base class for all task phases. </div></div><div class=CToolTip id="tt66"><div class=CConstant>The phase object is used to traverse the component hierarchy and call the component phase method as well as the <i>phase_started</i> and <i>phase_ended</i> callbacks. </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 colspan=5>virtual function int get_objection_count(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_object&nbsp;</td>
<td class=PParameter nowrap>obj</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>)</td></tr>
</table></td></tr>
</table></blockquote>
Returns the current number of objections to ending this phase raised by the given <i>object</i>.</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 colspan=4>virtual function void put_response(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PTypePrefix nowrap>input&nbsp;</td>
<td class=PType nowrap>T2&nbsp;</td>
<td class=PParameter nowrap width=100%>t</td>
</tr>
<tr>
<td class=PAfterParameters colspan=4>)</td></tr>
</table></td></tr>
</table></blockquote>
Sends a response back to the sequence that issued the request. </div></div><div class=CToolTip id="tt69"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_phase extends uvm_object
</td></tr></table></blockquote>This base class defines everything about a phase: behavior, state, and context.</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 colspan=4>function void get_adjacent_predecessor_nodes(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PTypePrefix nowrap>ref&nbsp;</td>
<td class=PType nowrap>uvm_phase&nbsp;</td>
<td class=PParameter nowrap width=100%>pred[]</td>
</tr>
<tr>
<td class=PAfterParameters colspan=4>)</td></tr>
</table></td></tr>
</table></blockquote>
Provides an array of nodes which are predecessors to <i>this</i> phase node. </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 colspan=4>function void get_adjacent_successor_nodes(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PTypePrefix nowrap>ref&nbsp;</td>
<td class=PType nowrap>uvm_phase&nbsp;</td>
<td class=PParameter nowrap width=100%>succ[]</td>
</tr>
<tr>
<td class=PAfterParameters colspan=4>)</td></tr>
</table></td></tr>
</table></blockquote>
Provides an array of nodes which are successors to <i>this</i> phase node. </div></div><div class=CToolTip id="tt72"><div class=CVariable>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>REQ req
</td></tr></table></blockquote>The sequence contains a field of the request type called req. </div></div><div class=CToolTip id="tt73"><div class=CVariable>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>RSP rsp
</td></tr></table></blockquote>The sequence contains a field of the response type called rsp. </div></div><div class=CToolTip id="tt74"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual task wait_for_relevant()
</td></tr></table></blockquote>This method is called by the sequencer when all available sequences are not relevant. </div></div><div class=CToolTip id="tt75"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual function bit is_relevant()
</td></tr></table></blockquote>The default is_relevant implementation returns 1, indicating that the sequence is always relevant.</div></div><div class=CToolTip id="tt76"><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=3>virtual function void set_max_zero_time_wait_relevant_count(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap width=100%>new_val</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Can be called at any time to change the maximum number of times wait_for_relevant() can be called by the sequencer in zero time before an error is declared. </div></div><div class=CToolTip id="tt77"><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=6>virtual function uvm_mem_region allocate(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PTypePrefix nowrap>longint&nbsp;</td>
<td class=PType nowrap>unsigned&nbsp;</td>
<td class=PParameter nowrap>n,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PTypePrefix nowrap></td>
<td class=PType nowrap>uvm_mem_mam&nbsp;</td>
<td class=PParameter nowrap>mam,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PTypePrefix nowrap></td>
<td class=PType nowrap>uvm_mem_mam_policy&nbsp;</td>
<td class=PParameter nowrap>alloc</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> null</td>
</tr>
<tr>
<td class=PAfterParameters colspan=6>)</td></tr>
</table></td></tr>
</table></blockquote>
Randomly implement, resize or relocate a virtual register array</div></div><div class=CToolTip id="tt78"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_sequencer_base extends uvm_component
</td></tr></table></blockquote>Controls the flow of sequences, which generate the stimulus (sequence item transactions) that is passed on to drivers for execution.</div></div><div class=CToolTip id="tt79"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_phase_cb extends uvm_callback
</td></tr></table></blockquote>This class defines a callback method that is invoked by the phaser during the execution of a specific node in the phase graph or all phase nodes. </div></div><div class=CToolTip id="tt80"><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=2>typedef uvm_callbacks#(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PParameter nowrap width=100%>uvm_phase,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PParameter nowrap width=100%>uvm_phase_cb</td>
</tr>
<tr>
<td class=PAfterParameters colspan=2>) uvm_phase_cb_pool</td></tr>
</table></td></tr>
</table></blockquote>
Convenience type for the uvm_callbacks#(uvm_phase, uvm_phase_cb) class.</div></div><div class=CToolTip id="tt81"><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=3>virtual function void set_name (</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap width=100%>name</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Sets the instance name of this object, overwriting any previously given name.</div></div><div class=CToolTip id="tt82"><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=3>function void set_jump_phase(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_phase&nbsp;</td>
<td class=PParameter nowrap width=100%>phase</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Specify a phase to transition to when phase is complete. </div></div><div class=CToolTip id="tt83"><div class=CMethod>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>function void end_prematurely()
</td></tr></table></blockquote>Set a flag to cause the phase to end prematurely. </div></div><div class=CToolTip id="tt84"><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=3>class uvm_reg_access_seq extends uvm_reg_sequence #(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_sequence&nbsp;</td>
<td class=PParameter nowrap width=100%>#(uvm_reg_item)</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Verify the accessibility of all registers in a block by executing the uvm_reg_single_access_seq sequence on every register within it.</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 colspan=5>virtual function string get_access(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_reg_map&nbsp;</td>
<td class=PParameter nowrap>map</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> null</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>)</td></tr>
</table></td></tr>
</table></blockquote>
Get the access policy of the field</div></div><div class=CToolTip id="tt86"><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=3>virtual function string set_access(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap width=100%>mode</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Modify the access policy of the field</div></div><div class=CToolTip id="tt87"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_comparer
</td></tr></table></blockquote>The uvm_comparer class provides a policy object for doing comparisons. </div></div><div class=CToolTip id="tt88"><div class=CVariable>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>int unsigned show_max = 1
</td></tr></table></blockquote>Sets the maximum number of messages to send to the printer for miscompares of an object.</div></div><div class=CToolTip id="tt89"><div class=CConstant>Operation completed with error</div></div><div class=CToolTip id="tt90"><div class=CConstant>Operation completed successfully</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 colspan=3>virtual function void pack_field (</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_bitstream_t&nbsp;</td>
<td class=PParameter nowrap width=100%>value,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap width=100%>size</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Packs an integral value (less than or equal to 4096 bits) into the packed array. </div></div><div class=CToolTip id="tt92"><div class=CMacro>Unpack a dynamic array without having to also specify the bit size of its elements. </div></div><div class=CToolTip id="tt93"><div class=CVariable>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>bit use_metadata
</td></tr></table></blockquote>This flag indicates whether to encode metadata when packing dynamic data, or to decode metadata when unpacking. </div></div><div class=CToolTip id="tt94"><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=4>virtual function uvm_sequence_item reg2bus(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PTypePrefix nowrap>const ref&nbsp;</td>
<td class=PType nowrap>uvm_reg_bus_op&nbsp;</td>
<td class=PParameter nowrap width=100%>rw</td>
</tr>
<tr>
<td class=PAfterParameters colspan=4>)</td></tr>
</table></td></tr>
</table></blockquote>
Converts a uvm_reg_bus_op struct to a uvm_tlm_gp item.</div></div><div class=CToolTip id="tt95"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>typedef uvm_tlm_generic_payload uvm_tlm_gp
</td></tr></table></blockquote>This typedef provides a short, more convenient name for the uvm_tlm_generic_payload type.</div></div><div class=CToolTip id="tt96"><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=3>class uvm_reg_hw_reset_seq extends uvm_reg_sequence #(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_sequence&nbsp;</td>
<td class=PParameter nowrap width=100%>#(uvm_reg_item)</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Test the hard reset values of registers</div></div><div class=CToolTip id="tt97"><div class=CGroup>request facility to identify unused factory overrides</div></div><div class=CToolTip id="tt98"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_default_report_server extends uvm_report_server
</td></tr></table></blockquote>Default implementation of the UVM report server.</div></div><div class=CToolTip id="tt99"><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>virtual function void print_field (</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>uvm_bitstream_t&nbsp;</td>
<td class=PParameter nowrap>value,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>int&nbsp;</td>
<td class=PParameter nowrap>size,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_radix_enum&nbsp;</td>
<td class=PParameter nowrap>radix</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>UVM_NORADIX,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>byte&nbsp;</td>
<td class=PParameter nowrap>scope_separator</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>type_name</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;&quot;</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>)</td></tr>
</table></td></tr>
</table></blockquote>
Prints an integral field (up to 4096 bits).</div></div><div class=CToolTip id="tt100"><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 void unsync(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_domain&nbsp;</td>
<td class=PParameter nowrap>target,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_phase&nbsp;</td>
<td class=PParameter nowrap>phase</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_phase&nbsp;</td>
<td class=PParameter nowrap>with_phase</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>null</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>)</td></tr>
</table></td></tr>
</table></blockquote>
Remove synchronization between two domains, fully or partially</div></div><div class=CToolTip id="tt101"><div class=CType>The integral type is used as a argument type for passing integral values of 64 bits or less in such methods as uvm_printer::print_field_int, uvm_recorder::record_field_int, uvm_packer::pack_field_int and uvm_packer::unpack_field_int.</div></div><div class=CToolTip id="tt102"><div class=CType>The bitstream type is used as a argument type for passing integral values in such methods as uvm_object::set_int_local, uvm_config_int, uvm_printer::print_field, uvm_recorder::record_field, uvm_packer::pack_field and uvm_packer::unpack_field.</div></div><div class=CToolTip id="tt103"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_printer
</td></tr></table></blockquote>The uvm_printer class provides an interface for printing uvm_objects in various formats. </div></div><div class=CToolTip id="tt104"><div class=CClass>The uvm_packer class provides a policy object for packing and unpacking uvm_objects. </div></div><div class=CToolTip id="tt105"><div class=CGroup>Macros that implement data operations for scalar properties.</div></div><div class=CToolTip id="tt106"><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=3>static function void set(</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_component&nbsp;</td>
<td class=PParameter nowrap width=100%>cntxt,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap width=100%>inst_name,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap width=100%>field_name,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>T&nbsp;</td>
<td class=PParameter nowrap width=100%>value</td>
</tr>
<tr>
<td class=PAfterParameters colspan=3>)</td></tr>
</table></td></tr>
</table></blockquote>
Create a new or update an existing configuration setting for <i>field_name</i> in <i>inst_name</i> from <i>cntxt</i>. </div></div><div class=CToolTip id="tt107"><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>virtual function bit predict (</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_reg_data_t&nbsp;</td>
<td class=PParameter nowrap>value,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_reg_byte_en_t&nbsp;</td>
<td class=PParameter nowrap>be</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> -1,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_predict_e&nbsp;</td>
<td class=PParameter nowrap>kind</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> UVM_PREDICT_DIRECT,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_path_e&nbsp;</td>
<td class=PParameter nowrap>path</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> UVM_FRONTDOOR,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_reg_map&nbsp;</td>
<td class=PParameter nowrap>map</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> null,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>fname</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>int&nbsp;</td>
<td class=PParameter nowrap>lineno</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> 0</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>)</td></tr>
</table></td></tr>
</table></blockquote>
Update the mirrored and desired value for this register.</div></div><div class=CToolTip id="tt108"><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 bit predict (</td> </tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_reg_data_t&nbsp;</td>
<td class=PParameter nowrap>value,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_reg_byte_en_t&nbsp;</td>
<td class=PParameter nowrap>be</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> -1,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_predict_e&nbsp;</td>
<td class=PParameter nowrap>kind</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> UVM_PREDICT_DIRECT,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_path_e&nbsp;</td>
<td class=PParameter nowrap>path</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> UVM_FRONTDOOR,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>uvm_reg_map&nbsp;</td>
<td class=PParameter nowrap>map</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> null,</td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>string&nbsp;</td>
<td class=PParameter nowrap>fname</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>int&nbsp;</td>
<td class=PParameter nowrap>lineno</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%> 0</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>)</td></tr>
</table></td></tr>
</table></blockquote>
Update the mirrored and desired value for this field.</div></div><div class=CToolTip id="tt109"><div class=CGroup>uvm_report_server is not really extendable/chainable</div></div><div class=CToolTip id="tt110"><div class=CConstant>The state is uninitialized. </div></div><div class=CToolTip id="tt111"><div class=CType>The set of possible states of a phase. </div></div><div class=CToolTip id="tt112"><div class=CGroup>Remove all $display calls from BCL, except report_server</div></div><div class=CToolTip id="tt113"><div class=CGroup>This is an interface for communicating with sequencers.</div></div><div class=CToolTip id="tt114"><div class=CGroup>Messaging System Revamp</div></div><div class=CToolTip id="tt115"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_tr_stream extends uvm_object
</td></tr></table></blockquote>The <i>uvm_tr_stream</i> base class is a representation of a stream of records within a uvm_tr_database.</div></div><div class=CToolTip id="tt116"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_tr_database extends uvm_object
</td></tr></table></blockquote>The <i>uvm_tr_database</i> class is intended to hide the underlying database implementation from the end user, as these details are often vendor or tool-specific.</div></div><div class=CToolTip id="tt117"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>virtual class uvm_link_base extends uvm_object
</td></tr></table></blockquote>The <i>uvm_link_base</i> class presents a simple API for defining a link between any two objects.</div></div><div class=CToolTip id="tt118"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_text_recorder extends uvm_recorder
</td></tr></table></blockquote>The <i>uvm_text_recorder</i> is the default recorder implementation for the uvm_text_tr_database.</div></div><div class=CToolTip id="tt119"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_text_tr_stream extends uvm_tr_stream
</td></tr></table></blockquote>The <i>uvm_text_tr_stream</i> is the default stream implementation for the uvm_text_tr_database.</div></div><div class=CToolTip id="tt120"><div class=CClass>
<blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td>class uvm_text_tr_database extends uvm_tr_database
</td></tr></table></blockquote>The <i>uvm_text_tr_database</i> is the default implementation for the uvm_tr_database. </div></div><div class=CToolTip id="tt121"><div class=CGroup>in-built sequence is not equipped to exclude a block from the test sequence</div></div><div class=CToolTip id="tt122"><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>virtual function void print_real (</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>real&nbsp;</td>
<td class=PParameter nowrap>value,</td>
<td class=PDefaultValuePrefix>&nbsp;&nbsp;</td>
<td class=PDefaultValue width=100%></td>
</tr><tr><td>&nbsp;&nbsp;&nbsp;</td> <td class=PType nowrap>byte&nbsp;</td>
<td class=PParameter nowrap>scope_separator</td>
<td class=PDefaultValuePrefix>&nbsp;=&nbsp;</td>
<td class=PDefaultValue width=100%>&quot;.&quot;</td>
</tr>
<tr>
<td class=PAfterParameters colspan=5>)</td></tr>
</table></td></tr>
</table></blockquote>
Prints a real field.</div></div><div class=CToolTip id="tt123"><div class=CGroup>`uvm_record_* macros bypass uvm_recorder policy class</div></div><div class=CToolTip id="tt124"><div class=CMacro>Macro for recording arbitrary name-value pairs into a transaction recording database. </div></div><!--END_ND_TOOLTIPS-->
<script language=JavaScript><!--
if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>