GOWIN FPGA Designerには、シミュレータは付属していませんが、代わりにGAOというFPGA内の波形を見るツールがあります。GAOはGowin Analyzer Oscilloscope の略です。
もちろん、FPGAのリソースを使用するので一度にたくさんの信号をみたり、長時間キャプチャさせることは難しいですが、ちょっと確認したい時等には役にたちます。
日本語の説明書は、C:\Gowin\Gowin_V1.9.10.03_x64\IDE\doc\JP の SUG114-3.1J_Gowinアナライザオシロスコープ ユーザーガイド.pdf です。
今回はGAOがとりあえず使える程度の設定について説明します。
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-6.png)
File→New… を選ぶと左のダイアログが表示されます。
GAO Config Fileを選択しOKを押します。
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-7.png)
GAO Settingは左のように選択します。
For RTL Designは、合成最適化前の
RTL信号をキャプチャします。
For Post-Synthesis Netlistは、合成最適化後のNetlist 信号をキャプチャします。
Modeは、Standardを選択します。
(最初はLiteを選ぶ方が設定が少なく、簡単かもしれません)
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-8.png)
適当なファイル名を付けて保存します。
デフォルトでも良いでしょう。
Nextを押して、次のダイアログでOKを押します。
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-24.png)
一番下の GAO Config Filesのフォルダに設定ファイルが出来ていますので、ダブルクリックします。
(この例では、fpga_project_verilog_test.rao)
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-10-1024x525.png)
Capture Optionのタグを選んで、Sample Clockを設定します。モニターする信号より早いクロックを選ぶ必要がありますが、あまりに速い信号だと短時間しかキャプチャできません。
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-11-1024x530.png)
Capture Signalsにモニターしたい信号を追加します。Storage SizeとCapture Amountは大きくするほど長く多くの信号をキャプチャできますが、当然FPGAのリソースを消費します。その場合は減らすか、トリガを工夫することになるでしょう。
また、Trigger Positionをセットすることで、取り込み開始位置を変更することができます。オシロスコープと同じですね。
例ではカウンタをトリガにしていますので、0になるときをトリガにして、Trigger Positionを100にすれば、100カウント前の位置からキャプチャします。
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-13-1024x527.png)
次は、トリガの設定です。
まだ何もトリガが設定されていない状態ですね。
Triger Port 0をダブルクリックしトリガ信号を選択します。
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-15.png)
緑の+を押して、トリガに使いたい信号を選択します。この例では、24ビットのカウンタを選択しています。
選択したら、OKを押します。
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-16.png)
L0のcounter(24ビット)を選択しました。
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-17-1024x642.png)
Match UnitでM0をチェック、選択しダブルクリックします。
Match Unit 0 の On Trigger Portで先ほど設定した、Trigger Port 0をプルダウンから選択します。
カウンタがどの値になったら、トリガを掛けるかをValueで設定します。
(カウンタではなく、ポートを選択した場合は、1か0ですね)
この例では、49900をセットしています。
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-18-1024x603.png)
いつも通り、合成(Synthesize)と配置配線(Place & Route)を行います。
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-19-1024x763.png)
Tools→Gowin Analyzer Oscilloscope を選ぶと、GAOが起動します。
Enable Programmerをチェックして、Fs File(ビットストリームファイル)を選択します。(デフォルトで選択されているはずです)
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-23-1024x763.png)
FsファイルをTang Nano 4K にダウンロードし、Ready to acquire と緑で表示されたら、Startボタンをクリックします。
下の部分で、トリガ値とポジションを変更することもできます。
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-21-1024x803.png)
トリガーを検出してキャプチャーしたら、波形が表示されます。トリガポイント0は、上で設定した、499900になっていますね。
![](https://www.e-momonga.com/honkytonk/wp-content/uploads/2025/01/image-22-1024x803.png)
ルーペアイコンで、拡大縮小ができます。
設計通り、500000カウント目でled_oが反転していることが確認できました。
GOWINのツールにはシミュレータが付属していないのが弱点ですが、GAOを使えばある程度はカバーできそうです。
なお、シミュレータとしては、MetricsのDsimが使えるようになったようです。GOWINの日本代理店である丸文のWebにDsimのインストール方法や使い方の資料があります。Dsim Desktopは無料で使えるそうですが、まだ試していません。