ドキュメント一覧
10 トラブルシューティング
最初に次のコマンドを実行する。
vvd doctor # ホスト、エンジン、イメージ、ライセンス、表示、JTAG を検査する
vvd doctor --deep # コンテナ内部の状態も検査する
vvd --dry-run <cmd> # 実行されるコンテナコマンドを表示する
vvd -v <cmd> # デバッグログを出力する
起動しない
| メッセージ |
原因と対処 |
no container engine found |
podman または docker を導入する |
docker is installed but not usable |
デーモンが停止している、または docker グループに所属していない。podman の場合は podman system migrate の実行と /etc/subuid を確認する |
image not found: ... |
vvd build を実行する |
VVD_XILINX_ROOT does not exist |
Vivado の位置を VVD_XILINX_ROOT で指定する。または VVD_VIVADO_MODE=image を使用する |
Vivado 2025.2 not found under ... |
存在するバージョンが一覧表示される。--vivado で指定を合わせる |
Vivado が PATH に無い
vvd-container: WARNING: /opt/Xilinx/Vivado/2025.2/settings64.sh not found
mount モード: ホストのインストール先とバージョンの指定が一致していない。
vvd doctor の vivado セクションを確認する
image モード: イメージが --installer 付きでビルドされていない
ライセンス
| メッセージ |
対処 |
no valid license was found |
vvd doctor でライセンス設定を確認する。04 ライセンス を参照 |
| ホストでは成功するがコンテナでは失敗する |
vvd selftest --stage license で確認する。ライセンスサーバに到達できない場合は VVD_NETWORK=host を指定する |
| ノードロックが機能しない |
ライセンスが MAC アドレスに紐付くため。VVD_NETWORK=host を指定する |
生成物が root 所有になる
vvd selftest --stage identity
- rootful docker: entrypoint が
VVD_UID / VVD_GID を受け取って権限を降格する。
VVD_USER_MODE=root が設定されていないか確認する
- rootless podman:
--userns=keep-id を使用する。podman のバージョンが古い場合は
未対応である
すでに root 所有となったファイルは次のように変更する。
sudo chown -R "$(id -u):$(id -g)" build/
GUI
| 症状 |
対処 |
no display available |
--display x11 (X 転送) または --display xvfb (ヘッドレス) を指定する |
DISPLAY is unset |
X セッション外から起動している。vvd gui --vnc を使用する |
ssh -X で接続したが GUI が表示されない |
vvd は TCP ディスプレイを検出して --network host を付与する。VVD_NETWORK に別の値を設定していると競合する (警告を表示する) |
| VNC に接続できない |
ポートは既定で 127.0.0.1 のみに公開される。別のマシンからは ssh -L 5901:127.0.0.1:5901 を使用する |
| VNC のパスワードが不明 |
vvd gui --vnc が起動時に表示する。固定する場合は VVD_VNC_PASSWORD を指定する |
ウィンドウが表示されない / cannot connect to X server |
xhost +SI:localuser:$(id -un) を実行する。ホストに xauth を導入する |
| Wayland で動作しない |
XWayland が必要である。echo $DISPLAY が空の場合は XWayland が存在しない |
| 描画が極端に遅い |
既定はソフトウェアレンダリングである。--gpu を試す |
| フォントが豆腐文字になる |
fontconfig はイメージに含まれている。追加のフォントは VVD_EXTRA_MOUNTS で mount する |
JTAG
一覧は 07 JTAG の末尾にある。要点は次のとおり。
- 既定の
host モードは、ホスト側で hw_server が起動していることを前提とする
usb モードでは抜き差しによりデバイス番号が変化するため、コンテナの再起動が必要
- 権限エラーの場合は
vvd jtag-rules --install を実行し、ケーブルを接続し直す
ビルド・実行
| 症状 |
対処 |
pattern matched no files: rtl/*.v |
vvd.conf のパスはプロジェクトルートからの相対である。vvd info でルートを確認する |
timing not met |
タイミングが未達である。build/reports/impl_timing.rpt を確認する。未達を許容する場合は VVD_ALLOW_TIMING_VIOLATION=1 を指定する |
| 実装中に異常終了する / OOM |
/dev/shm は 1 GB に拡張済みである。VVD_MEMORY を増やすか、VVD_JOBS を減らす |
| ディスク容量が不足する |
vvd doctor が空き容量を警告する。実装には数十 GB を要する場合がある |
xsim が 0 で終了するがテストは失敗している |
失敗行を *** FAILED: で開始する。05 フロー を参照 |
unknown configuration key: VVD_... |
vvd.conf の記述誤りである。有効なキーの一覧は vvd info --all で確認する |
イメージのビルド
| 症状 |
対処 |
Certificate verification failed / certificate issuer is unknown |
TLS を検査するプロキシの内側で実行している。vvd build --ca-cert /path/to/proxy-ca.crt を使用する |
| apt が 404 を返す |
スナップショットが古いか、ミラーの障害である。scripts/lock-apt.sh --snapshot <新しい値> を実行する |
--build-context が使用できない |
BuildKit が必要である (docker 23 以降 / podman 4.4 以降)。DOCKER_BUILDKIT=1 を設定する |
no SHA256 recorded for Vivado ... |
config/vivado-versions.lock に digest を追加する。09 ピン留め を参照 |
installer checksum mismatch |
ダウンロードが破損しているか、ファイルが記録と異なる |
refusing to ship an image containing a .lic file |
ビルドコンテキストにライセンスが混入している。.dockerignore を確認する |
原因を特定できない場合
vvd shell # コンテナ内に入って直接調査する
vvd shell vivado -version
vvd shell ldd "$(command -v vivado)"
vvd --dry-run --verbose flow # 組み立てたコマンド全体を表示する
vvd info --all # 解決済みの全設定を表示する
vvd selftest --list でステージの一覧を表示する。個別に実行して問題を切り分けられる。
vvd selftest --stage libs --stage env --stage tcl