Accellera UVM 1.2 Release Notes
================================

date: Fri Jun 13 11:13:37 IDT 2014
repository state: UVM_1_2_RELEASE-1-gd6e87e2

General Overview
----------------

This is release 1.2 of the Universal Verification Methodology (UVM)
reference implementation from Accellera. This distribution includes a
SystemVerilog based class library, examples, UVM Stardard Reference
(PDF and HTML), and a User's Guide.

The class library is a reference implementation of the standard. It,
the examples, and User Guide provide guidance to users of the
standard. For additional information on the Accellera standard, see

     http://www.accellera.org/activities/vip

A good source for information, answers, and resources is
http://www.accellera.org/community/uvm. It contains forums on
methodology, tool specific issues, and commercial announcements. It
also has links to additional resources, Accellera sponsored events,
and other UVM events.


What's Changed
--------------

Release 1.2 contains enhancements and fixes to errata.

UVM 1.2 fixes the following enhancements and issues reported under the
Mantis bug-tracking system. Issues affecting the reference
documentation (API changes or semantic changes) are preceded with an
plus sign (+). Issues affecting backward compatibility are precedded with
an asterisk (*)

For detailed information on a specific issue, refer to the Mantis
database at http://www.eda.org/svdb/view.php?id=<id>, where <id> is
the Mantis id.


In increasing Mantis numerical order:

(+) Mantis 3407: uvm_event should be a param class

(*) Mantis 3472: Deprecated set/get_config_int/string/object

Mantis 3557: Names of phases (e.g. "main" for main_phase) now documented

(+) Mantis 3586: Added support for run-time disabling of auto item recording

(+) Mantis 3693: Added uvm_enum_wrapper#(T) type, and functionality to set
enumerations by string name.  This allows for enum fields to be
configured using uvm_config_db#(string)::set, as well as from the 
command line using +uvm_set_config_string.

(+) Mantis 3741: Added command-line functionality to setting
default_sequence (+uvm_set_default_sequence)

Mantis 3783: all messaging is now routed via uvm_report_server

(*) Mantis 3887: allows the factory to be replaced in order to trace create or override calls as well as to identify unused 
overrides. Code referencing uvm_pkg::factory needs to be upgraded to retrieve the factory via uvm_factory::get 

(+) Mantis 3893: allows for the hierarchical propagation of
uvm_objections to be disabled via set_propagate_mode.

Mantis 3901: Feature request to prevent objection from throwing 
decrement-below-zero error if the count is 0

Mantis 4032: Added the ability to undo a factory override.

Mantis 4091: Added missing top-level block name to uvm_reg_file::get_fullname()

Mantis 4160: uvm_comparer not using verbosity setting for print_msg

Mantis 4181: transaction order unclear and cant be changed when bus/reg size differ

Mantis 4253: Volatile register fields will cause a write() even if mirrored and desired values are the same.

(*) Mantis 4269: Added UVM_ prefix to enumerated values

Mantis 4306: Correction of documentation record_field_int ->
record_field

Mantis 4307: Correction of documentation DEC -> UVM_DEC

(+) Mantis 4366: uvm_sequence_library documentation missing from generate html

Mantis 4378: Proper documentation of set_inst_override_by_name and 
             set_type_override_by_name in uvm_component.

Mantis 4382: Add document for UVM_UNFORMAT2/4 and UVM_REAL/REAL_DEC/REAL_EXP

(+) Mantis 4389: mode bit for propagation of objections was added via Mantis 3893

Mantis 4391: removed redundant code in uvm_port_base

(*) Mantis 4416 : The confusing uvm_severity_type was deprecated, and
replaced internally using uvm_severity.  The 1.1 -> 1.2 conversion
script can be used to replace any occurances in user code.

Mantis 4418 : Clarified meaning of specified verbosity when using set_report_verbosity

Mantis 4425: BUSY flag now cleared when register model is reset.

(+) Mantis 4430: default sequences are now killed during PHASE_ENDED

(*) Mantis 4431: Enhance uvm_sequence::starting_phase
The "starting_phase" variable is now data access protected within
uvm_sequence_base, and the user must use the "get_starting_phase" and
"set_starting_phase" accesors.  This prevents possible fatal errors
and deadlocks caused when a starting_phase is changed after it has
already been evaluated.  The backward incompatibility can be avoided by
not defining UVM_NO_DEPRECATED or by defining UVM_DEPRECATED_STARTING_PHASE, 
or it can be fixed by using manual edits or the bin/uvm11-to-uvm12.pl 
helper script to update user code to use the new accessor methods.

(+) Mantis 4432: Provide auto-object-to-phase in uvm_sequence_base

(+) Mantis 4433: Remove unnecessary uvm_objection instances within
non-uvm_task_phase nodes

(+) Mantis 4434: Added get_objection_count to uvm_phase

(+) Mantis 4439: Documented put_response() on the uvm_seq_pull_port

Mantis 4440: Now possible to jump during phase_ended()

(+) Mantis 4469: The ability to programatically traverse the phase graph
was added via get_adjacent_predecessor_nodes and
get_adjacent_successor_nodes inside of uvm_phase

(+) Mantis 4476: uvm_sequence::req and uvm_sequence::rsp now documented.

Mantis 4488: Potential zero-time loop when user does not correctly implement uvm_sequence::wait_for_relevant() now throws an error

(+) Mantis 4513: Added user-defined memory allocation policy to uvm_vreg::allocate()

(+) Mantis 4516: Proper prioritization of default sequences

(+) Mantis 4517: Added phase transition callbacks

(*) Mantis 4518: Classes extended from uvm_object now require an
explicit constructor with a string-type name argument.  This
functionality was optionally enabled in prior versions by defining the
`UVM_OBJECT_MUST_HAVE_CONSTRUCTOR symbol (Mantis 3770).  This
functionality is now the default. Should the obsolete functionality be
required, define the `UVM_OBJECT_DO_NOT_NEED_CONSTRUCTOR symbol.

