Xilinx Vivido 를 이용하여, 가장 간단한 Verilog 소스, hello world 를 실행 하는 안내입니다.
Create Project 와 source 작성, simulation 실행하여, 결과를 확인하는
가장 기초적인 사용법을 안내이며, 기계와의 대화, 개발 tool과의 대화 의 시작입니다.
아울러 Vivado tool의 정상 설치 여부도 확인 하게 됩니다.
개발에 사용되는 모든 language는, 실행하기 위해 개발 tool, compiler 등이 필요합니다.
verilog 역시 예외가 아닙니다.
과거의 tool 이나 compiler 들은 실행이 간단했습니다.
그러나 현재의 개발 tool들은 메뉴가 복잡하고, 다양한 기능으로 인해
혼자 학습하며 시작하기 어려워 졌습니다.
이에 hello word 라는 가장 간단한 소스를 입력, 실행하는 기본 과정이 생겨났습니다.
Vivado 는 통합 개발 환경 ( IDE ) 이므로, editor를 내장하고 있습니다.
물론, 선호하는 별도의 editor를 사용해도 무방합니다.
참고로, Xilinx tool은, Windows 버전, linux 버전 모두 동일합니다.
실제 hello world 실행 과정은 다음과 같습니다.
1. Vivado 실행.
작업하려는, project 를 click 하면, Project 가 열립니다. ( 자동 Open Project 실행 )
그리고, Vivado 최초 실행시는, 작업한 project가 없으므로,
Recent Projects 보이지 않습니다.
위 화면에서, Quick Start 아래, Create Project 를 눌러, project 만들기를 시작합니다.
2. Create Project 과정
next 를 눌러 진행합니다.
create실행후 나오는 Project name은 project_1 입니다.
project 에 맞게 hello_world 로 정했습니다. 다르게 해도 괜찮습니다.
Project location에는, project를 저장/관리할 상위의 작업 directory를 지정합니다.
우측의 ( · · · ) box를 눌러, 만들고 선택할 수 있습니다.
진행 과정은, D:\xilinx_work directory(folder) 를 만들어, 사용하는 예입니다.
directory path(경로)와 file name은, 영어로만 되어 있어야 합니다.
다른 언어가 포함된 경로는(한글 등), Vivado 설치/사용시 문제가 발생합니다.
linux 에서는, 계정의 home directory에 만드는 것을 추천합니다.
(유저 계정이 gildong 이라면, /home/gildong 위치가 home dir. 입니다.)
계정의 home 외에는, 권한 문제로 몇가지 귀찮은 작업이 필요합니다.
물론, 기본 계정을 root 로 사용할 수 있으나, linux 보안 정책에 의해
desktop / 다른 app / package 등의 사용에 문제를 일으켜,
해결이 쉽지 않은 경우가 있습니다. 추천하지 않습니다.
아래쪽의 check box, Create Project Subdirectory는 선택된 상태로 진행합니다.
그렇지 않으면, 지정된 작업 directory 자체가, project directory로 됩니다.
즉, 여러 project 를 만들고 관리하는 working directory가 없는 형태인데,
추천하지 않습니다
project type은 RTL Project 로 선택하고 next 를 눌러 진행합니다.
그 아래의 checkbox 를 선택하면, 기본 verilog source file을 만들거나, 추가하지 않고,
빈(empty) project 를 만들게 됩니다. uncheck 상태로 진행 하면 됩니다.
project 에 source file 추가 하는 창 입니다.
Add Files 버튼은, 기존 source file 들을 각각 지정하여 추가할 때
Add Directory 버튼은, 특정 directory 내의 기존 source를 추가할 때,
Create File 버튼은, 새로운 source 을 만들어 추가할 때 사용합니다.
그 아래의 check box 항목 들은 다음과 같습니다.
Scan and add RTL include files into project
추가할 source file 에서 필요한 include file들을 자동 추가하는 설정입니다.
Copy sources into project
기존 source file을 지정, 추가할 때, project 내에 복사본을 만들고, 복사본을 추가합니다.
uncheck 상태면, 해당 source의 원본이 project 에 추가됩니다.
초보자의 경우, check 하고 사용할 것을 추천합니다.
Add sources from subdirectories
source directory 지정시, 하위의 subdirectory내 source도 추가합니다.
unckeck 면, 지정된 directory에서, subdirectory를 제외한 source만 추가합니다.
hello_world.v 를 새로 만들어 넣기 위해, Create file을 눌러 진행합니다.
Create File 을 누르면 나오는 화면입니다.
File name 에 hello_world 를 입력합니다. 다르게 넣어도 됩니다.
확장자는, File type으로 자동 지정됩니다.
만드려는 file type이 Verilog 이고, 맞게 지정되어 있으므로, 그대로 합니다.
VHDL이나, SystemVerilog 도 만들수 있습니다.
OK 를 눌러 진행합니다.
추가될 source list 에 hello_world.v 가 등록 된 화면입니다.
list의 위쪽에 있는 plus, minus 를 눌러, list에서 source 추가, 삭제가 가능합니다.
source 가 추가되었으면, Next> 를 눌러 진행합니다.
Constraints file은, verilog( 또는 VHDL, SystemVerilog ) source 에서
지정하거나 표현할 수 없는 부분에 대한, 별도 설정 파일입니다.
예를 들면, FPGA 의 pin 지정이나, clock 의 attribute, timing 관련 설정들 입니다.
hello world 에서 필요하지 않으며, 또한, 나중에 추가 할 수 있습니다.
Next>로 진행합니다.
project 에 사용할 Xilinx device 선택창 입니다.
지정하지 않고 진행할 수 없으며, fpga device와 board 에서 한가지를 선택해야 합니다.
위의 list 창은, device를 선택하는 메뉴인데, hello world는 아무거나 상관없습니다.
또한, 위 창이 열릴시, default로 선택되어 있는 device를 사용해도 됩니다.
board를 선택하려면 위쪽의 Boards 탭을 누르면 됩니다.
boards 선택시 나오는 list 화면입니다.
board support file 이 설치된 것만 보이며, 위의 Minized는 별도 설치된 상태입니다.
Minized가 선택된 상태로, Next> 누르면 다음으로 진행합니다.
(hello world 는 아무거나 선택해도 상관 없습니다.)
project 생성 마지막 단계로, 생성과정의 요약내용을 보여줍니다.
Finish를 누르면, project 설정이 끝나고, 아래의 Initializing project 진행후 완료됩니다.
3. 새로 생성한 source 의 module port 설정, source file 열기
이 과정은, project 생성시, 새로운 source 파일을 추가로 인하여 나오는 메뉴입니다.
project내에서 새 source를 생성하여 추가할 때마다 이 메뉴가 나옵니다.
Module name은, default로 source file이름과 같습니다.
module name은 마음대로 바꿔도 무방합니다.
hello world 에서는, IO port 를 사용하지 않는, simulation project 이기 때문에
IO부분은 추가/변경 하지 않고, OK를 눌러 진행하면 됩니다.
또한 project의 설정값이 아니며, source file에만 적용되고, 언제든 수정 가능합니다.
참고로, verilog에서는 module 형식으로 구성되고, input/output port가 존재합니다.
C language 로 비유하자면, module 은 function 에 해당하고
input output port 는 C의 parameter 해당합니다.
위의 설정화면은, 간단히 표현하자면, C의 function template이 만들어지는 것처럼
verilog의 기본 module 의 template 을 만들기 위한 과정이며,
module의 IO port 를 자동으로 만들기 위한 메뉴 입니다.
이 message 는, 기본 module의 port가 지정(변경)되어야 하는데,
아무런 변경사항 없이 진행하므로, 확인하는 message 창입니다.
Yes 로 진행하면 됩니다.
위 화면은, project 생성과 define module이 끝난 후, 최초로 project가 열린 화면입니다.
위의 화면에서, Sources 창 내에서 hello_world (붉은색 box) 를 double click 하면
아래와 같이 우측의 editor 창으로, hello_world module위치로 열립니다.
4. hello world 작성하기 및 simulation 실행
hello_world editor 에서, 다음의 code를 입력합니다.
module hello_world( ); initial begin $display("hello world !!"); end endmodule
작성후, Ctrl-S 를 누르거나, 위 editor 상단의 title icon중 floppy 모양을 눌러 저장합니다.
editor 상단 tile에서 hello_world.v 우측의 asterisk(*)는 저장되지 않은 상태를 표시합니다.
위 verilog source를 해석하면 다음과 같습니다.
module hello_world( ); 는 module의 선언부 입니다.
괄호 안에는 input/output port가 지정되는 부분이나,
hello world 는 simulation 만 가능한 예제로, input/output이 없습니다.
$display 는 hello world !! 를 출력하기 위한 system task 이며, simulation 용입니다.
initial 은, system task($display)들, if else, case, 변수 등을 사용하기 위한 예약어입니다.
( procedural 과 관련된 개념이며, continuous 와 대비 됩니다 )
begin end 는 여러 문장(statement) 를 묶어, 하나의 문장으로 취급하는 예약어입니다.
사실, $display가 한 statement 이므로, 필요하지는 않습니다.
참고로, begin end는 procedural 에서만 사용 가능하며, sequential block 을 의미합니다.
마지막의 endmodule은 선언하는 module의 끝에 사용됩니다.
참고로, verilog에서는, begin end가 특수한 의미를 내포하기 때문에,
모든 block의 시작과 끝에, 범용적으로 사용할 수 없습니다.
이러한 이유로, verilog에서는 end~ 와 같이, 끝을 의미하는 end 예약어가 많습니다.
작성된 hello world 를 simulation 실행하려면 위해, 좌측의 Flow Navigator 에서
SIMULATION 밑의 Run Simulation 을 클릭합니다.
열려진 context menu에서, Run Behavioral simulation 을 클릭하면 실행됩니다.
simulation 실행시 나오는 progress bar 이며, simulation 준비 과정입니다.
위의 준비 과정과 이 끝나면, 실제 simulation이 진행되고 결과가 나옵니다.
hello world는 최소한의 code이므로, 즉시 끝나게 됩니다.
hello world의 simulation 결과는 Tcl Console에서 확인할 수 있습니다
위 화면은, Vivado 하단의 Tcl Console 창을 띄운 것입니다.
simulation 과정의 실행과정과 상태, log output등이 모두 보여지고 있읍니다.
그중, 붉은색 box 안의 hello world !! 가 보이고 있습니다.
hello world 에서 작성한 $display("hello world !!"); 가 실행된 것입니다.
그외 참고사항들 입니다.
Vivado 의 project file은 *.xpr 입니다. 이 *.xpr 을 double click 하면, project가 열립니다.
Vivado project 폴더는, sub directory까지 통째로 압축하거나 복사하여,
다른 PC나 다른 directory에서 문제 없이 작업 가능합니다.
단, vitis 나, 직접 만든 ip library등이나, 설정에서 한 directory들은 맞춰줘야 합니다.
또한 상위 버전으로 migration은 자동으로 잘되는 편이며,
하위로는 잘 안되는 경우( 특히 vivado 버전 )가 있습니다.




















0 댓글