Global training solutions for engineers creating the world's electronics

Summary of Changes in UVM 1.2

New and Changed Features

Variable uvm_sequence_base::starting_phase is deprecated and replaced by two new methods, set_starting_phase and get_starting_phase, which prevent starting_phase from being modified in the middle of a phase. This change is not backward-compatible with UVM 1.1, though variable starting_phase, although deprecated, has not yet been removed from the base class library.

New method uvm_sequence_base::set_automatic_phase_objection causes raise_objection and drop_objection to be called automatically around a sequence, avoiding the need to call raise/drop_objection manually in one common situation.

Message system revamp to provide an object-based API to add properties to reports, with new macros `uvm_info_begin/`uvm_info_end and so on. Class uvm_report_server can now be extended and extended report servers can be chained.

Recording system revamp to provide an object-based API for class uvm_recorder.

Factory overrides can now be undone by explicitly restoring the default type.

The standard factory can be replaced with an alternative user-defined factory, e.g. to provide improved debug functionality.

The hierarchical propagation of objections, which is usually redundant, can be turned off using the new method uvm_objection::set_propagate_mode in order to speed up execution. The propagation of objections will eventually be deprecated.

The new method uvm_phase::get_objection_count gives a clean way to drop all objections, i.e.

phase.drop_objection(this, "msg", phase.get_objection_count(this));

New methods uvm_phase::get_adjacent_predecessor/successor_nodes for phase schedule introspection.

New callback class uvm_phase_cb to allow callbacks on phase transitions.

It is now mandatory that every class that extends uvm_object must have a constructor.

The class uvm_event is now parameterized with the type of the (optional) event payload.

Type uvm_bitstream_t has been replaced by type uvm_integral_t in policy objects and field macros.

New class uvm_reg_transaction_order_policy to specify the order of bus transactions in the case of wide register accesses.

The prefix UVM_ has been added to enum values of type uvm_sequence_state_enum and uvm_sequencer_arb_mode.

New version macros `UVM_MAJOR_REV, `UVM_MINOR_REV and so on.

 

Things Made Part of the Official Standard

The entry and exit criteria for the built-in run-time phases (e.g. reset_phase) have been documented in the class reference.

Class uvm_sequence_library is now documented and official.

Variables uvm_sequence::req and rsp are now documented and official.

Methods uvm_sequencer#()::get_next_item, try_next_item, item_done, get, peek, and put are now documented and official.

 

Deprecated Features

Methods set/get_config_int, set/get_config_string, set/get_config_object are deprecated.

Methods uvm_component::status, kill, and do_kill_all are deprecated.

Methods stop_request, global_stop_request, set_global_timeout, set_global_stop_timeout, and stop_timeout are deprecated.

Method uvm_component::stop_phase and variable enable_stop_interrupt are deprecated.

Variable uvm_test_done is deprecated.

Macros `uvm_sequence_utils, `uvm_declare_sequence_lib, and`uvm_update_sequence_lib are deprecated.

The configuration database parameters "default_sequence", "count", "max_random_count", and "max_random_depth" are deprecated.

The methods uvm_sequencer_base::add_sequence, get_seq_kind, and get_sequence are deprecated.

 

There are new migration scripts to replace certain modified or deprecated features.