6.5.3 Generating the Item or Sequence in Advance
사전에 아이템 또는 시퀀스를 생성하기는 UVM에서 시퀀스가 실행되기 전에 필요한 아이템이나 하위 시퀀스를 미리 준비하는 방식을 설명합니다. 이는 복잡한 프로토콜 계층을 Layering하거나, 복수의 시퀀스 간 동기화가 필요한 상황에서 유용합니다.
주요 개념
- 사전 생성의 필요성: 아이템이나 시퀀스를 미리 생성하면 시퀀스 실행 중에 발생할 수 있는 지연 문제를 최소화하고, 예측 가능성을 높일 수 있습니다.
- 효율성 향상: 시퀀스가 실행되기 전에 필요한 데이터를 준비하여 시퀀스의 실행 속도를 향상시킬 수 있습니다.
구현 예시
class advanced_sequence extends uvm_sequence#(uvm_sequence_item);
`uvm_object_utils(advanced_sequence)
uvm_sequence_item seq_item;
function new(string name = "advanced_sequence");
super.new(name);
endfunction
virtual task body();
// 시퀀스 실행 전 아이템 미리 생성
`uvm_create(seq_item)
// 생성된 아이템으로 트랜잭션 실행
start_item(seq_item);
seq_item.randomize() with { addr > 32'h1000; }; // 랜덤화
finish_item(seq_item);
endtask
endclass
위 코드에서 **uvm_sequence_item**을 미리 생성하고 필요한 데이터를 설정하여, 시퀀스 실행 중 지연 없이 트랜잭션이 처리되도록 구성했습니다.
6.6 UVM Command Line Processor
UVM은 **Command Line Processor (CLP)**를 통해 시뮬레이션 설정을 동적으로 제어할 수 있습니다. CLP는 환경 설정, 로깅 레벨, 시뮬레이션 모드 등 다양한 UVM 기능을 제어할 수 있는 강력한 도구입니다.
6.6.3.1 Configuring the Testbench from the Command Line
CLP를 사용하면 시뮬레이션 실행 시 테스트벤치의 구성 요소를 제어할 수 있습니다. 이를 통해 하드코딩 없이 환경 설정을 동적으로 변경할 수 있습니다.
구현 예시:
# 시뮬레이션 실행 시 특정 설정을 전달
vsim -sv_seed 12345 +uvm_set_config_int=env.agent,active,1
위 명령은 env.agent의 active 설정을 1로 변경합니다.
6.6.3.2 Managing UVM Logging with CLP
UVM 로깅 레벨은 CLP를 사용하여 동적으로 설정할 수 있습니다. 이를 통해 시뮬레이션 중 특정 레벨의 메시지만 필터링하여 출력할 수 있습니다.
로깅 제어 예시:
# 로그 레벨을 UVM_MEDIUM으로 설정
vsim +UVM_VERBOSITY=UVM_MEDIUM
6.6.3.3 Other UVM Facilities Controlled from the Command Line
CLP를 사용하여 제어할 수 있는 기타 기능에는 다음이 포함됩니다:
- 메모리 추적: 시뮬레이션 중 메모리 사용량을 추적합니다.
- 콜백 활성화/비활성화: 특정 콜백 기능을 켜거나 끌 수 있습니다.
- 테스트 이름 전달: 실행할 테스트 이름을 명시적으로 설정합니다.
예시:
# 특정 테스트 실행
vsim +UVM_TESTNAME=my_test
위 명령은 시뮬레이션 실행 시 my_test 테스트를 실행하도록 설정합니다.
결론
6.5.3에서는 시퀀스 실행 전에 필요한 아이템이나 시퀀스를 미리 준비함으로써 효율성을 높이는 방법을 설명했으며, 6.6에서는 Command Line Processor를 사용해 시뮬레이션 환경을 동적으로 제어하는 다양한 기능을 다루었습니다. CLP는 환경 구성, 로깅 레벨 설정, 테스트 이름 지정 등 다양한 시뮬레이션 요구를 충족시킬 수 있는 유용한 도구입니다.
'지식 공유 > UVM' 카테고리의 다른 글
[UVM 1.1d] 7-3. UBus Verification Example (0) | 2024.12.01 |
---|---|
[UVM 1.1d] 7-2. UBus Verification Example (0) | 2024.11.26 |
[UVM 1.1d] 7-1. UBus Verification Example (0) | 2024.11.24 |
[UVM 1.1d] 6-2. Advanced UVM Topics (SEQ_LIB, Layering) (0) | 2024.11.13 |
[UVM 1.1d] 6-1. Advanced UVM Topics (Factory, Callback) (0) | 2024.11.12 |
[UVM 1.1d] 5-4. Register Model (Register Abstraction Layer) (0) | 2024.10.20 |
댓글