2017-09-04 4 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_sequencer 일 뿐이며 가상 시퀀스가 ​​시작될 때 uvm_component이 될 수 없다는 것입니다.

다음은 UVM 1.2 소스 코드의 관련 코드입니다.

typedef uvm_sequencer #(uvm_sequence_item) uvm_virtual_sequencer