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.
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.