2017-09-04 29 views
0

私はUVMバーチャルシーケンサの目的を理解しようとしています。UVMバーチャルシーケンサの目的は何ですか

アカデミーがそれについて何と言っているかを見ると、基本的に他のシーケンサーのコンテナクラスです。

class sequencer extends uvm_virtual_sequencer; 

`uvm_component_utils(virtual_sequencer) 

sequencer_a m_seq_a; 
sequencer_b m_seq_b; 
... 
... 
endclass 

シーケンスの開始時に、m_seq_aまたはm_seq_bに異端の参照があります。

仮想シーケンサーはなぜuvm_componentではないのですか? uvm_virtual_sequencerができることはありますか?仮想シーケンサーで始めることはできません。

答えて

1

仮想シーケンスを開始する2つの方法があります(異なるシーケンサーで異なるシーケンスを開始します)。

  • ターゲットシーケンサーのハンドルを仮想シーケンスに入れたまま、シーケンスを開始する前にそれらのハンドルを割り当てます。

このようにします。

vir_seq vira = vir_seq::type_id::create("virtual_sequence"); 

vira.sequencer_1 = .... ; // sequencer 1 hierarchical path 
vira.sequencer_2 = .... ; // sequencer 2 hierarchical path 

vira.start(null); // Start the virtual sequence using null 
  • 他のシーケンサー(仮想シーケンサ)にターゲットシーケンサのハンドルを維持し、その仮想シーケンサ上の仮想シーケンスを開始します。

ただし、Virtual Sequencerというアプローチは、階層の別のレイヤーを追加するだけであり、再利用するのが複雑です。

また、uvm_virtual_sequencerは、uvm_sequencerのみであり、仮想シーケンスが開始されるため、uvm_componentにすることはできません。

ここにUVM 1.2ソースコードの関連コードがあります。

typedef uvm_sequencer #(uvm_sequence_item) uvm_virtual_sequencer 
関連する問題