참고대상:
https://github.com/github-fds/Deep_Learning_Routines
https://github.com/adki/cosim_bfm_library#getting_started
일단 이 두 주소를 따라한다.
그 와중에 발생할 수 있는 문제를 예방하기 위한 심득사항을 아래에 적는다.
목표는 아래 링크의 예제코드가 돌게 하는 것이다.
https://github.com/adki/DPI_Tutorial
~/.zshrc 에 아래 문구 추가
unsetopt INTERACTIVE_COMMENTS
unsetopt BAD_PATTERN
set_vivado(){
if [ -z "$1" ]; then
version=2019.1
else
version=$1
fi
if [ -f /tools/Xilinx/Vivado/${version}/settings64.sh ]; then
source /tools/Xilinx/Vivado/${version}/settings64.sh
else
echo "Error could not find ${version}"
return -1
fi
return 0
}
set_cosim(){
export COSIM_HOME=$HOME/work/DPU/cosim_bfm_library
if [ -n "${PYTHONPATH}" ]; then
export PYTHONPATH=$COSIM_HOME/include/python:$PYTHONPATH
else
export PYTHONPATH=$COSIM_HOME/include/python
fi
}
set_dlr(){
export DLR_HOME=$HOME/work/DPU/Deep_Learning_Routines/v1.4
if [ -n "$PYTHONPATH}" ]; then
export PYTHONPATH=$DLR_HOME/python/modules:$PYTHONPATH
else
export PYTHONPATH=$DLR_HOME/python/torch
fi
}
source ~/.zshrc 로 각각 터미널에 모두 입력하여 변경사항 적용
그 뒤, 터미널에 함수 입력을 통해 PATH 설정
set_vivado
set_cosim
set_dlr
sudo apt update
sudo apt install libtinfo-dev
sudo ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5
sudo apt-get install libtinfo5
참고로, 전제는 Xilinx Vivado 2019.01 파일이
/tools/Xilinx 에 설치되었다는 점이다.
또한, $HOME/work/DPU 이하의 위치에 cosim 및 Deep_learning_Routines 폴더가 있다는 점이다.
그 뒤,
cd cosim_bfm_library/lib_bfm
make -f Makefile.xsim
make -f Makefile.xsim install
# 막줄은 둘째줄에서 만들어준 .a 파일 없으면 안돌아감
cd $HOME/work/DPU/Deep_Learning_Routines/v1.4/src
source /tools/Xilinx/Vivado/2019.1/settings64.sh
make
make install
그 뒤, DPI Tutorial 테스트를 해보자.
설명하자면, system verilog 의 코드와 C 코드의 소통을 시뮬레이트하는 코드이다.
/home/takeyama/work/DPU/DPI_Tutorial/codes/01_simple_sv2c/xsim
에서
make 하는 과정에서
ERROR: [XSIM 43-3409] Failed to compile generated C file xsim.dir/work.top/obj/xsim_1.c.
이 발생했는데,
해결
sudo apt-get install libncurses5
치면 된다.
이하는 성공예시코드 1
결과1
2번째 예시코드
결과2
무슨 코드냐면,
https://github.com/adki/DPI_Tutorial/tree/main/codes/02_simple_sv2c_return
의 코드이다.
참고) 터미널에서 뭐가 안되면
십중팔구
set_vivado
set_cosim
set_dlr
안해서 그런거니 해주자.