Vengineerの妄想

人生を妄想しています。

OVM 2.0 :sequence.startタスク

Verification Engineerの戯言

ovm_sequencer_baseクラスstart_sequenceタスクは、OVM 2.0ではDeprecatedになりました。
その代わりに、ovm_sequence_baseクラスstartタスクを使うことになります。
コードでも次のようにstart_sequenceタスクを実行すると、seq_base.start(this)を呼んでいます。
    src/methodology/ovm_sequencer_base.sv

    virtual task start_sequence(ovm_sequence_base seq_base);
      fork
        seq_base.start(this);
      join_none
    endtask // start_sequence

この機能は、シーケンスを並列に動作させるときに利用できるようです。
User GuideのP.114のStarting Several Sequences in Parallelの例題です。
    User Guide P.114から

    class concurrent_seq extends ovm_sequence #(simple_item);
      ... // Constructor and OVM automation macros go here.
      // See “Creating and Adding a New Sequence” on page 84.
      a_seq a;
      b_seq b;
      virtual task body();
        // Initialize the sequence variables with the factory.
        `ovm_create(a)
        `ovm_create(b)
        // Start each subsequence as a new thread.
        fork
          a.start(p_sequencer);
          b.start(p_sequencer);
        join
      endtask : body
    endclass : concurrent_seq
sequence.startタスクは、どんなシーケンサ上でシーケンスを起動できるのですね!

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