본문 바로가기

Universal Verification Methodology(UVM)는 다양한 컴포넌트 간의 설정 매개변수를 설정하고 가져오는 유연하고 강력한 구성 메커니즘을 제공합니다. 이 가이드에서는 uvm_config_db를 사용하여 설정 매개변수를 설정하고 가져오는 방법을 예제와 함께 설명합니다.

uvm_config_db란 무엇인가?

uvm_config_db는 UVM에서 설정 정보를 중앙 집중식으로 관리할 수 있도록 하는 클래스입니다. 이를 통해 테스트벤치의 다양한 부분이 직접 연결 없이 설정 정보를 공유할 수 있어 모듈화와 재사용성을 높일 수 있습니다.

uvm_config_db 사용 방법

uvm_config_db를 사용하여 설정 매개변수를 설정(set)하고 가져오는(get) 방법을 알아보겠습니다.

설정 매개변수 설정 예제

먼저, uvm_config_db를 사용하여 가상 인터페이스(virtual interface)를 설정하는 예제입니다.

class my_env extends uvm_env;
    `uvm_component_utils(my_env)

    virtual bus_if vif;

    function new(string name, uvm_component parent);
        super.new(name, parent);
    endfunction

    virtual function void build_phase(uvm_phase phase);
        super.build_phase(phase);
        if (!uvm_config_db#(virtual bus_if)::get(this, "", "vif", vif)) begin
            `uvm_fatal("NO_VIF", {"Virtual interface must be set for: ", get_full_name(), ".vif"});
        end
    endfunction
endclass

module top;
    import uvm_pkg::*;
    virtual bus_if vif;

    initial begin
        uvm_config_db#(virtual bus_if)::set(null, "my_env", "vif", vif);
        run_test("my_env");
    end
endmodule

위 코드에서는 uvm_config_db를 사용하여 my_env 클래스의 vif 설정을 설정하고 있습니다.

설정 매개변수 가져오기 예제

다음은 설정 매개변수를 가져오는 예제입니다.

class my_test extends uvm_test;
    `uvm_component_utils(my_test)

    virtual function void build_phase(uvm_phase phase);
        super.build_phase(phase);
        virtual bus_if vif;
        if (!uvm_config_db#(virtual bus_if)::get(this, "", "vif", vif)) begin
            `uvm_fatal("NO_VIF", {"Virtual interface must be set for: ", get_full_name(), ".vif"});
        end
    endfunction
endclass

module top;
    import uvm_pkg::*;
    virtual bus_if vif;

    initial begin
        uvm_config_db#(virtual bus_if)::set(null, "my_test", "vif", vif);
        run_test("my_test");
    end
endmodule

이 예제에서는 uvm_config_db를 사용하여 my_test 클래스의 vif 설정을 가져오고 있습니다.

uvm_config_db 매개변수 설명

  • cntxt (context): 설정이 적용될 범위를 정의합니다. 일반적으로 null 또는 특정 컴포넌트 인스턴스를 지정합니다.
  • inst_name (instance name): 설정이 적용될 인스턴스의 이름을 정의합니다.
  • field_name (field name): 설정할 필드의 이름을 정의합니다.
  • value (값): 설정할 값입니다.

결론

uvm_config_db는 UVM 테스트벤치에서 설정 매개변수를 중앙에서 관리할 수 있게 해주는 강력한 도구입니다. 이를 통해 테스트벤치의 다양한 컴포넌트가 설정 정보를 쉽게 공유하고, 모듈화된 구조를 유지할 수 있습니다. 위의 예제와 설명을 통해 uvm_config_db를 효과적으로 사용하는 방법을 이해할 수 있습니다.

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.