지노랩 /JinoLab

[UVM] 5.8 레지스터 모델을 검증 환경에 통합하는 절차 본문

UVM(Universal Verification Methodology)/5. Register Layer Class 사용하기

[UVM] 5.8 레지스터 모델을 검증 환경에 통합하는 절차

지노랩/JinoLab 2025. 5. 17. 09:57

 

1 | 필수 컨셉

키워드 의미

regmodel 환경이 참조하는 최상위 레지스터 블록 객체. 환경마다 이 이름의 프로퍼티를 두면 위·아래 계층 모두가 동일한 규칙으로 접근 가능.
lock_model() build() 이후 구조(레지스터·맵) 변경을 막아 안정된 인스턴스임을 선언.
HDL Path Root 백도어용 경로 문자열의 “최상위 접두사” – 환경이 DUT 인스턴스를 어디에 넣느냐에 따라 달라지므로 모델을 만든 쪽이 아니라 환경에서 지정.

2 | build_phase() 템플릿 (수직 재사용 지원)

class block_env extends uvm_env;

  // ① 레지스터 모델 핸들
  block_reg_model regmodel;

  // ② 서브 블록 환경
  subblk_env      subblk;

  virtual function void build_phase(uvm_phase phase);

    //------------------------------------------------------------
    // 2-A  상위 환경이 이미 regmodel을 주입했는지 체크
    if (regmodel == null) begin
      // (1) 팩터리 생성
      regmodel = block_reg_model::type_id::create("regmodel", this);

      // (2) build() 호출 – RAL 객체 내부 구성
      regmodel.build();

      // (3) (옵션) 백도어용 HDL root 경로 지정
      regmodel.set_hdl_path_root("tb_top.dut");

      // (4) 구조 고정
      regmodel.lock_model();
    end

    //------------------------------------------------------------
    // 2-B  서브 환경 생성 + 하위 regmodel 연결
    subblk = subblk_env::type_id::create("subblk", this);
    subblk.regmodel = regmodel.subblk;  // 서브블록 모델 전달

  endfunction
endclass

vertical reuse
block_env 이 상위 IP → 서브시스템 → SoC로 재사용될 때,
상위 환경이 이미 같은 모델 인스턴스를 만들어 주입하면 if (regmodel==null) 조건이 false가 되어 중복 생성을 피한다.


3 | 통합 단계별 체크리스트

단계 해야 할 일

① 생성 block_reg_model::type_id::create(...)
② build() 내부 레지스터·맵·서브블록 인스턴스화
③ 옵션 설정 set_hdl_path_root() — 백도어 사용 시 필수
④ lock_model() 이후 테스트 단계에서 구조 변조 방지
⑤ 하위 전달 서브 환경이나 가상 시퀀스에 regmodel.subblk 등 연결

4 | 실무 팁

  • HDL root 경로는 환경 계층마다 달라질 수 있으므로,
    “RAL Generator → 경로 하드코딩” 대신 환경에서 설정해 두면 재사용이 수월합니다.
  • uvm_config_db::set() 으로 regmodel을 주입하는 방법도 있지만, 직접 프로퍼티 할당이 가독성이 좋고 타입-세이프합니다.
  • 서브 환경 수가 많으면 foreach (subblk_envs[i]) subblk_envs[i].regmodel = ...; 패턴으로 일괄 전달.
  • lock_model() 이전에는 coverage 포함 여부·set_frontdoor() 등 커스터마이즈를 먼저 해 두어야 합니다.


 

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