Gowin EDAをCLIで操作(M2)

どうにかTang Nano 9KをApple M2チップでも開発したい、、!ということで方法を探した結果、クラウドでx86_64アーキテクチャのマシン上でGowin EDAを使い論理合成、ピンアサイン、配置配線をしてできたfsファイルをローカルにコピーしてきて、openFPGALoaderでFPGAに書き込むということができそうでした。で実際にできました!のでやり方を残しておきます。

①AWSでx86_64アーキテクチャのLinuxマシンを借りる。
僕はOSはUbuntu、vCPUは16、メモリも32GBほどのものかなりスペックの高いものを借りました。というのも初めは無料利用枠の構成のマシンを使っていたのですが、Gowin EDAを使う際にとても重かったからです。このスペックでもGowin EDAをGUI操作しようとするとかなり厳しいです。

②AWS EC2インスタンスにGowin EDAをダウンロード。
先述の理由でGUI操作を諦めて、CLI操作をすることにしました。
2-1 まずは回路を合成するためのをデジタル回路をVerilogで書いておきます。また、デジタル回路を実機に乗せるには実機でどのピンにデジタル回路上のピンを対応させるかの対応関係を書いておく必要があります。その対応関係はConstraintファイルといい、.cstの拡張子を使用します。今回Tang Nano 9Kのピンはボタンが3番、LEDが10番だったので以下のように記述しました。

IO_LOC "i_button"    3;
IO_LOC "o_led"       10;

2-2 次にGowin EDAをCLI操作するモードを起動します。
/IDE/binディレクトリ内にgw_shがあるので./gw_shを実行すると以下のようにプロンプトが表示され、tclコマンドで操作するモードに移行します。

./gw_sh
*** GOWIN Tcl Command Line Console  ***
%

2-3 ここからCLIでGowin EDAを操作していきます。
初めにadd_fileコマンドを用いて論理合成に使用するファイルを追加します。今回は先ほど作成したverilogファイルと制約ファイルの二つを追加します。

% add_file tangnano_test.v
add new file: "tangnano_test.v"
% add_file tangnano_test.cst
add new file: "tangnano_test.cst"

2-4 使用するデバイスを選択します。

% set_device GW1NR-LV9QN88PC6/I5
current device: GW1NR-9C  GW1NR-LV9QN88PC6/I5

2-5 論理合成をします。おそらく論理合成は英語でシンセサイズなので、synとなっています。

% run syn

この際にピンアサインが想定通りかを調べるには、run syn前に以下のオプションを設定しておくことで、論理合成の際に実際のピンアサインを確認することができます。

% set_option -gen_io_cst 1

2-6 配置配線をします。pnrとはPlace & Routeの略だそうです。

run pnr

これが成功すると、implディレクトリ配下にpnrというディレクトリが作られその中にfsファイルが作られているはずです。

③ fsファイルをEC2インスタンスからローカルにコピーしてくる。
理想はEC2インスタンスにローカルのデバイスを認識させてEC2インスタンスからそのまま書き込むことなのですが、難しそうなのでローカルに書き込むファイルを持ってくることにしました。

scp -i ~/path/to/pem username@publicip:path/to/fs/project.fs ./

④ openFPGALoaderでFPGAに書き込み!!

➜  ~ openFPGALoader project.fs 
No cable or board specified: using direct ft2232 interface
Jtag frequency : requested 6.00MHz   -> real 6.00MHz  
Parse file Parse project.fs: 
Done
DONE
Jtag frequency : requested 2.50MHz   -> real 2.00MHz  
erase SRAM Done
Flash SRAM: [==================================================] 100.00%
Done
CRC check: Success

参考文献
下記のGowin EDAのマニュアルの8章がにCLIで操作するためのコマンドが載っています。

http://cdn.gowinsemi.com.cn/SUG100E.pdf

またピンの番号は以下から確認できます。


この記事が気に入ったらサポートをしてみませんか?