FPGA開発日記

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

RISC-V SiFive Freedomプラットフォームのビルド手順

前回、SiFiveのFreedomプラットフォームについてまとめたが、今回は実際にそのプロジェクトを触ってみる。

Freedomプラットフォームはgithubに公開されており、デバイスさえあれば誰でもビルドすることができるようになっている。

github.com

ビルド対象のFPGAは2種類用意されており、Freedom EverywhereではDigilentのArty FPGA、Freedom UnleashedではXilinxのVC707 FPGA Boardをターゲットとしている。

f:id:msyksphinz:20170328235514p:plain

とりあえずWebPackを持っている私としては、DigilentのArty FPGAボードのほうが入手しやすい(持ってないけど)。 どのようなプロジェクトが出来上がるのか、確認しておこう。

Vivado WebPackでFreedom E310 Arty FPGA Dev Kitをビルドするためには

Vivado WebPackはデフォルトではArty FPGAボードの情報を持っていない。したがって、VivadoをインストールしてすぐにArty向けにビルドをしてもエラーをはいて終了してしまう。

そこで、DigilentのホームページからArty FPGAボードのボード情報ファイルを取得してきた。

Vivado Version 2015.1 and Later Board File Installation [Reference.Digilentinc]

f:id:msyksphinz:20170328235822p:plain

“Download"からボード情報をダウンロードして、展開した。これをXilinxのVivadoインストールフォルダの/data/boards/board_filesに展開する。

f:id:msyksphinz:20170328235936p:plain

上手く行けば、VivadoのCreate Projectから、Artyボードを選択できるようになっているはずだ。

f:id:msyksphinz:20170329000522p:plain

これを確認して、SiFiveプラットフォームをビルドしてみる。

$ make -f Makefile.e300artydevkit verilog
$ make -f Makefile.e300artydevkit mcs

無事にビルドが完了し、FPGA用のMCSファイルが生成されると、以下のようなメッセージとともにVivadoが終了する。

...
#   create_fileset -simset sim_1
# }
# set obj [current_fileset -simset]
# add_files -norecurse -fileset $obj [glob -directory $srcdir {*.v}]
# set_property TOP {tb} $obj
# if {[get_filesets -quiet constrs_1] eq ""} {
#   create_fileset -constrset constrs_1
# }
# set obj [current_fileset -constrset]
# add_files -norecurse -fileset $obj [glob -directory $constrsdir {*.xdc}]
source script/cfgmem.tcl
# lassign $argv mcsfile bitfile datafile
# set iface spix4
# set size 16
# set bitaddr 0x0
# write_cfgmem -format mcs -interface $iface -size $size \
#   -loadbit "up ${bitaddr} ${bitfile}" \
#   -loaddata [expr {$datafile ne "" ? "up 0x400000 ${datafile}" : ""}] \
#   -file $mcsfile -force
Command: write_cfgmem -format mcs -interface spix4 -size 16 -loadbit {up 0x0 obj/system.bit} -loaddata {} -file obj/system.mcs -force
Creating config memory files...
Creating bitstream load up from address 0x00000000
Loading bitfile obj/system.bit
Writing file obj/system.mcs
Writing log file obj/system.prm
===================================
Configuration Memory information
===================================
File Format        MCS
Interface          SPIX4
Size               16M
Start Address      0x00000000
End Address        0x00FFFFFF

Addr1         Addr2         Date                    File(s)
0x00000000    0x0021728B    Mar 28 23:45:11 2017    obj/system.bit
0 Infos, 0 Warnings, 0 Critical Warnings and 0 Errors encountered.
write_cfgmem completed successfully
INFO: [Common 17-206] Exiting Vivado at Tue Mar 28 23:45:45 2017...
make[1]: Leaving directory '/home/msyksphinz/work/freedom/fpga/e300artydevkit'
cp /home/msyksphinz/work/freedom/fpga/e300artydevkit/obj/system.mcs /home/msyksphinz/work/freedom/builds/e300artydevkit/sifive.freedom.everywhere.e300artydevkit.E300ArtyDevKitConfig.mcs

dcp(Design Check Point)が生成されていたので、ちょっと見てみた。

f:id:msyksphinz:20170329001650p:plain

Coreplexが、CPUの部分だ。

関連記事

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com