OSSをフォークして自分色に染める時代
Apple Silicon Mac上でVivadoを動かすOSSに vivado-on-silicon-mac というものがあります。Rosettaで動くx64 DockerコンテナをVNC経由で使うというもので、M1以降のMacでFPGA開発をしたい人間にとって救世主的な存在です。
ただ、最終更新からしばらく経っており、Vivado 2024.2以降には対応していません。昨今のOSS事情として「メンテが止まったリポジトリにプルリクを送る」よりも「自分でフォークしてAIと一緒に好みに仕上げる」方が早いです。というわけでフォークして自分なりに整えたものを公開しました。
変えたこと
Vivado 2025.1 対応
2025.1からVivadoのインストールパス構造が変わりました。
# ~2024.1
Xilinx/Vivado/VERSION/settings64.sh
# 2025.1+
Xilinx/VERSION/Vivado/settings64.sh
de_start.sh・container_bashrc のパス検索を両方のレイアウトに対応させました。インストールハッシュと設定ファイルも2025.1用を追加しています。
TigerVNC で HiDPI 対応
macOS標準の「画面共有」では HiDPI に対応しておらず、Retina Mac でVNC画面がぼやけます。TigerVNC に切り替えることで解像度3456×2160・DPI 192でくっきり表示できるようになりました。
brew install --cask tigervnc-viewer
VNCの解像度は scripts/vnc_resolution に書かれているので、16インチ MBP以外の環境に合わせたい場合はここを書き換えてください。
コンテナ内で Claude Code 対応
macOSの ~/.claude/ をコンテナ内の /home/user/.claude/ にバインドマウントするようにしました。コンテナ内で初回 claude を起動して認証を済ませれば、以降は再起動しても認証情報が保持されます。
VerilogのレビューやTCLスクリプトの生成をVivadoを動かしているコンテナ内から直接 claude に頼めます。
モダンなシェル環境
コンテナ初回起動時に setup_tools.sh が自動で走り、以下をインストールします。
| ツール | 役割 |
|---|---|
claude |
Claude Code |
eza |
アイコン付き ls 代替 |
bat |
シンタックスハイライト付き cat 代替 |
rg (ripgrep) |
高速 grep 代替 |
fzf |
ファジーファインダー |
zoxide |
スマート cd 代替 |
| JetBrainsMono Nerd Font | アイコン表示対応フォント |
| WhiteSur テーマ | macOS風 GTK テーマ |
attach.sh でコンテナにシェル接続するとこれらが使えるターミナル環境になっています。
Digilent ボードファイルをサブモジュールで管理
vivado-boards・vivado-library をサブモジュールとして追加しました。setup_boards.sh が2025.1のパス構造を考慮したうえでシンボリックリンクを張るので、Arty・Nexys・Basys などのボードがVivadoのBoard Managerに表示されるようになります。
git submodule update --init
サブモジュールのURLはSSHではなくHTTPSに統一してあるので、GitHub SSHキーの設定がなくても動きます。
使い方
コンテナ起動
cd vivado-on-silicon-mac
./scripts/start_container.sh
コンテナに接続
./scripts/attach.sh
あとは README_ja.md 読んでね。
FAQ
なんで
2025.1だけ?2024.2は?2025.2は?
筆者が研究室で使ってるバージョンが2025.1だからです。他のバージョンも使いたくなったら追加するかもです。
なんでDigilent ボードファイルとIPコアをサブモジュールに入れてるの?
筆者が研究室でDigilentのボードを使ってるからです。
ezaとかbatとかいらん
筆者の好みです。
プロンプトが可愛い
筆者の好み(ry