はじめに
FPGAのTang nano 20では、Gowin IDEを使ってFPGAの回路設計とファームウェアの書き込みを行います。
インターネット上に紹介されている記事だと、ダウンロードしたファイルを解凍するだけで使用できると説明されているものが多いのです。しかし、かずえだはいろいろ試行錯誤してやっと動作を確認しました。その段取りを紹介します。
本記事の一部は、2025年10月11日開催の「小江戸らぐの勉強会、10月のオフな集まり(第279回)」で発表した内容を含みます。
ユーザー登録をしてGowin IDEをダウンロード
Gowin IDEのダウンロードにはユーザー登録が必要です。
登録情報に従ってログインすると、ダウンロードページにアクセスできます。
様々なファイルがダウンロードできますが、「Gowin_V1.9.12_linux.tar.gz」をダウンロードしました。
ファイルを解凍してGowin IDEをインストール
環境はUbuntu22.04のWaylandで行っています。
tar.gzファイルをダウンロードして、展開し、デスクトップの端末で、gw_ideを起動します。
エラーが出て、停止してしまいます。
画面描画用にプログラムを追加
以下のコマンドで、プログラムを追加します。
$ sudo apt update & sudo apt install -y libxcb-xinerama0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-cursor0 libx11-xcb1 libxrender1 libxi6 libxkbcommon-x11-0 qtbase5-dev qt5-qmake
この作業だけでも、起動しません。
Gowin IDEのライブラリを使うようにパスを設定
以下のように、Gowin IDEのライブラリを使うようにパスをします。
export LD_LIBRARY_PATH=“/home/kazueda/IDE/lib:$LD_LIBRARY_PATH”
export QT_PLUGIN_PATH=“/home/kazueda/IDE/plugins/qt”
export QT_QPA_PLATFORM_PLUGIN_PATH=/home/kazueda/IDE/plugins/platforms
Gowin IDEを使うたびにパスを設定するのが大変なので、IDE起動用シェルを作成しました。
「/home/kazueda/IDE」の部分は、ご自身のIDEをインストールしたディレクトリに修正してください。
#!/bin/bash
# 環境変数の設定
export LD_LIBRARY_PATH="/home/kazueda/IDE/lib:$LD_LIBRARY_PATH"
export QT_PLUGIN_PATH="/home/kazueda/IDE/plugins/qt"
export QT_QPA_PLATFORM_PLUGIN_PATH="/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms"
export LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libfontconfig.so.1"
Gowin IDEの起動
/home/kazueda/IDE/bin/gw_ide
問題なく起動しました。

あるプログラムをmakeしてみると、
問題なく、fsファイルを生成しました。
しかも、デスクトップ環境は表示されません。


CLIで拡張子fsファイルを書き込む
xvfbを使うと、CLIでもGowin IDEのバイナリを利用することができます。
例えば、Makefileの中に、以下のような記述がある場合は、
all:
LD_PRELOAD=$(LIBFONT_CONFIG) \
LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
QT_PLUGIN_PATH=$(QT_PLUGIN_PATH) \
QT_QPA_PLATFORM_PLUGIN_PATH=$(QT_QPA_PLATFORM_PLUGIN_PATH) \
$(GW_SH_PATH) build.tcl
「$$(GW_SH_PATH) build.tcl」の部分を「xvfb-run $(GW_SH_PATH) build.tcl」とすると、CLI環境でも、先ほどの例のmakeに成功します。


おわりに
Gowin IDEを使用する場合、IDEの提供するライブラリを使用するようにしないと、OS内のライブラリを使用するので、エラーが出ます。
IDEの提供するライブラリを使用するようにパスを設定することで、GowinIDEを利用可能となります。
さらに、xvfbを使うことで、CLIでのmakeにも成功しました。