UVM Tutorial (UVM 튜토리얼)

UVM (Universal Verification Methodology) 이란?

 UVM (Universal Verification Methodology)은 업계 전반에서 검증 환경 및 검증 IP(VIP)의 빠른 개발 및 재사용을 가능하게 하는 표준입니다.
보다 구체적으로 SystemVerilog(IEEE 1800)의 구문과 의미를 사용하여 정의된 클래스 라이브러리 세트이며 현재 IEEE 표준입니다.
UVM의 주 요 아이디어는 여러 프로젝트에 배포할 수 있는 API 프레임워크를 제공하여 기업이 모듈식, 재사용 가능 및 확장 가능한 테스트벤치 구조를 개발하도록 돕는 것입니다.

UVM의 구동 원리

 UVM은 어떤 하드웨어 모듈이든 검증할 수 있지만, 특히 BUS 인터페이스를 사용하는 환경에서는 UVM의 효과가 크다고 합니다.
예를 들어 AXI, AHB, PCIe와 같은 표준 프로토콜을 통해 데이터를 주고받는 경우, UVM을 사용하여 복잡한 부분을 단순화하고 시뮬레이션 속도를 떨어뜨리지 않으면서 효율적으로 검증할 수 있습니다.
이를 TLM(Transaction Level Modeling)이라고 부릅니다.

UVM 기본 구조
UVM 기본 구조

검증 과정에서는 uvm_driver가 중요한 역할을 합니다. uvm_driver는 uvm_sequencer로부터 uvm_sequence_item을 가져와 해당 내용을 기반으로 하드웨어 인터페이스를 제어합니다.

예를 들어 AXI의 경우, uvm_sequence_item에 주소와 값을 전달 받으면, 그 정보를 바탕으로 AXI 인터페이스의 채널에 데이터를 쓰고 응답을 받는 과정을 수행합니다.

또한, UVM에서는 DUT(Device Under Test)의 동작을 확인하기 위한 중요한 절차가 있습니다.
uvm_agent의 uvm_driver를 통해 DUT에 전달된 정보를 기반으로 DUT가 제대로 동작하는지 확인합니다.
이를 위해 uvm_monitor에서부터 uvm_scoreboard까지 정보가 전달되고, scoreboard는 이 정보를 비교하여 DUT의 동작을 검증합니다.

OVM에서 파생된 검증 방법론과 유틸리티

UVM은 주로 OVM( Open Verification Methodology )에서 파생되며 Synopsys, Cadence, Mentor 및 Aldec과 같은 여러 EDA 공급업체에서 지원합니다.
 UVM 클래스 라이브러리는 복사, 인쇄 및 비교와 같은 데이터 자동화 기능 외에도 구성 데이터베이스, TLM 및 구성 요소 계층과 같은 일반 유틸리티를 제공합니다.
 이는 검증 환경의 모든 구성 요소가 특정 역할을 갖는 추상화 계층을 가져옵니다.
예를 들어, 드라이버 클래스 객체는 신호를 설계에 전달하는 역할만 하는 반면, 모니터는 설계 인터페이스만 모니터링 하고 해당 인터페이스에 신호를 전달하지 않습니다. 이러한 구성 요소에는 서로 연결하고 데이터패킷을 처리하며 다른 구성 요소와 동시에 작업할 수 있도록 하는 데 필요한 코드가 이미 있습니다.

UVM의 새로운 기능과 API로 인한 프레임 워크의 이해

 새로운 기능이 추가되고 일부 이전 기능이 사용되지 않는 많은 개정판을 거칩니다.
UVM에 대한 참조 설명서는 여기에서 얻을 수 있으며 클래스 계층 구조, 기능 및 작업에 대한 설명이 포함되어 있습니다.
구현에 사용할 수 있는 광범위한 API로 인해 신규 사용자에게는 압도적일 수 있습니다.
따라서 프레임 워크를 부분적으로 이해하려면 좀 더 훈련된 접근 방식이 필요합니다.

다음 이전

POST ADS 2