지노랩 /JinoLab

[UVM] 5.6 백도어 액세스 ― “버스 안 타고 바로 레지스터를 두드려라” 본문

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

[UVM] 5.6 백도어 액세스 ― “버스 안 타고 바로 레지스터를 두드려라”

지노랩/JinoLab 2025. 5. 10. 11:28

 

1 | 백도어란?

  • **버스(Front-door)**를 거치지 않고 RTL 내부 신호에 직접 접근해
    peek()/poke()(읽기/쓰기) 또는 Back-door read()/write()를 수행하는 경로
    (UVM 용어로 HDL path access).
RAL API ──►  Front-door  ──►  DUT Reg
     │
     └────►  Back-door   ──►  RTL signal

2 | 왜 필요한가?

장점 설명

숨겨진 버그 발견 같은 물리 경로로 Write-Read 하면 “들어갈 때 깨지고 나올 때 복구”돼 버그가 가려질 수 있음. Back-door는 다른 경로라서 이 문제를 드러냄.
시뮬 시간 절감 초기 설정 레지스터 수천 개를 버스로 쓰면 수 ms·수 만 싸이클. Back-door는 0 time → “준비 단계”를 사실상 제거.
랜덤·리셋 테스트 가속 반복적 mirror()/update()/mirror() 에서 버스 트래픽 0.

3 | 구현 요소

  1. HDL 경로 지정
    • 슬라이스: “신호[LSB +: width]” 만 지정 가능.
    • 주소 맵 전체를 하나의 set_hdl_path_root() 로 이동시킬 수도 있음.
  2. R_CTRL.add_hdl_path_slice("dut_i.u_ctrl_reg", 0, 32); // 레지스터 MEM_BUF.add_hdl_path("dut_i.u_buf_mem"); // 메모리 SUB.default_map.set_hdl_path_root("dut_i.u_subblk"); // 서브-블록
  3. 어댑터 설정 (선택)
    • 버스 어댑터에서 supports_byte_enable=1 로 표시해도 back-door 가능.
  4. 경로 유지보수
    • RTL 계층 변경 시 HDL path 문자열이 깨짐 →
      Generator가 스펙(XACT) or RTL 네임맵에서 자동 추출 하도록 권장.
    • 시뮬 초기화에서 uvm_root::check_config_usage() 로 미설정 경로 확인.

4 | 사용 패턴

상황 권장 API

DUT 설정 model.reset(UVM_BACKDOOR); model.update(status, UVM_BACKDOOR);
상태 스냅샷 model.mirror(status, UVM_BACKDOOR);
RAM 내용 검증 mem.peek(status, addr, data);
버그 검증 이중 경로 ① front-door write ② back-door peek & compare

5 | 주의 사항 & 실무 팁

  • 다중 클록: 백도어로 값을 바꾼 뒤 즉시 Front-door 읽으면 클록 도메인 지연 때문에 mismatch로 보일 수 있음 → 안정화 시간(tsu) 고려.
  • SVA·Assertion: Back-door poke 시 설계 내부 SVA가 트리거될 수 있음 → 테스트 의도에 따라 disable 또는 #0 지연 후 poke.
  • 암호화 IP: 시뮬레이터 protect region 안에 있으면 직접 경로를 잡지 못할 수도 → DPI callback 또는 vendor backdoor API 사용.
  • 메모리 인스턴스가 많을 때: peek/poke 대신 메모리 BFM back-door 기능(Verilog $readmemh/$writememh) 호출이 훨씬 빠름.

6 | 요약

  1. 버그 노출 + 시뮬 가속 -- 백도어는 레지스터 / 메모리 검증의 필수 도구.
  2. add_hdl_path[_slice]() 로 경로를 등록하고, RAL API에서 UVM_BACKDOOR 선택.
  3. 경로 자동화(GEN)와 도메인 타이밍 주의로 유지보수를 최소화해야 한다.

 

 

 


 

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