UVM이란?
UVM(Universal Verification Methodology)은 SystemVerilog 기반의 표준 검증 프레임워크로, 디지털 회로와 SoC 검증에 사용되며 반도체 업계의 사실상 표준으로 자리잡았다.
UVM의 주요 목적은 모듈화, 재사용성, 표준화된 테스트벤치 환경 제공이다.
프레임워크(Framework)라는 단어가 중요한데, 프레임워크란 미리 정의된 구성 요소와 규칙이 있는 개발 틀을 의미한다. 이 틀을 따르면 서로 다른 환경에서도 동일한 방식으로 검증을 수행할 수 있어 재사용과 확장이 쉽다.
UVM 주요 구성 요소
UVM은 테스트벤치 구축을 위해 미리 정의된 다양한 클래스와 기능을 제공한다.
- Testbench Components
- Driver, Monitor, Scoreboard, Agent 등
- uvm_* 클래스를 상속해 구현
- Transactions
- DUT ↔ TB 간 데이터 교환 단위 (Sequence Item)
- Phases
- TB 생성·초기화·실행 순서를 제어하는 시뮬레이션 단계
- Messaging & Reporting
- 로그, 경고, 에러 출력
- Configuration DB
- TB 설정값 저장·전달
- Functional Coverage
- 기능 검증 범위 측정
- Register Abstraction Layer (RAL)
- 레지스터 맵 접근/검증 단순화
궁극적으로, 이 구성 요소들을 학습해야 한다.
UVM 철학
“각자 제각각 구조의 테스트벤치를 만들지 말고, 업계 표준화된 구조와 방법론을 사용해서 재사용성과 호환성을 높이자."
UVM 이전에는 다음과 같은 문제가 있었다.
- 회사·개인마다 TB 구조가 제각각 → 재사용 불가능
- 프로젝트가 바뀌면 TB를 처음부터 다시 작성
- 툴·팀 간 TB 공유와 확장이 어려움
UVM은 이러한 문제를 해결하기 위해 공통된 구조와 규칙을 정의했다.
"모두 각자의 방식대로 만들지 말고, 미리 약속된 표준화된 규칙(UVM 프레임워크)에 따라 테스트벤치를 만들자"
는 것이 핵심이다.
따라서 UVM을 학습할 때, 단순히 클래스나 메서드 사용법을 외우는 것을 넘어 "이 컴포넌트가 UVM이라는 거대한 약속 속에서 어떤 역할을 하는가?"를 계속 생각하면 학습에 큰 도움이 될 것이다.
UVM 철학 핵심 키워드
- 표준화 – 동일한 클래스 계층 구조(Env, Agent, Driver, Monitor 등)
- 재사용성 – 다른 프로젝트·DUT에 재활용 가능
- 호환성 – Cadence, Synopsys, Siemens 등 툴 간 동일하게 동작
- 확장성 – Factory Override, Config DB로 수정 없이 변경 가능
- 유지보수성 – 공통 패턴 덕에 유지보수가 쉬움
UVM 학습을 위한 선행 지식
UVM은 SystemVerilog를 기반으로 하는 프레임워크이다. 따라서 UVM을 제대로 활용하기 위해서는 SystemVerilog 언어에 대한 충분한 이해가 선행되어야 한다.
댓글