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-..
MNIST Classification on FPGA - 09. FPGA에 Bitstream 올리기
·
PROJECTS/AI 가속기
가장 기대는 순간이다.. 앞선 게시물들을 보면 굉장히 쉽게 쉽게 진행한것 같지만 그동안 설계, 시뮬레이션, 합성까지 수백번은 돌리고 확인했는데, 막상 올렸을 때 동작을 안한다면.... 끔찍하다.우선 비트스트림은 원활하게 생성되었다. 또한 BASYS-3 보드를 기준으로 리소스도 넉넉하게 남는 것을 확인할 수 있다. 테스트로 사용된 이미지는 4를 사용했다. 최종 결과는 LED를 통해 디버깅할 수 있도록 설정하였고.... 올바르게 작동하는 것을 확인할 수 있었다!! 해당 이미지 외에도 몇가지 이미지를 올려봤을 때에도 정상 동작하는 것을 확인!기존에 설계한 OV7670과 결합하여 실시간으로 숫자를 감지하는 모듈을 설계 중
MNIST Classification on FPGA - 08. Testbench
·
PROJECTS/AI 가속기
Testbench를 확인할 시간이다. 각 MAC 코어에 값이 올바르게 업로드되고 연산이 진행되는지 Testbench를 통해 알아보자.우선 LAYER 1에 대한 연산 결과이다. 연산 순서는 다음과 같다.4개의 코어에서 동시에 4개의 인풋에 대한 연산을 진행한다.하나의 OUTPUT NODE에 대한 연산이 종료되면 4개 코어의 값을 모두 더한다.더해진 OUTPUT NODE 값은 Relu를 거쳐 BRAM에 저장한다.모든 OUTPUT NODE에 대한 연산이 완료될 때까지 1 ~ 3 과정을 반복한다.[INPUT 000] 7 * 3 = 21[INPUT 001] 0 * 2 = 0[INPUT 002] 0 * 3 = 0[INPUT 003] 0 * -..
MNIST Classification on FPGA - 07. HW 구성
·
PROJECTS/AI 가속기
이전 병렬구성의 실패를 교훈 삼아, HW 구성을 어떻게 할지 생각하는데에 시간을 가장 많이 쏟은것 같다.원래 CNN 구조로 설계를 할 때에는 Line Buffer를 이용할 생각이었는데, FCN에서는 윈도우가 아닌 Flatten Map 형태로 연산이 진행되기 때문에, 간단한 파이프라인 구조를 설계하였다. 플로우차트는 다음과 같으며, 실질적인 클럭이 소모되는 부분은 붉게 표시하였다. Load from BRAM 입력 데이터와 가중치를 BRAM에서 불러온다.Accumulate Multiply-Accumulate (MAC) 연산을 통해 입력 값과 가중치를 누산한다.단일 출력 노드 계산 완료 여부 판단 현재 출력 노드에 대한 모든 입력을 처리했는지 확인한다. 아니라면 누산을 계속한다.Relu OR SOFTMAX 적..