Apple Silicon に Chipyard 環境を構築する

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も
    - Can not run Chipyard on Apple Silicon (Macbook Air M1) #789
        - https://github.com/ucb-bar/chipyard/issues/789
            - export MAKE=make で動くらしい
    - 1.4.2. Setting up the Chipyard Repo
        - https://chipyard.readthedocs.io/en/stable/Chipyard-Basics/Initial-Repo-Setup.html#setting-up-the-chipyard-repo

- OSX関連
    - https://github.com/riscv-software-src/homebrew-riscv


- 関連
    - 2021-0215 Chipyard でSoCを生成してみる
        - https://qiita.com/mune10/items/c7ae1e89aa7c4a5885aa
    - 2022-1118 Mac に RISC-V の開発環境構築
        - https://qiita.com/ryomichi56/items/470012f02aa31ff3c53d
            - 古い？
    - 2022-0514 MacOSでのRISC-Vツールチェインの動作確認
        - https://msyksphinz.hatenablog.com/entry/2022/05/14/040000
    - 2022-0515 自作RISC-Vコア向け環境のlibelfを置き換える試行
        - https://msyksphinz.hatenablog.com/entry/2022/05/15/040000







  

EOF