event_pool

動かすと、こんなログが出ます。

# ----------------------------------------------------------------
# UVM-1.1d
# (C) 2007-2013 Mentor Graphics Corporation
# (C) 2007-2013 Cadence Design Systems, Inc.
# (C) 2006-2013 Synopsys, Inc.
# (C) 2011-2013 Cypress Semiconductor Corp.
# ----------------------------------------------------------------
#
#   ***********       IMPORTANT RELEASE NOTES         ************
#
#   You are using a version of the UVM library that has been compiled
#   with `UVM_NO_DEPRECATED undefined.
#   See http://www.eda.org/svdb/view.php?id=3313 for more details.
#
#   You are using a version of the UVM library that has been compiled
#   with `UVM_OBJECT_MUST_HAVE_CONSTRUCTOR undefined.
#   See http://www.eda.org/svdb/view.php?id=3770 for more details.
#
#       (Specify +UVM_NO_RELNOTES to turn off this notice)
#
# -------------------------------------------------
# Name                Type              Size  Value
# -------------------------------------------------
# ep                  uvm_obj_str_pool  -     -
#   pool              aa_object_string  2     -
#     [fred]          uvm_event         -     -
#       num_waiters   int               32    'd0
#       on            bit               1     'b0
#       trigger_time  time              64    0
#       trigger_data  object            -     -
#     [george]        uvm_event         -     -
#       num_waiters   int               32    'd0
#       on            bit               1     'b0
#       trigger_time  time              64    0
#       trigger_data  object            -     -
# -------------------------------------------------
#
# --- UVM Report Summary ---
#
# ** Report counts by severity
# UVM_INFO :    0
# UVM_WARNING :    0
# UVM_ERROR :    0
# UVM_FATAL :    0
# ** Report counts by id
# ** UVM TEST PASSED **
# quit

これはuvm-1.1dでの動作結果ですが、uvm-1.2とのコード差分を見ると

<   initial begin
---
>   initial begin static uvm_coreservice_t cs_ = uvm_coreservice_t::get();
>
49c50
<       svr = _global_reporter.get_report_server();
---
>       svr = cs_.get_report_server();

となっており、uvm-1.2で uvm_coreservice_t というのが追加された、と見ることができます。

また、ソースコードを見ていくと、上記のオブジェクトの中身を表示したものは

ep.print()

が該当しており、

svr.summarize()

はよくわかりません。

このサンプルから読み取れることは

  1. uvm_eventを使うときは、uvm_event_poolを生成して使用するのがよさそう
  2. uvm_report_xxxの発行カウントを読み取る仕組みが例示されており、これを使えば、UVMのみの環境であればSIMの実行結果を外部バッチに頼ることなく判定できますよ、と読める

くらいでしょうか。