UVM 1.0では、OVM 2.1.1/UVM 1.0EAとdefault_sequenceの設定方法が変わりました。
src/seq/uvm_sequencer_base.svhのset_phase_sequence関数のコメント部に次のような説明があります。
日本語部分は、私が追加しました。
日本語部分は、私が追加しました。
// シーケンス(myseq_t)のインスタンス(myseq)を生成 //| myseq_t myseq = new("myseq"); // 制約を追加 //| myseq.randomize() with { ... }; // この方法で'''default_sequece'''を設定することになる。 // uvm_config_dbのset関数を使って、'''myseq'''を'''default_sequence'''に設定する //| uvm_config_db #(uvm_sequence_base)::set(null, "top.agent.myseqr.main_phase", //| "default_sequence", //| myseq);
ファクトリを使う場合は、次のような感じ
//| uvm_config_db #(uvm_object_wrapper)::set(null, "top.agent.myseqr.main_phase", //| "default_sequence", //| myseq_type::type_id::get());
get_full_name()を使うと、ちょっと変わる(top.agentが無くなる)
// // The uvm_resource_db can similarly be used. // //| myseq_t myseq = new("myseq"); //| myseq.randomize() with { ... }; //| uvm_resource_db #(uvm_sequence_base)::set({get_full_name(), ".myseqr.main_phase", //| "default_sequence", //| myseq, this); // //| uvm_resource_db #(uvm_object_wrapper)::set({get_full_name(), ".myseqr.main_phase", //| "default_sequence", //| myseq_t::type_id::get(), //| this );
このことは、Users Guideの4.10.3 Configuring the Sequencer’s Default Sequenceにも書いてあります。
ちなみに、OVM 2.1.1/UVM 1.0EAでは、次のような感じ。
sequencer = new("sequencer", null); set_config_string("sequencer", "default_sequence", "simple_seq_sub_seqs");
検証、Verification、SystemVerilog、UVM、Unified Verification Methodology