지노랩 /JinoLab

[UVM] 3.4 시퀀서(Sequencer) 생성 본문

UVM(Universal Verification Methodology)/3. 재사용 가능한 검증 컴포넌트 개발(Developing Reusabl

[UVM] 3.4 시퀀서(Sequencer) 생성

지노랩/JinoLab 2025. 3. 11. 13:13

3.4 시퀀서(Sequencer) 생성

3.4.1 시퀀서의 역할

  • 시퀀서(Sequencer)는 테스트 벤치에서 트랜잭션 데이터를 생성하고, 드라이버(Driver)로 전달하는 역할을 수행한다.
  • UVM에서 제공하는 uvm_sequencer 클래스를 상속받아 사용해야 한다.
  • 시퀀서는 생성한 트랜잭션을 드라이버와 동기화하여 전달하며, 필요 시 응답(response)도 받을 수 있음.
  • 기본적으로 요청(request) 타입과 응답(response) 타입이 동일하지만, 다르게 설정할 수도 있다.

3.4.2 시퀀서 생성 과정

시퀀서를 만들기 위해 다음 단계를 따른다.

  1. uvm_sequencer 클래스를 상속하여 사용자 정의 시퀀서를 만든다.
  2. UVM Factory에서 객체를 생성하고 관리할 수 있도록 uvm_component_utils 매크로를 추가한다.
  3. 시퀀서를 드라이버와 연결할 수 있도록 구성한다.

3.4.3 시퀀서 구현 예제

아래 예제는 simple_sequencer 클래스를 정의하며, simple_item 트랜잭션을 생성하고 드라이버와 연결하는 역할을 한다.

// simple_item을 사용하는 uvm_sequencer 생성
class simple_sequencer extends uvm_sequencer #(simple_item);
  
  // UVM Factory에서 객체를 생성할 수 있도록 매크로 추가
  `uvm_component_utils(simple_sequencer)

  // 생성자 (부모 클래스 uvm_sequencer의 생성자 호출)
  function new (string name = "simple_sequencer", uvm_component parent);
    super.new(name, parent);
  endfunction : new

endclass : simple_sequencer

3.4.4 코드 설명

  • Line 1: uvm_sequencer 클래스를 상속받아 simple_sequencer 클래스를 생성.
  • Line 3: uvm_component_utils 매크로를 추가하여 UVM Factory에서 객체를 인스턴스화할 수 있도록 설정.
  • Line 6: 생성자를 정의하여 부모 클래스 uvm_sequencer의 생성자를 호출.

3.4.5 요청(Request) 및 응답(Response)

  • 기본적으로 uvm_sequencer는 트랜잭션 요청(Request)과 응답(Response)을 처리한다.
  • uvm_sequencer는 하나의 요청 타입만을 기본적으로 사용하지만, 다른 응답 타입을 지정할 수도 있다.

예제:

uvm_sequencer #(simple_item, simple_rsp) sequencer;
  • simple_item은 요청(Request) 타입, simple_rsp는 응답(Response) 타입.
  • 응답을 필요로 하는 환경에서는 응답 타입을 지정하여 사용할 수 있음.

3.4.6 시퀀서와 드라이버의 동기화

  • 시퀀서는 트랜잭션을 생성하고 드라이버로 전달하며, 드라이버는 이를 실행하여 DUT로 보낸다.
  • 시퀀서와 드라이버의 동기화 방법에 대한 자세한 설명은 3.10.2절에서 다룸.

✅ 3.4 요약

  • 시퀀서는 트랜잭션을 생성하고 드라이버로 전달하는 역할을 수행.
  • uvm_sequencer 클래스를 상속하여 사용자 정의 시퀀서를 생성.
  • uvm_component_utils 매크로를 사용하여 UVM Factory에서 객체를 관리할 수 있도록 설정.
  • 기본적으로 요청(Request) 타입과 응답(Response) 타입을 지정할 수 있음.
  • 시퀀서와 드라이버는 TLM 인터페이스를 통해 동기화됨.

 

 

 


 

본 내용은
accellera에서 공개한
Universal Verification Methodology
(UVM) 1.2 User's Guide
를 바탕으로 작성된 글입니다.