FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages

Vivado HLSをWindows Subsystem on Linuxで動作させるための手順

Vivado HLSについて再入門しようと思っている。 最近は環境をVirtual BoxからWindows Subsystem on Linux(WSL)に変更したので、その環境下でVivado HLSが動くようにしておきたい。

私が使うのは、基本的にGUIは立ち上げずにスクリプトだけで処理を行いたい。 そのため、これまでに作ったスクリプトがちゃんとWSL上のVivado HLSで動作するのかを確認しておいた。

使用したのは、昔作ったedge_filterのデザインだ。

github.com

実行してみると、どうもincludeファイルが読み込めずに失敗してしまう。

  • fpga_designs/vivado_hls/edge_filter/test_edge_filter.cpp
#include <stdio.h>
#include <stdint.h>
#include "./edge_filter.h"

コンパイルすると以下のようにエラーが発生する。

make
INFO: [HLS 200-10] Setting target device to 'xc7z020clg484-1'
INFO: [SIM 211-2] *************** CSIM start ***************
INFO: [SIM 211-4] CSIM will launch GCC as the compiler.
make[1]: Entering directory '/home/msyksphinz/work/fpga_designs/vivado_hls/edge_filter/edge_filter/normal/csim/build'
   Compiling ../../../../test_edge_filter.cpp in debug mode
csim.mk:77: recipe for target 'obj/test_edge_filter.o' failed
make[1]: Leaving directory '/home/msyksphinz/work/fpga_designs/vivado_hls/edge_filter/edge_filter/normal/csim/build'
In file included from ../../../../test_edge_filter.cpp:1:0:
/usr/include/stdio.h:27:36: fatal error: bits/libc-header-start.h: No such file or directory
 #include <bits/libc-header-start.h>
                                    ^
compilation terminated.
make[1]: *** [obj/test_edge_filter.o] Error 1

SDAccelなどのQ&Aを調査していると、どうもいろいろパッケージをインストールしなければならない様だ。

sudo apt-get install gcc-multilib g++-multilib

上記のパッケージをインストールすると、次に以下のエラーが発生する。

INFO: [SIM 211-2] *************** CSIM start ***************
INFO: [SIM 211-4] CSIM will launch GCC as the compiler.
make[1]: Entering directory '/home/msyksphinz/work/fpga_designs/vivado_hls/edge_filter/edge_filter/normal/csim/build'
   Compiling ../../../../test_edge_filter.cpp in debug mode
   Compiling ../../../../edge_filter.cpp in debug mode
   Generating csim.exe
Makefile.rules:399: recipe for target 'csim.exe' failed
make[1]: Leaving directory '/home/msyksphinz/work/fpga_designs/vivado_hls/edge_filter/edge_filter/normal/csim/build'
/tools/Xilinx/Vivado/2018.3/tps/lnx64/binutils-2.26/bin/ld: cannot find crt1.o: No such file or directory
/tools/Xilinx/Vivado/2018.3/tps/lnx64/binutils-2.26/bin/ld: cannot find crti.o: No such file or directory
/tools/Xilinx/Vivado/2018.3/tps/lnx64/binutils-2.26/bin/ld: cannot find -lpthread
/tools/Xilinx/Vivado/2018.3/tps/lnx64/binutils-2.26/bin/ld: cannot find -lm
collect2: error: ld returned 1 exit status
make[1]: *** [csim.exe] Error 1

今度はcrtが存在しないと怒られてしまった。これはどうしたらいいんだ?

SDAccelのQ&Aを見ていると、以下のようにシンボリックリンクを張れば良いらしい。

forums.xilinx.com

sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64

これで動作するようになった。無事にシミュレーションとVerilogの生成に成功した。

f:id:msyksphinz:20190201010357p:plain
WSLでVivado HLSのGUIが立ち上がった。