1.先看这个网页 https://www.doulos.com/knowhow/sysverilog/uvm/


the only show in town

The source code for the original 1.0 release, known as the UVM Base Class Library (BCL), evolved from the UVM Early Adopter release, which in turn was based on OVM version 2.1.1. The most obvious difference between OVM and UVM-EA was that all occurrence of the prefix "ovm_" were quite literally replaced with "uvm_", "OVM_" by "UVM_", "tlm_" by "uvm_tlm_", and so forth. The UVM-EA kit included a script to convert existing OVM source code. UVM-EA added a few new features on top of OVM 2.1.1, which itself added a few new features to OVM 2.0. The most noticeable additions in the 1.0 release were:

  • An end-of-test objection mechanism to ease the task of cleaning up at the end of a verification run
  • A callback mechanism that provides an alternative to the factory for customizing behavior
  • A report catcher to ease the task of customized report handling
  • A heartbeat


The UVM 1.0x releases add the following features to the Early Adopter release

  • Register layer, based on the Register Abstraction Layer of VMM
  • Phasing extensions, meaning a subdivided run phase, user-defined phases, and user-defined relationships between phases
  • Sequence mechanism
  • TLM-2.0 interfaces, based on the SystemC TLM-2.0 standard
  • Resource database, improving on the old set_config interface
  • End-of-test mechanism
  • Command line processor, to give access to command line arguments


any

Click here for a Summary of Changes in UVM 1.2

starting_phase variable has been deprecated and replaced with two methods set_starting_phase and get_starting_phase, so you might like to start using these methods. Also, there is a new method uvm_objection::set_propagate_mode

介绍了UVM1.X 的历史,然后1.2就出现了。但是专家们对1.2是有争议的,说 1.2的一些新feather不确定是

a step forward or a step backward。最后就是 wait-and-see。估计1.2a应该不远了吧。


2.再看这个网页https://www.doulos.com/knowhow/sysverilog/uvm/uvm-1.2/

真正的具体介绍了变了哪些


Summary of Changes in UVM 1.2



New and Changed Features

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.

uvm_sequence_base::set_automatic_phase_objection causesraise_objection and drop_objection

`uvm_info_begin/`uvm_info_end and so on. Class uvm_report_server

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.

uvm_objection::set_propagate_mode

uvm_phase::get_objection_count


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


uvm_phase::get_adjacent_predecessor/successor_nodes

uvm_phase_cb

uvm_object

uvm_event

uvm_bitstream_t has been replaced by type uvm_integral_t

uvm_reg_transaction_order_policy

UVM_ has been added to enum values of type uvm_sequence_state_enum anduvm_sequencer_arb_mode.

`UVM_MAJOR_REV, `UVM_MINOR_REV

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.

uvm_sequence_library

uvm_sequence::req and rsp

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

Deprecated Features

set/get_config_int, set/get_config_string, set/get_config_object

uvm_component::status, kill, and do_kill_all

stop_request, global_stop_request, set_global_timeout, set_global_stop_timeout, and stop_timeout

uvm_componnent::stop_phase and variable enable_stop_interrupt

uvm_test_done

`uvm_sequence_utils, `uvm_declare_sequence_lib, and`uvm_update_sequence_lib

"default_sequence", "count", "max_random_count", and "max_random_depth"

uvm_sequencer_base::add_sequence, get_seq_kind, and get_sequenceare deprecated.




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

总之就是新加了一些feather,但是被deprecated 的更多。但是被deprecated 我基本上就没用过,现在就这么没了,就好像在我的生命中从来没存在过一样,管他呢,哈哈!!

3点感觉:

1)raise_objection and drop_objection之前还是挺好用的,也没体会到什么不方便啊。

2)server和recorder的改进,感觉log的后处理要真正结合Python or Perl 发挥威力了。

3)set_propagate_mode 不知道有多少好处呢,之前也没注意过这个。