(+) Mantis 4519: Added uvm_phase::set_jump_phase() and uvm_phase::end_prematurely(),
which together implement uvm_phase::jump().

Mantis 4532: uvm_reg_access_seq ignoring regs with one RO field

Mantis 4533: static data in DPI may survive reset

Mantis 4542: uvm_test_done is now const to prevent changes

Mantis 4550: clarified that TLM port transaction types are not restricted to class/uvm_objects

(+) Mantis 4553: Introduces NOACCESS field access in uvm_reg_field.svh; removed error msgs from get_access(), and augmented by using NOACCESS when map and field have conflicting access values. 

Mantis 4548: cleanup dpi coding issues

Mantis 4566: uvm_comparer now detects any queue size mismatch when comparer.show_max != 1

Mantis 4567 : fixed do_predict call overwriting the NOT_OK status with OK status on backdoor writes to RO reg

(+)(*) Mantis 4570: Messaging System Revamp
   Makes message object-based and enable user to derive from the message
   object and attach additional fields to messaging infrastructure and 
   reporting format. In addition, an option is provided to record the 
   messages and the attached fields.

Mantis 4572: packing of ints with 64+bits and array unpack broken

Mantis 4587: Added length, byte_enable, byte_length fixes for reg2bus to adhere to tlm_gp rules

Mantis 4588: changes in hw_reset_seq to ensure sub-blocks are excluded when relevant NO_REG_TEST attribute is set

Mantis 4590: implemented capability to allow VHDL UVM_REG backdoor access using VCS. Users need to pass elaboration swtich with arguments to enable Mixed-Language API's -cflags "-DVCSMX" 

(*) Mantis 4606: uvm_report server is not chainable/extendable uvm_report_server can now be extended, chained using delegate pattern

Mantis 4617: bad example in documentation uvm_report_cb::add_by_name

(*) Mantis 4618: resource lookup broken when fieldname has wildcards. meta characters in the fieldname are not interpreted anymore as glob/regex.

Mantis 4621: printing of int will mask Z values with X

Mantis 4622: uvm_phase::unsync() now actually removes the sync relationship

Mantis 4643: uvm_dpi_get_next_arg_c doesnt fully adhere to 1800lrm

(*) Mantis 4649: Improve memory performance for 'bitstream' interfaces
for report/record/compare/pack etc.  
  The implementation now supports a less memory-expensive
  uvm_integral_t which is sized as a 64b packed logic vector.  This
  type is used in the "*_field_int()" methods for
  reporting/recording/comparing and packing/unpacking.  
  As a side effect, for consisteny "print_int" was renamed to
  "print_field", however print_int is being left in the implementation
  for backwards compatibility purposes.

Mantis 4666: uvm_config_db::set expects to be invoked in process context

Mantis 4677: uvm_global_copy_map removed

(+) Mantis 4686: updated documentation to indicate the uvm_reg(_field)::predict is updating mirrored AND  desired values

Mantis 4690: mehod -> method in uvm_sequence_base documentation

Mantis 4711: Fixed LRM violation

Mantis 4731: Fixed initialization race introduced by Mantis 4606.

Mantis 4732: Provides new phase state 'UVM_PHASE_UNINITIALIZED' to
indicate phase state prior to a phase existing in a schedule.

Mantis 4734: Fixed bug in uvm_reg_map::get_size()

Mantis 4738: Fixed bug wherein messages from built-in UVM dpi code
were not being routed through standard UVM messaging.

Mantis 4743: uvm_sequencer::get_next_item/try_next_item/item_done/get/peek/put
may now be called directly.

(*) Mantis 4744: Makes recording system object based.  Introduced new 
uvm_tr_stream and uvm_tr_database classes.  

(*) Mantis 4766: Fix broken `uvm_record_field / attribute interaction.
  The fix for this mantis involved creating a new method
  'use_record_attribute' in uvm_recorder.  The new method allows for a
  conditional usage of the `uvm_record_attribute macro, allowing users
  to create their own recorders without interfering with
  vendor-specific recorders

(+) Mantis 4767: Fixed the `uvm_pack and `uvm_unpack macros which
bypassed the packer policy methods.  Additionally, added
pack_bits/bytes/ints and unpack_bits/bytes/ints to allow easier
compatibility with the SystemVerilog stream operator.

Mantis 4772: separated hdl vendor dpi backends into one file per vendor

(*) Mantis 4783: The `uvm_record_* macros no longer call undocumented
member methods of uvm_recorder.

(+) Mantis 4786: Corrected the documentation of print_real

(+) Mantis 4784: documenting the `uvm_record_(int,string,real,time) macros

Mantis 4861: adding a uvm_reg_map to an existing regmap instance did require 
both maps to have the same parent. bad error message and behaviour fixed.

Mantis 4871: Fixed problem that multiple +uvm_set_* commands were ignored after a 
format error

Mantis 4882: changed name of phase objection to reflect phase name

Mantis 4884: Performance fix avoiding the copy of large QDA into uvm_spell_chkr::check

Mantis 4893: Fixed bug in uvm_leaf_scope which could lead to stall of simulation

Mantis 4920: Fixed random stability bug in lookup_name which would cause instability 
when the config database is queried.

Mantis 4923: Added check for out of bound queue access in uvm_misc.svh .

Mantis 4925: Moved macros from base/uvm_globals into macros/uvm_global_defines, removed duiplicate macros within uvm_pkg. These changes will make UVM_1.2 Reference HTML out of sync with UVM-1.2 PDF documentation.

Mantis 4931: Various typos and bad links within the reference guide
were corrected.
