04. uvm11-to-uvm12.plを使ってみた

Cygwinのdiff問題が解決しましたので、掲題のUVM変換ツール、uvm11-to-uvm12.plの試行結果を書いておこうと思います。このツールは、uvm-1.1x系からuvm-1.2になって変わったところを修正してくれるらしい変換Perlです。

変換したいファイルのあるディレクトリで、実行するのが良さそうです。カレントディレクトリにあるソースコードたちをチェック対象として動くようです。

…変換するのかと思ったら、テンポラリに変換結果を出力して、そのファイルと元とのdiffをとった結果だけ残すことがわかりました。以下のチェックでコードがどう変わったかというと、pre_bodyだけ書いてみます。太字のところが変更したところです。

----- 元 (for uvm-1.1x用)

  virtual task pre_body();
    if (starting_phase!=null) begin
       `uvm_info(get_type_name(),
                 $sformatf("%s pre_body() raising %s objection",
                           get_sequence_path(),
                           starting_phase.get_name()), UVM_MEDIUM);
       starting_phase.raise_objection(this);
    end
  endtask

----- 変更後(for uvm-1.2用)

  virtual task pre_body();
    uvm_phase phase_ = get_starting_phase();
    //if (starting_phase!=null) begin
    if (get_starting_phase()!=null) begin
       `uvm_info(get_type_name(),
                 $sformatf("%s pre_body() raising %s objection",
                           get_sequence_path(),
                           //starting_phase.get_name()), UVM_MEDIUM);
                           phase_.get_name()), UVM_MEDIUM);
       //starting_phase.raise_objection(this);
       phase_.raise_objection(this);
    end
  endtask

個人的には、この書き換え方をした時に、ここではphase_変数を作っていますけれども、これをUVMのリソース管理部が管理できるのか、ちょっと怖いです。ユーザーが記述したuvm_phase型の変数に対して、 どうやってraise_objectionとdrop_objection結果を監視するのか。

以下は、変換Perlを動かした時の標準出力です。

note --------------------------------------------------------------------------------
note -*- $Id: uvm11-to-uvm12.pl,v d60c9fc172de 2010/10/13 14:58:52 accellera $ -*-
note requires at least perl v5.10
note traversing directory [/home//model] to find files
note -*- this script requires a gtar compatible tar to make backups -*-
handling sv [/home//model/sample_env.sv]
handling sv [/home//model/sample_if.sv]
handling sv [/home//model/sample_master_agent.sv]
handling sv [/home//model/sample_master_driver.sv]
handling sv [/home//model/sample_master_monitor.sv]
handling sv [/home//model/sample_master_sequencer.sv]
handling sv [/home//model/sample_master_seq_lib.sv]
handling sv [/home//model/sample_model.svh]
handling sv [/home//model/sample_scrbd_item.sv]
handling sv [/home//model/sample_seq_item.sv]
handling sv [/home//model/sample_slave_agent.sv]
handling sv [/home//model/sample_slave_driver.sv]
handling sv [/home//model/sample_slave_monitor.sv]
handling sv [/home//model/sample_slave_sequencer.sv]
handling sv [/home//model/sample_slave_seq_lib.sv]
note writing file to new top_dir /tmp/w8ugkLJOvT
note the patch is avail as [uvm2uvm_12088.patch] for inspection