Verification Engineerの戯言
ovm_sequencer_baseクラスのstart_sequenceタスクは、OVM 2.0ではDeprecatedになりました。
その代わりに、ovm_sequence_baseクラスのstartタスクを使うことになります。
コードでも次のようにstart_sequenceタスクを実行すると、seq_base.start(this)を呼んでいます。
その代わりに、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の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_seqsequence.startタスクは、どんなシーケンサ上でシーケンスを起動できるのですね!
検証、Verification、SystemVerilog、OVM、Open Verification Methodology