2017-09-04 82 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

有兩種方法可以啓動虛擬序列(這將依次啓動不同序列發生器上的不同序列)。

  • 保持目標序列發生器的手柄在虛擬序列中,然後在開始序列之前分配這些手柄。

像這樣。

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