1a. Apple Silicon MacでVivadoを動かす

開発環境の見直し

前回の記事では、Windows 11 ARM版の仮想環境上にVivadoをセットアップしました。しかし、論理合成にかかる時間が非常に長く、開発効率が低下する問題がありました。そこで、今回はApple Silicon Mac上でVivadoをより快適に動かす方法を模索しました。

環境ごとの論理合成時間を比較してみました。

あるシンプルな回路での比較です。

環境論理合成時間
VMware Fusion + Windows 11 ARM (Vivado Windows版)67秒
SteamDeck Windows 10 (Vivado Windows版) 57秒
ichi4096/vivado-on-silicon-mac 39秒

この結果からもわかるように、Apple Silicon Mac上でLinuxエミュレーションを利用した方が明らかに高速でした。ただし、ichi4096/vivado-on-silicon-mac ではクリップボード共有ができないという問題があったため、今回は Debian + Rosetta 2 for Linux を使う方法を試すことにしました。

構成の変更

JTAG-HS3認識の問題と解決策

ichi4096/vivado-on-silicon-mac を試してみましたが xvcd で手元の環境のJTAG-HS3を認識させることができませんでした。
そのため、Windowsで hw_server だけ動かし、Mac側のVivadoと連携させる構成 にしました。

環境の構成

  • JTAG-HS3接続
    • VMware Fusion + Windows 11 ARM に Hardware Server のみインストール
  • Vivado実行環境
    • UTM (Rosetta 2) + Debian 12.9.0 ARM64 に Vivado, Vitis をインストール

Debian環境のセットアップ

Windows側のセットアップは前回と同様なので省略し、Mac上のDebian環境のセットアップ手順を紹介します。

Debianをインストール

  • Debian公式サイト から debian-12.9.0-arm64-netinst.iso をダウンロード
  • UTM を使用し、仮想化と Rosetta 2 を有効にして Debian をインストール
  • spice-vdagent を導入し、クリップボード共有を有効化(推奨)
sudo apt install -y spice-vdagent

Vivadoを動作させるためのセットアップ

以下の手順で、Vivadoをスムーズに動作させるための環境を整えます。

必要なパッケージをインストール

ichi4096/vivado-on-silicon-mac のDockerファイルを参考にca-certificateをその他便利なパッケージをインストールします。

sudo apt install -y ca-certificates cifs-utils smbclient autofs

必須ではないですが、cifs-utils と autofs を入れることで、SMBの共有フォルダを簡単にマウントできるようにします。以下を参考にしました。

公式を参考にUTMとしての共有フォルダにもアクセスできるようにします
公式を参考に rosetta2が使えるようにします
amd64パッケージをインストールします

Running Vivado on ARM64 Mac using Rosetta 2https://adaptivesupport.amd.com/s/article/76616?language=jaを参考に以下をインストールします。

sudo apt install -y default-jdk:amd64 libtinfo5:amd64
sudo apt install -y libcrypt1:amd64 libncurses5:amd64
公式を参考に、必要なパッケージやライブラリをインストールします

FPGAs_AdaptiveSoCs_Unified_2024.2_*/installLibs.shのシェルスクリプトを参考にライブラリ系は、amd64として以下を実行します。

sudo apt install -y net-tools make unzip zip g++ xvfb git fdisk
sudo apt install -y libc6-dev-i386:amd64 graphviz:amd64 libtinfo5:amd64 libncursesw5:amd64 libc6-dev-i386:amd64 libnss3-dev:amd64 libgdk-pixbuf2.0-dev:amd64 libgtk-3-dev:amd64 libxss-dev:amd64 libasound2:amd64
ロケール設定他

ichi4096/vivado-on-silicon-mac のDockerファイルを参考に、Vivadoがクラッシュしないようにロケールと環境変数を設定します。

sudo sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen
sudo locale-gen
sudo update-locale LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US:en
echo 'export LD_PRELOAD="/lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libselinux.so.1 /lib/x86_64-linux-gnu/libz.so.1 /lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0"' | sudo tee -a /etc/environment
source /etc/environment
Vivadoインストールスクリプトの調整

Running Vivado on ARM64 Mac using Rosetta 2を参考に./xsetupにパッチを当てます。

# ERROR out if this installation is running on 32 bit OS 
# and does not support 32 bit installation 
#if [ "$(uname -m)" != "x86_64" ]; then
#    ...
#fi
Vivadoのインストール

ここで、再起動して、Vivadoをインストールします。

Vivadoの動作確認とパッチ適用

Loader にパッチを適用

Running Vivado on ARM64 Mac using Rosetta 2を参考にLoaderにパッチを当てます。

#case `uname -m` in
#  x86_64)
#    ;;
#  *)
#    echo 1>&2 "Unsupported architecture: `uname -m`"
#    exit 1
#    ;;
#esac
xsdb の修正

Vivadoの xsdb スクリプトを修正し、ARM64環境でも lnx64 として認識させます。

#RDI_PLATFORM=lnx32
#case `uname -m` in
#  x86_64) 
RDI_PLATFORM=lnx64
#    ;;
#esac

まとめ

今回は、Apple Silicon Mac 上で Vivado をより高速かつ快適に動作させるために、Debian + Rosetta 2 for Linux を活用する方法を試しました。

  1. Windows 11 ARM での開発環境が遅かったため、Mac上でより高速な環境を構築
  2. Debian + Rosetta 2 で Vivado を動かし、JTAG-HS3 は Windows の hw_server 経由で接続
  3. 必要なライブラリのセットアップとパッチ適用を行い、Vivado を動作可能に

これにより、以前の環境よりも大幅に快適な開発が可能になりました。速度はichi4096/vivado-on-silicon-mac 同等だと思います。

次回について

次回も引き続きFPGAの学習を進めます。もう少し複雑な回路を試しながら、FPGAの可能性を探っていきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.