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