スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UVM1.0p1に書き直したよ(その4)

今回は「default_sequence」です。

UVM1.0EAでは、「set_config_string」を用いて記述してました。
set_config_string("env_tb.reads[0].sequencer", "default_sequence", "rd_seq");
私は、「env_tb.reads[0].sequencer」にある変数「default_sequence」に「rd_seq」を設定すると理解しました。

UVM1.0p1での書き方ですが、以下のようになります。
uvm_config_db #(uvm_object_wrapper)::set(this, "env_tb.reads[0].sequencer.run_phase",  "default_sequence", rd_seq::type_id::get());
この記述はデータベースの「env_tb.reads[0].sequencer.run_phase」に「default_sequence」(ここではrd_seq)を登録していると理解しました。

つまり、データベースに登録しているため「default_sequence」の実体は存在しません。
なので、パスが間違ってもシミュレーションでErrorにならないので注意が必要です。
また、標準で動作するsequenceを持っていないので必ず設定する必要があります。

○記述例(my_testのbuild)
  // build
virtual function void build_phase(uvm_phase phase);

// Create the tb
env_tb = env::type_id::create("env_tb", this);

// Sequence Library Set
uvm_config_db #(uvm_object_wrapper)::set(this, "env_tb.reads[0].sequencer.run_phase", "default_sequence", rd_seq::type_id::get());
uvm_config_db #(uvm_object_wrapper)::set(this, "env_tb.reads[1].sequencer.run_phase", "default_sequence", rd_seq::type_id::get());
uvm_config_db #(uvm_object_wrapper)::set(this, "env_tb.writes[0].sequencer.run_phase", "default_sequence", wr_nobyte_seq::type_id::get());
uvm_config_db #(uvm_object_wrapper)::set(this, "env_tb.writes[1].sequencer.run_phase", "default_sequence", wr_stop_seq::type_id::get());

super.build_phase(phase);
endfunction

default_sequenceは、コチラにも解説がありますので参考になると思います。
- Verification Engineerの戯言:UVM 1.0 : default_sequence(その1)
- Verification Engineerの戯言:UVM 1.0 : default_sequence(その2)
関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。