UVM Reporting Mechanism - UVM Severity
·
이론 공부/UVM (Universal Verification Methodology)
uvm_warning, uvm_error, uvm_fatal은 UVM의 로깅 매크로 중에서도 문제 상황을 알리는 용도로 자주 사용되는 매크로라고 설명했었다.`uvm_warning("ID", "This is a warning message");`uvm_error("ID", "This is an error message");`uvm_fatal("ID", "This is a fatal message"); UVM은 특정 메시지의 심각도(severity)를 변경하는 기능을 제공한다. set_report_severity_id_override()는 특정 ID에 대해 severity level을 다운그레이드 또는 변경할 때 사용하는 함수로, 이를 활용하면 테스트 도중 치명적이지 않은 메시지는 살리고, 정말 중요한 오류..
UVM Reporting Mechanism - `uvm_info (2)
·
이론 공부/UVM (Universal Verification Methodology)
Verbosity 레벨에 대해 더 자세히 알아보자. 아래 코드는 Verbosity 레벨을 설정하는 두 가지 방법을 보여준다. 첫 번째는, 코드 내부에서 set_report_verbosity_level()을 통해 명시적으로 설정해주는 방법이다. 만약 하위 계층에도 Verbosity를 설정해주고 싶다면, set_report_verbosity_level_hier() 함수를 사용하자.`include "uvm_macros.svh"import uvm_pkg::*; //////////////////////////////////////////////////class driver extends uvm_driver; `uvm_component_utils(driver) function new(string path ,..
UVM Reporting Mechanism - `uvm_info (1)
·
이론 공부/UVM (Universal Verification Methodology)
이제 실제 코드를 통해 UVM 환경을 구성해보자.include "uvm_macros.svh"import uvm_pkg::*; UVM 테스트벤치에서 필수적으로 사용되는 기본 설정이다.uvm_macros.svhUVM에서 제공하는 매크로 정의 파일을 포함한다.예: `uvm_info, `uvm_component_utils, `uvm_field_*, `uvm_error` 등의 매크로가 여기에 정의되어 있음. import uvm_pkg::*;uvm_pkg라는 패키지에 있는 클래스, 함수, 변수 등을 전부 불러오는 명령어이다.예: uvm_component, uvm_test, uvm_env, uvm_agent, uvm_sequence, uvm_sequencer, uvm_report_object 등 모든 UVM 클래..
리눅스 시스템 구조와 부트 과정 이해(1) - dmesg, 부트로더
·
Linux/Embedded Linux
Raspberry Pi 4 의 부팅 로그 화면이다. (dmesg) 명령어를 통해 확인할 수 있으며, 리눅스 커널이 부팅되는 과정에서 출력하는 메시지를 보여준다. 시스템 하드웨어 초기화 및 커널 기능 활성화 상태 등을 확인할 수 있다.1. dmesg를 통한 부트 메세지 분석[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083][ 0.000000] Linux version 6.6.31+rpt-rpi-v8 (serge@raspberrypi.com) (gcc-12 (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT Debian 1:6.6.31-..
Pytorch 환경 구성
·
이론 공부/Python (Pytorch)
​PyTorch는 Meta에서 개발한 오픈 소스 딥러닝 프레임워크로, 주로 컴퓨터 비전, 자연어 처리, 강화 학습 등 다양한 인공지능 분야에서 사용된다. Python과의 높은 호환성과 유연한 설계로 인해 사실상 Keras를 제치고 연구자와 개발자 사이에서 널리 채택되고 있는 상황이다.이러한 차이점을 갖는다 하는데, 우선 사용해보면서 차이점에 대해 차차 알아보자.1. Anaconda 설치Anaconda는 Python에 데이터 과학과 머신러닝 작업에 필요한 다양한 도구와 라이브러리를 통합하여 사용하기 편리하게 만든 배포판(distribution)을 뜻한다. 쉽게 말해서 많이 사용하는 라이브러리(명령어, 함수들)가 포함되어 있는 Python이여서 나중에 이것저것 깔 필요가 없다는 뜻! Index of /arc..
AMBA AXI BUS - AXI4 VIP
·
AMBA BUS/AXI BUS
Vivado에서 제공하는 AXI4 VIP (Verification IP)는 AXI 버스를 테스트하거나 시뮬레이션할 때 사용하는 모델이다. RTL 설계자가 AXI 인터페이스를 가진 IP를 만들었을 때, 그것이 정상적으로 AXI 프로토콜을 따르고 있는지 검증하는 용도로 사용된다.내가 만든 RTL 모듈이 AXI4 Slave인데, Master가 아직 없어서 테스트 못 하겠음... 이럴 때, AXI4 VIP를 Master 역할로 연결해놓고 다양한 read/write 시나리오를 흘려보낼 수 있다.반대로, 내가 만든 RTL이 Master일 때, VIP를 Slave로 연결해서 응답을 테스트할 수 있다."Verify Peripheral IP using AXI4 VIP" 이 옵션을 선택하면, Vivado가 아래와 같은 검..
UVM Project - 4BIT Multiplier
·
PROJECTS/UVM (Universal Verification Methodology)
이제까지는 UVM-like 스타일로 구조만 흉내 냈다면, 이번엔 실제 UVM 패키지를 사용해서 정식 UVM 환경에서 테스트를 진행해보자. UVM의 시퀀스, 드라이버, 모니터, 스코어보드 등 표준 클래스를 활용해 더 구조화된 검증 환경을 구성한다.module mul( input [3:0] a,b, output [7:0] y); assign y = a * b; endmodule /////////////////////////////////////////// interface mul_if; logic [3:0] a; logic [3:0] b; logic [7:0] y; endinterface아주 심플한 4비트 곱셈기(a * b) 모듈과 그에 대응되는 인터페이스 정의이다.`include "uvm..
Testbench Project - FIFO
·
PROJECTS/UVM (Universal Verification Methodology)
이제 배운 내용을 바탕으로 UVM 형태의 Testbench를 작성해보자. 우선 DUT인 FIFO를 설계한다.`timescale 1ns / 1psmodule FIFO #( parameter DATA_WIDTH = 8, parameter ADDR_WIDTH = 4) ( input logic clk, input logic reset, input logic we, input logic re, input logic [DATA_WIDTH-1:0] d_in, output logic [DATA_WIDTH-..