Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

OVM : default_sequenceの設定方法

Verification Engineerの戯言

今回は、default_sequenceへの設定方法を見ていきます。
Sequenceの例題(その1)testモジュールのコードをもう一度見てみましょう!
examples/sequence/test.sv
    module test;

      // かなり、省略

      initial begin
        set_config_string("sequencer", "default_sequence", "simple_seq_sub_seqs");
        sequencer = new("sequencer", null); sequencer.build();
        driver = new("driver", null); driver.build();
        driver.seq_item_prod_if.connect_if(sequencer.seq_item_cons_if);
        run_test();
      end

  endmodule
set_config_string関数でsequencerのdefault_sequenceに対して、simple_seq_sub_seqsを設定しています。
たったこれだけです。
simple_seq_sub_seqsは、simple_seq_lib.svで定義されています。
    class simple_seq_sub_seqs extends ovm_sequence;

      simple_seq_do seq_do;
      simple_seq_do_with seq_do_with;
      simple_seq_do_with_vars seq_do_with_vars;

      virtual task body();
        ovm_report_info(m_name, $psprintf("In body() of %s", get_name()),1000);
        #100;
        `ovm_do(seq_do)
        #100;
        `ovm_do(seq_do_with)
        #100;
        `ovm_do_with(seq_do_with_vars, { start_addr == 16'h0003; start_data == 16'h0009; } )
      endtask
    endclass : simple_seq_sub_seqs

検証、Verification、SystemVerilog、OVM、Open Verification Methodology