해결된 질문
작성
·
284
1
맛비님이 주신 코드를 리눅스에서 그대로 실행한다면 위와 같은 문제는 발생하지 않습니다
하지만 https://www.inflearn.com/questions/289093 이 링크와 저와 같이
윈도우에서 직접 비바도를 실행해서 파형그래프를 보려고 시도하면 분명히 LED 파형 그래프가 정상적으로 나오지 않게 됩니다
맛비님께서도 설명했듯이
베릴로그에서 `ifdef - `else - `endif 문을 사용해서 변수들의 값을 미리 정의했습니다. 마치 C에서 #define 처럼 말입니다
(개인적인 생각으로는 C에서 헤더가드로 쓰는 #ifndef - #define - #endif 구조와 비슷하다고 생각했습니다)
이 변수를 미리 정의한 것이 베릴로그는 알지만 Vivado의 시뮬레이션 툴은 위 정의 값을 알지 못합니다
따라서 LED 파형 값이 이상하게 나옵니다.
맛비님은 아래 링크를 걸어주셨습니다. 하지만 아래 링크의 그림은 너무 옛날 것이고 제가 해본 결과 잘 작동하지는 않습니다.
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 파형이 정상적으로 나오는 것을 확인 하실 수 있습니다.