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=, where 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.