지노랩 /JinoLab
[UVM] 3.4 시퀀서(Sequencer) 생성 본문
UVM(Universal Verification Methodology)/3. 재사용 가능한 검증 컴포넌트 개발(Developing Reusabl
[UVM] 3.4 시퀀서(Sequencer) 생성
지노랩/JinoLab 2025. 3. 11. 13:133.4 시퀀서(Sequencer) 생성
3.4.1 시퀀서의 역할
- 시퀀서(Sequencer)는 테스트 벤치에서 트랜잭션 데이터를 생성하고, 드라이버(Driver)로 전달하는 역할을 수행한다.
- UVM에서 제공하는 uvm_sequencer 클래스를 상속받아 사용해야 한다.
- 시퀀서는 생성한 트랜잭션을 드라이버와 동기화하여 전달하며, 필요 시 응답(response)도 받을 수 있음.
- 기본적으로 요청(request) 타입과 응답(response) 타입이 동일하지만, 다르게 설정할 수도 있다.
3.4.2 시퀀서 생성 과정
시퀀서를 만들기 위해 다음 단계를 따른다.
- uvm_sequencer 클래스를 상속하여 사용자 정의 시퀀서를 만든다.
- UVM Factory에서 객체를 생성하고 관리할 수 있도록 uvm_component_utils 매크로를 추가한다.
- 시퀀서를 드라이버와 연결할 수 있도록 구성한다.
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
를 바탕으로 작성된 글입니다.
'UVM(Universal Verification Methodology) > 3. 재사용 가능한 검증 컴포넌트 개발(Developing Reusabl' 카테고리의 다른 글
| [UVM] 3.5.1 기본적인 시퀀서와 드라이버의 상호작용 (0) | 2025.03.12 |
|---|---|
| [UVM] 3.5 드라이버와 시퀀서 연결 (0) | 2025.03.12 |
| [UVM] 3.3 드라이버(Driver) 생성 (0) | 2025.03.11 |
| [UVM] 3.2 트랜잭션 레벨 컴포넌트 (Transaction-Level Components) (0) | 2025.03.10 |
| [UVM] 3.1 데이터 항목 모델링 (Modeling Data Items for Generation) (0) | 2025.03.10 |