Apple Silicon の性能が良いので、 Chipyard の開発で使えないか? の調査です。今の所Verilogの生成までは問題ないようですが、その先はFPGAにしろ、ASICSにしろX86 のLinux環境が無難な模様。手元のマシンでChiselのコーディング、X86なクラウドを使うスタイルならアリかもしれない。
結論
調査環境
- マシン: Mac Studio, M1 MAX, 8 +2 CPUs, 64GB
- OS: Monterey (12.3.1)
- Brew: 3.4.11
- JRE: OpenJDF 17.0.2
- SBT: 1.6.2
セットアップ
JVM, SBT はいくつか方法がありますが sdkman を使う場合は
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk version
sdk install java $(sdk list java | grep -o "8\.[0-9]*\.[0-9]*\.hs-adpt" | head -1)
java -version
sdk install sbt
あと、Brew
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ eval "$(/opt/homebrew/bin/brew shellenv)"
$HOME/.zprofile
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
$ eval "$(/opt/homebrew/bin/brew shellenv)
あと、コマンドラインツールを最新にしておく
$ softwareupdate --all --install --force
chipyardは(調査時点で最新の)リリース V1.6.2 をつかう。(ちなみにmainだとinit-submodulesがなんかおかしい)
$ git clone https://github.com/ucb-bar/chipyard.git chipyard-1.6.2
$ cd chipyard-1.6.2
$ git checkout 1.6.2
$ ./scripts/init-submodules-no-riscv-tools.sh
Toolchain のBuildは案の定トラブったり、時間がかかるので Brew で導入が無難。
$ brew tap riscv-software-src/riscv
$ brew install riscv-tools
$ brew test riscv-tools
./env.sh はこんな感じ
export CHIPYARD_TOOLCHAIN_SOURCED=1
export RISCV=/opt/homebrew/
export PATH=${RISCV}/bin:${PATH}
export LD_LIBRARY_PATH=${RISCV}/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
/opt/homebrew/bin/riscv64-unknown-elf-gcc
source ./env.sh
verilator で Simulation
brew install verilator
$ cd sims/verilator
$ make
$ ./simulator-chipyard-RocketConfig $RISCV/riscv64-unknown-elf/share/riscv-tests/isa/rv64ui-p-simple
<SNIP>
zsh: segmentation fault ./simulator-chipyard-RocketConfig
FPGA Verilog 生成
Vivadoが相変わらず OSX をサポートしないので、Verilog RTL の生成まで
$ ./scripts/init-fpga.sh
$ cd fpga
$ make SUB_PROJECT=arty verilog
ASIC Verilog 生成
init-vlsi.shのエラーになるModuleをコメントアウトする。
$ ./scripts/init-vlsi.sh
$ cd vlsi
$ make verilog
SRAM周りでコケる。多分、何か足りない。
Toolchain の Build (トラブル中)
Buildに必要なToolをインストール(環境によって追加で必要なものには違いがあると思いいます)
$ brew install coreutils
$ brew install make
$ PATH="/opt/homebrew/opt/make/libexec/gnubin:$PATH"
$ brew install gawk
$ brew install autoconf
$ brew install gmp
$ brew install mpc
$ brew install zlib1g
Error: No formulae found in taps.
brew install zlib
brew install dtc
- greadlink: command not found
- brew install coreutils
- obsolete make version; need GNU make 4.x or later
- brew install make
- PATH="/opt/homebrew/opt/make/libexec/gnubin:$PATH"
- configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
- /opt/homebrew/Cellar/gmp/6.2.1_1/include/gmp.h
$ export MAKE=make
$ export MAKEFLAGS=-j8
$ time ./scripts/build-toolchains.sh --ignore-qemu riscv-tools
<SNIP>
./scripts/build-toolchains.sh riscv-tools 372.96s user 162.83s system 129% cpu 6:55.23 total
- 早いのはBuildできてないModuleがある模様
- 生成された env.sh で readlinkをgreadlinkの変更
- gmpなどのパスが、、、
Brewで入れたToolchainで問題がないならやめたほうがいい。
参照
-
本家
- 1.4. Initial Repository Setup
-
https://chipyard.readthedocs.io/en/latest/Chipyard-Basics/Initial-Repo-Setup.html
- 推奨は Ubuntu、CnetOS、MacOSも
-
https://chipyard.readthedocs.io/en/latest/Chipyard-Basics/Initial-Repo-Setup.html
- Can not run Chipyard on Apple Silicon (Macbook Air M1) #789
-
https://github.com/ucb-bar/chipyard/issues/789
- export MAKE=make で動くらしい
-
https://github.com/ucb-bar/chipyard/issues/789
- 1.4.2. Setting up the Chipyard Repo
- 1.4. Initial Repository Setup
-
OSX関連
-
関連
- 2021-0215 Chipyard でSoCを生成してみる
- 2022-1118 Mac に RISC-V の開発環境構築
- 2022-0514 MacOSでのRISC-Vツールチェインの動作確認
- 2022-0515 自作RISC-Vコア向け環境のlibelfを置き換える試行
EOF