RTL18 [UVM 1.1d] 9. Directed-Test Style (v.s. UVM Style) 1. Directed-Test Style InterfaceDirected-Test Style Interface는 전통적인 명령형 프로그래밍 스타일로, 테스트 작성자가 명시적으로 시퀀서와 상호작용하며 데이터 항목을 생성하고 실행합니다.예제 코드class directed_test extends ubus_example_base_test; `uvm_component_utils(directed_test) ubus_example_tb ubus_example_tb0; function new (string name = "directed_test", uvm_component parent = null); super.new(name, parent); endfunction virtual function void.. 2024. 12. 1. [UVM 1.1d] 8. UVM Sequence Library 1. Sequencer 생성Sequencer는 Stimulus Data를 생성하여 Driver로 전달하는 역할을 합니다. 기본적으로 uvm_sequencer 클래스를 상속받아 커스터마이징합니다.주요 코드 예제systemverilogclass simple_sequencer extends uvm_sequencer #(simple_item); `uvm_sequencer_utils(simple_sequencer) // 생성자 function new (string name="simple_sequencer", uvm_component parent); super.new(name, parent); `uvm_update_sequence_lib_and_item(simple_item) endfunction.. 2024. 12. 1. [UVM 1.1d] 7-2. UBus Verification Example 7.6 UBus EnvironmentUBus Environment는 검증 환경의 상위 컨테이너로, 에이전트와 모니터, 스코어보드 등 다양한 컴포넌트를 포함합니다.주요 역할에이전트 관리: Master와 Slave Agent를 생성하고 환경 내에 통합.데이터 흐름 관리: 모니터와 스코어보드 간 연결 설정.예제 코드class ubus_env extends uvm_env; `uvm_component_utils(ubus_env) ubus_master_agent master_agent; ubus_slave_agent slave_agent; ubus_monitor bus_monitor; function new(string name = "ubus_env", uvm_component parent = null);.. 2024. 11. 26. [UVM 1.1d] 7-1. UBus Verification Example 7.3 UBus Top ModuleTop Module은 DUT(Design Under Test)와 UVM 기반 테스트벤치를 연결하는 역할을 합니다. 여기서는 SystemVerilog 인터페이스를 사용해 DUT와 테스트벤치 간의 신호를 연결하고, 시뮬레이션을 초기화합니다.Top Module 예제 (ubus_tb_top.sv)module ubus_tb_top; import uvm_pkg::*; import ubus_pkg::*; `include "test_lib.sv" ubus_if vif(); // UBus 인터페이스 인스턴스화 dut_dummy dut( vif.sig_request[0], vif.sig_grant[0], ... vif.sig_reset ); initial.. 2024. 11. 24. [UVM 1.1d] 6-1. Advanced UVM Topics (Factory, Callback) 6.1 UVM Factory 개요UVM Factory는 UVM 환경에서 객체와 컴포넌트를 생성하고 관리하는 중앙 관리 시스템으로, 검증 환경에서 유연한 객체 생성과 재사용성을 보장합니다. 이를 통해 객체의 타입을 동적으로 설정하고, 특정 객체나 컴포넌트를 대체할 수 있는 Override 기능을 제공합니다.UVM Factory의 주요 기능:동적 객체 생성: 코드 내에서 객체의 타입을 고정하지 않고 필요할 때마다 원하는 타입으로 생성할 수 있습니다.Override 메커니즘: 기존 객체를 새 객체로 대체할 수 있으며, 이를 통해 테스트 환경의 구성을 유연하게 변경할 수 있습니다.객체 재사용성: 동일한 객체를 여러 테스트에서 사용하여 코드의 중복을 줄이고, 유지 보수성을 높입니다.객체 생성 예시class my_.. 2024. 11. 12. [UVM 1.1d] 5-4. Register Model (Register Abstraction Layer) 5.9 Register Sequences (레지스터 시퀀스)UVM에서 Register Sequence는 레지스터의 값을 읽거나 쓰기 위한 시퀀스입니다. 레지스터 접근 작업을 관리하며, 이를 통해 레지스터 값을 쉽게 제어할 수 있습니다.1. Register Sequence와 Virtual Sequence 제어Virtual Sequence는 여러 하위 시퀀서를 한꺼번에 제어하는 시퀀스입니다. 레지스터 시퀀스는 이러한 Virtual Sequence에 포함될 수 있으며, 하위 시퀀서를 통해 레지스터 읽기/쓰기 작업을 관리할 수 있습니다. 이를 위해, p_sequencer를 사용하여 가상 시퀀서에서 하위 시퀀서를 참조하고, 이를 통해 레지스터 시퀀스를 실행합니다.Register Sequence에서 Virtual .. 2024. 10. 20. 이전 1 2 3 다음 반응형