FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Chipyard v1.5.0のコンパイル手順メモ

ちょっと訳あってChipyardのバージョンアップ試行した。これまではv1.3.0を使っていたのだがあまりにも古いのでv1.5.0に切り替えてみる。

github.com

Chipyardの何が面倒くさいかって、GNUツールチェインもついているのでそれのビルドに時間がかかる。バイナリをダウンロードして来ればいいのだが一応念のためビルドがうまく行くことを確認している。

GNUツールチェインのビルドについては、いろいろ試行錯誤をした結果以下のコマンドラインオプションにに落ち着いた。

MAKEFLAGS="-j<ncores>" ./scripts/build-toolchains.sh riscv-tools --ignore-qemu 2&>1 | tee build.log

コア数(-j)は適宜変えてくれればいいのだが、私の場合はショボいラップトップで4コア8スレッド持っているが全部使い切るとメモリが足りなくなった。2コア使い切るのが関の山だ。あまり無理をしないように。

あと、WSLの環境では(というか最新のQEMU)を使う場合は割とビルドに失敗するので--igunore-qemuを付けておいた方が良い。わざわざスクリプトにこういうオプションを用意しているくらいなので、メンテナもQEMUのビルドできなさ具合に少し嫌気がさしているのだろう。

あと、GNUのビルドが嫌ならプレビルドバイナリをダウンロードするという手もある。 riscv-toolsではなくec2fastを指定するのが手っ取り早い。

usage() {
    echo "usage: ${0} [OPTIONS] [riscv-tools | esp-tools | ec2fast]"
    echo ""
    echo "Installation Types"
    echo "   riscv-tools: if set, builds the riscv toolchain (this is also the default)"
    echo "   esp-tools: if set, builds esp-tools toolchain used for the hwacha vector accelerator"
    echo "   ec2fast: if set, pulls in a pre-compiled RISC-V toolchain for an EC2 manager instance"
    echo ""
    echo "Options"
    echo "   --prefix PREFIX       : Install destination. If unset, defaults to $(pwd)/riscv-tools-install"
    echo "                           or $(pwd)/esp-tools-install"
    echo "   --ignore-qemu         : Ignore installing QEMU"
    echo "   --clean-after-install : Run make clean in calls to module_make and module_build"
    echo "   --arch -a             : Architecture (e.g., rv64gc)"
    echo "   --help -h             : Display this message"
    exit "$1"
}