인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

움직이는YM님의 프로필 이미지
움직이는YM

작성한 질문수

설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)

LED 깜박이기 LED 파형 그래프 오류 해결법

해결된 질문

작성

·

284

1

맛비님이 주신 코드를 리눅스에서 그대로 실행한다면 위와 같은 문제는 발생하지 않습니다

하지만 https://www.inflearn.com/questions/289093 이 링크와 저와 같이 

윈도우에서 직접 비바도를 실행해서 파형그래프를 보려고 시도하면 분명히 LED 파형 그래프가 정상적으로 나오지 않게 됩니다

맛비님께서도 설명했듯이

`ifdef XSIM_MATBI
wire [31:0] w_i_cnt_th_25M = 32'd25;
wire [31:0] w_i_cnt_th_50M = 32'd50;
wire [31:0] w_i_cnt_th_100M = 32'd100;
wire [31:0] w_i_cnt_th_200M = 32'd200;
`else
wire [31:0] w_i_cnt_th_25M = 32'd25000000;
wire [31:0] w_i_cnt_th_50M = 32'd50000000;
wire [31:0] w_i_cnt_th_100M = 32'd100000000;
wire [31:0] w_i_cnt_th_200M = 32'd200000000;
`endif

 베릴로그에서 `ifdef - `else - `endif 문을 사용해서 변수들의 값을 미리 정의했습니다. 마치 C에서 #define 처럼 말입니다
(개인적인 생각으로는 C에서 헤더가드로 쓰는 #ifndef - #define - #endif 구조와 비슷하다고 생각했습니다)

이 변수를 미리 정의한 것이 베릴로그는 알지만 Vivado의 시뮬레이션 툴은 위 정의 값을 알지 못합니다

따라서 LED 파형 값이 이상하게 나옵니다.

Vivado의 시뮬레이션 툴에게 위 정의값을 알려줘야 합니다

맛비님은 아래 링크를 걸어주셨습니다. 하지만 아래 링크의 그림은 너무 옛날 것이고 제가 해본 결과 잘 작동하지는 않습니다.

https://forums.xilinx.com/t5/Simulation-and-Verification/How-to-send-define-value-to-simulation/td-p/696151

 

따라서 직접 해본 것(=비바도의 시뮬레이션 툴에게 내가 정의한 변수값을 알려주는 방법)을 스샷으로 공유하고자 합니다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

위 사진과 같이 Setting을 마우스 왼쪽 버튼으로 눌러주시면 옆쪽과 같은 창이 뜹니다. 옆쪽 창에서 Simulation을 누르세요

Simulation창에서 Compliation을 누르면 아래 빨간색 박스가 보이십니다.

맛비님 링크에 따르면 빨간색 박스중 1번 박스에만 값을 넣으라고 되어 있습니다

하지만 제가 해본 결과 그냥 1,2,3번 박스에 전부 값을 넣어야 작동을 했습니다

값을 넣는 규칙은 간단합니다 -d <정의한 이름> 입니다

<정의한 이름>이란 `ifdef <이름>에서 <이름>입니다

맛비님의 경우 `ifdef XSIM_MATBI 임으로 -d XSIM_MATBI을 넣어주고 apply -> OK를 하면 됩니다

 

이때, 시뮬레이션으로 돌아가서 restart(ctrl + shift +f5) -> RUN all(F3)을 누르시면 LED 파형이 정상적으로 나오는 것을 확인 하실 수 있습니다.

 

답변 1

1

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

gui에서 sim 을 확인하고 계셨군요 :)

정리 감사합니다. 굿!! 입니다.

즐공하세요 :)

움직이는YM님의 프로필 이미지
움직이는YM

작성한 질문수

질문하기