지노랩 /JinoLab

[UVM] 5.9 레지스터 모델 통합 ― 버스 에이전트와 모델을 연결하는 3가지 방식 본문

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

[UVM] 5.9 레지스터 모델 통합 ― 버스 에이전트와 모델을 연결하는 3가지 방식

지노랩/JinoLab 2025. 5. 17. 11:58

 

1 | 왜 “통합(Integration)”이 필요한가?

  • 레지스터 모델미러 값만 갖고 있다.
  • 버스 에이전트(드라이버·모니터) 가 실제 DUT에 read/write 를 수행·관측한다.
  • 두 세계를 연결해 미러 ↔ DUT 값을 일치시켜야 테스트·커버리지가 정확해진다.

통합 대상은 반드시 “루트 블록(root block)”
– 즉, 외부 주소 공간을 직접 보는 최상위 레지스터 모델만 버스와 연결한다.

if (regmodel.get_parent() == null) begin
    // 여기가 루트 RAL – 버스 통합 수행
end

2 | 통합 방식 3가지

방식 필요 연결 미러 갱신 방식 특징

① 묵시적(Implicit) Prediction • 버스 Sequencer RAL 내부가 read/write/peek/poke 끝날 때 자동 예측 구현 가장 단순. → 제3의 마스터 트랜잭션은 감지 못함.
② 명시적(Explicit) Prediction • 버스 Sequencer• 버스 Monitor• uvm_reg_predictor Monitor가 관측한 TX를 predictor 가 RAL-주소 역추적 후 reg.predict() 호출 모든 트랜잭션 반영. 구현·연결이 다소 복잡.
③ 패시브(Passive) 모드 • 버스 Monitor• uvm_reg_predictor Sequencer 연결 없음 → RAL 스스로 R/W 하지 않음 읽기/쓰기 자체는 외부(SW, 타 BFM) 가 수행, RAL은 값 추적·검증만.

3 | 통합 코드 스케치

3-1 Implicit Prediction (가장 간단)

// connect_phase
ral_root.default_map.set_sequencer(p_sequencer);   // 끝!
  • Sequencer 가 RAL 시퀀스 요청을 실행하고, 완료 후 RAL 내부가 미러 값을 갱신한다.

3-2 Explicit Prediction

// build_phase
predictor = uvm_reg_predictor#(bus_tx)::type_id::create("predictor", this);
predictor.map         = ral_root.default_map;
predictor.adapter     = bus2reg_adapter;
predictor.bus_in      = bus_mon.ap;   // monitor analysis 포트
predictor.sqr         = p_sequencer;  // optional – RAL R/W에 사용

// connect_phase
bus_mon.ap.connect(predictor.bus_in);
ral_root.default_map.set_sequencer(p_sequencer);
// 묵시적 예측 끄기
ral_root.set_auto_predict(0);

3-3 Passive Integration

predictor = uvm_reg_predictor#(bus_tx)::type_id::create("predictor", this);
predictor.map     = ral_root.default_map;
predictor.adapter = bus2reg_adapter;
bus_mon.ap.connect(predictor.bus_in);

// Sequencer 연결·auto_predict 모두 없음
  • 테스트벤치가 직접 버스 BFM으로 레지스터를 조작(혹은 펌웨어가 수행)
  • RAL은 감시 + 검증 역할만.

4 | 장단점 비교

항목 Implicit Explicit Passive

구현 난이도 ★☆☆ ★★☆ ★★☆
외부 마스터 반영 불가 가능 가능
RAL 통해 R/W 가능 가능 불가
속도 가장 빠름 약간 오버헤드(프레딕터) 모니터만 – 중간
추천 시나리오 단일 BFM, FW 없음, 초기 bring-up HS 버스, DMA·CPU 등 다중 마스터 SoC 수준 FW 테스트, RAL은 체크 전용

5 | HDL 경로(root path) 지정

루트 환경에서만 지정:

regmodel.set_hdl_path_root("tb_top.dut");

하위 환경들은 상위가 넘겨준 regmodel 을 그대로 사용하므로, 경로를 다시 설정할 필요가 없다.



 

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