※ solution에 대한 코드는 절대 제공되지 않으며, 수업진행에 필요한 모든 도움은 최영규 교수님의 자료 및 이메일을 참고하길 바랍니다.
Vitis와 Vitis HLS는 명확하게 다른 개발 도구입니다.
가장 근본적인 차이점은 binary의 생성여부입니다.
Vitis HLS에서는 Simulation 영역에서 코드를 다룹니다.
그에 반해, Vitis는 simulation을 넘어 실제로 board에서 동작하기 위한 binary를 컴파일 해낼 수 있습니다.
3장 - Vitis
4~5장 - Vitis HLS
Vitis에도 GUI 모드가 존재하고, HLS에도 CMD 모드가 존재합니다.
Vitis HLS(GUI)의 CMD모드로 사용
Vitis 의 GUI모드로 사용
그럼 실제 개발은 어떻게 하는가?
보편적으로 HLS레벨에서는 simulation만 지원하기 때문에, HLS레벨에서 kernel development를 선행한 후,
이 kernel을 바탕으로 on-board에서 동작을 위해서만 필요한 description를 추가해서 on-board binary를 생성해줍니다.
그 description이란?
작성자의 개인적인 견해가 담긴 설명입니다.
Vitis HLS(이하 HLS)로 작성한 Simultion만을 위한 코드를 1대1 대응으로 Vitis코드로 변환하는 것은 불가능합니다.
HLS 레벨에서 작성한 코드는 PCIE 슬롯을 이용한 데이터전달과, 외부 메모리(RAM)에 대한 고려를 하지 않았기 때문입니다. HLS에서 Vitis로 변환할 때 이 점을 고려한 코드 또한 추가로 작성해주어야 합니다. ]
직전의 강의인 5강에서 FIR 주제를 Vitis HLS로 다루었는데, 이를 Vitis project로 재구성해봅시다.
파일 이동 후, Vitis를 사용했던 프로젝트인 hello_world(Vadd 프로젝트)를 그대로 복사해오고, 이름은 fir_onboard로 합니다.
그리고 그 폴더 내로 이동(hello_world 프로젝트의 사본)
vim textEditor를 켜서 Makefile내에 있는 코드 중 directory 이름을 수정해줍니다.
compile flag, host file name, excutable name, kernel file name 등 뭐 하나라도 변경된 사항이 있다면,
Makefile에 있는 사진 속 변수들을 수정해줘야만 합니다.
지금으로서는 바꾼게 없으니 선택적이지만, 나중에 바꾸게 된다면 반드시 확인할 부분입니다.
하고나면 HLS에서는 불가능하고 Vitis에서만 가능한 2종의 시뮬레이션과, bitstream의 생성이 가능합니다.
인스턴스 내부 저장소는 ssd이며, 기본적으로 큰 크기가 할당되어있지 않기 때문에, disk관리를 잘해야 합니다.
사진 속 해당 파일을 제외하고는 전부 날려줍니다.
필자는 숨겨진 폴더에 있는 파일을 제거하지 못해서 원인불명의 용량부족에 시달린 기억이 있습니다. 숨겨진 폴더에 용량이 계속 쌓일 수 있으니 해당 부분 유의해서 파일관리 하도록 합시다.