범용 검증 방법론
Universal Verification Methodology범용 검증 방법론(UVM)은 통합 회로 설계를 검증하기 위한 표준화된 방법론이다.UVM은 주로 2001년 Verisity Design에서 개발한 e 검증 언어에 대한 eRM(e Reuse Methodology)을 기반으로 한 OVM(Open Verification Methodology)에서 파생되었다.UVM 클래스 라이브러리는 시퀀스 및 데이터 자동화 기능(패킹, 복사, 비교)과 같은 시스템Verilog 언어에 많은 자동화를 가져오며 시뮬레이터 공급업체에 의해 독립적으로 개발된 이전의 방법론과 달리, Aldec, Cadence, Mentor Graphics, Synopsys, Xil 등 여러 공급업체의 지원을 받는 Accelera 표준이다.inx Simulator(XSIM)
역사
2009년 12월, Accellera를 기술 소위원회가 전자 설계 자동화(EDA)산업 —에 표준 단체가 universalvendermark통일 벤더 마크를 설립하기 위해 투표를 많이 하고, 열기 검증 방법론에 대한 검증 방법 공동으로 2007년 Cadence 설계 시스템과 멘토 Graphi에 의해 개발된(OVM-2.1.1)[1]이 새로운 표준 두기로 결정했다 —.cs.
2011년 2월 21일 Accelera는 1.0 버전의 UVM을 승인했다.[2] UVM 1.0에는 참조 가이드, SystemVerilog 기본 클래스 라이브러리 형식의 참조 구현 및 사용자 가이드가 포함되어 있다.[2]
공장
공장은 객체 지향 프로그래밍에서 흔히 사용되는 개념이다.그것은 다른 물체를 인스턴스화하는 데 사용되는 물체다.UVM 공장에 오브젝트를 등록하는 방법에는 두 가지가 있다.클래스 A의 선언에서는 'uvm_object_utils(A)' 또는 'uvm_component_utils(A) 등록 매크로를 호출할 수 있다.그렇지 않으면 'uvm_object_registry(A,B)' 또는 'uvm_component_registry(A,B)' 매크로를 사용하여 문자열 B를 클래스 유형 A에 매핑할 수 있다.[3]UVM 공장은 사용자가 특정 인스턴스(instance) 이름과 등록된 유형의 개체를 인스턴스화할 수 있는 다양한 생성 방법을 제공한다.[4]
시퀀서
시퀀서는 다음 세 가지 주요 기능을 담당한다.
- DUV(Design Under Verification) 및 검증 환경을 초기화 상태로 전환
- 검증 환경 및 DUV 구성
- 전체 DUV 시나리오 생성
초기화
이 단계에서 DUT(Device Under Test)와 DUT가 있는 환경을 시뮬레이션 전에 원하는 조건으로 설정해야 한다.여기에는 다음이 포함될 수 있다.
- 필요한 초기 조건 유형에 관계없이 메모리 로드
- 전원 및 고임피던스와 같은 DUT의 핀 설정
- 모드 비트와 같은 시뮬레이션 중에 변경할 수 없는 설정 또는 환경의 일부가 등록되는 경우
- 시뮬레이션 중에 변경할 수 없는 검증 구성 요소 설정
스코어보드
설명
점수판은 다양한 방법으로 구현될 수 있다.일반적으로 스코어보드는 DUT로 입력을 가져오고 출력하여 입출력 관계를 결정하고 DUT가 규격을 준수하는지 여부를 판단한다.이러한 입출력 관계는 흔히 예측 변수라고 불리는 모델에 의해 지정된다.[5]예측 변수는 SystemC와 같은 더 높은 수준의 프로그래밍 언어로 구현될 수 있다.
구현 세부 정보
UVM 스코어보드 클래스는 uvm_scoreboard 클래스의 하위 클래스로 구현되며, 그 자체가 uvm_component의 하위 클래스다.uvm_vmboard는 스코어보드 구현을 위한 백지 슬레이트다.그것은 오직 하나의 클래스 방법, 즉 "새로운" 생성자 방법만을 포함한다.구현의 나머지 부분은 사용자 정의로 되어 있다.[6]
에이전트
설명
현대 VLSI에서 DUT는 여러 인터페이스를 가질 수 있다.이러한 인터페이스 각각은 서로 다른 UVM 객체를 가지고 있을 수 있다.예를 들어 DUT가 풀칩인 경우 PCI, 이더넷 및 기타 통신 표준을 위한 별도의 인터페이스가 있을 수 있다.PCI 인터페이스의 스코어보드와 모니터는 이더넷 인터페이스의 스코어보드와 다를 것이다.다양한 UVM 객체는 에이전트라고 알려진 래퍼 클래스의 구성원으로 구성될 수 있다.패시브 에이전트는 인터페이스의 포트 값만 분석하며 모니터 멤버를 포함해야 한다.활성 에이전트는 포트를 구동하며, 모니터 멤버 외에 드라이버 멤버를 포함해야 한다.[7]
구현 세부 정보
UVM 에이전트 클래스는 uvm_에이전트 클래스의 하위 클래스로 구현되며, 그 자체가 uvm_component의 하위 클래스인 것이다.uvm_scoreboard와 마찬가지로 uvm_에이전트는 클래스 방식 면에서 경량이다.그것의 유일한 클래스 방법은 "새로운" 생성자와 "get_is_active" 방법이다.에이전트가 포트를 구동하는 데 사용되는 경우 get_is_active는 UVM_Active를 반환한다.그렇지 않으면 get_is_active가 UVM_PASSive를 반환한다.
드라이버
설명
시험의 순서 항목을 추상적으로 기술한다.예를 들어, DUT가 레지스터 파일인 경우, DUT는 읽기 주소와 쓰기 주소를 위한 포트를 가질 수 있다.시퀀스 항목 개체는 읽기 주소와 쓰기 주소에 대한 멤버 변수를 가질 수 있다.그러나 이러한 값은 결국 DUT의 입력 핀에서 비트가 되어야 한다.[8]심지어 DUT에 자극을 제공할 때 사용되는 이국적인 인코딩이 있을 수 있으며, 이 인코딩은 나머지 에이전트에서 추상화되어야 한다.운전자의 책임은 이러한 순서 항목을 취하여 DUT의 포트에 적절한 자극을 제공하는 것이다.[5]
구현 세부 정보
UVM 드라이버 클래스는 uvm_driver 클래스의 하위 클래스로 구현되며, 그 자체가 uvm_component의 하위 클래스인 것이다.[6]
정의들
- 에이전트 - DUT 장치를 에뮬레이션하고 확인하는 컨테이너
- 차단 - 완료될 때까지 다른 인터페이스에서 태스크를 차단하는 인터페이스
- DUT - 테스트 대상 장치, 실제 테스트 대상
- DUV - 확인 중인 장치
- 구성 요소 - 인터페이스와 기능을 갖춘 검증 지적 재산의 일부.
- 트랜스액터 - 구성 요소 참조
- 검증 환경 구성 - 시뮬레이션이 실행되는 동안 변경할 수 있는 DUT 및 환경의 설정
- VIP - 검증 지식재산
UVM 매크로
UVM을 통해 매크로 사용 가능
이름을 붙이다 | 기능을 하다 | 와 관련된 | 매개변수. | 목적 | 매크로 유형 |
---|---|---|---|---|---|
'uvm_create' | 객체 생성자 | 'uvm_send' | 시퀀스 또는 항목 | 개체를 생성하고 사용자가 오버로드 또는 매개 변수 전달을 통해 값을 설정할 수 있도록 허용 | 시퀀스 액션 매크로 |
'uvm_send' | 프로세서 | 'uvm_create' | 시퀀스 또는 항목 | 무작위화 없이 'uvm_create'로 생성되는 프로세스 | 기존 시퀀스에 대한 시퀀스 작업 매크로 |
uvm_do | 프로세서 | 'uvm_create' | 시퀀스 또는 항목 | 클래스 또는 항목을 임의로 실행 | 시퀀스 액션 매크로 |
참조
- ^ 액셀라 상태
- ^ a b "404".
{{cite web}}
:Cite는 일반 제목(도움말)을 사용한다. - ^ "Universal Verification Methodology (UVM) 1.2 User's Guide" (PDF). p. 130.
- ^ "UVM Factory".
- ^ a b https://www.accellera.org/images/downloads/standards/uvm/uvm_users_guide_1.2.pdf[bare URL PDF]
- ^ a b https://www.accellera.org/images/downloads/standards/uvm/UVM_Class_Reference_Manual_1.2.pdf[bare URL PDF]
- ^ "UVM Rapid Adoption: A Practical Subset of UVM" (PDF). p. 10.
- ^ "UVM Sequence item".
외부 링크
- 액셀레라 사이트
- Doulos UVM 검증 프라이머
- Accelerera UVM: 준비, 설정, 구축!
- EDA Playplace - 웹 브라우저에서 UVM 시뮬레이션 실행(무료 온라인 IDE)
- UVM 1.2 클래스 참조
- UVM 1.2 비디오 시리즈의 새로운 기능