Gowin EDAをコマンドラインで使う方法の調査
参考資料
Gowin ソフトウェアユーザーガイド SUG100-4.3J, 2024-12-31
Gowin Programmer ユーザーガイド SUG502-1.9J, 2024-12-31
Gowin EDAをCLIで操作(M2)|kohshi54
gw_sh
¥x.x¥IDE¥bin¥gw_sh.exeがコマンドライン操作を行うためのソフト
これを立ち上げて、いろいろコマンドを入力して操作を行う
スクリプトファイルを与えて実行することもできる
コマンド一覧(マニュアル掲載)
create_project
open_project
add_file
Verilogファイルや制約ファイル(cstとかsdcとか)などを追加するコマンド
create_projectやopen_projectを事前に実行せずとも、add_file単体で使えるらしい
import_files
ファイルをプロジェクト/srcにコピー
rm_file
set_device
set_file_prop
もっぱらVHDLファイルに対してlibrary nameというのを指定するために使われるぽい?
run syn|pnr|all
論理合成や配置配線を実行するコマンド
set_file_enable
ファイルのenable/disableを設定する
ファイルを追加した状態を保ちつつ、一時的に無効にするのに使える
saveto
「現在のプロジェクトの設計データを tcl スクリプトに保存します。」と説明されているが、やってみないと分からないな
set_option
プロジェクトの関連属性とプロセスオプションを設定するコマンド
ぱっと見で重要そうなオプションを列挙
-top_module:トップモジュール名を指定
-include_path:インクルードパスを指定
-global_freq:周波数を指定
何の周波数だろう?
-verilog_std:Verilogのバージョンを指定
-gen_text_timing_rpt:タイミングレポートを生成
-use_xxxx_as_gpio:xxxxピンをGPIOとして使う
xxxx=jtag, sspi, mspi, rady, done, reconfign, i2c
run close
現在のプロジェクトを閉じる
runとcloseの間にアンダースコア無しが正しい?
source
指定したスクリプトファイルを実行
その他、TCL由来のコマンドは全部使える
Tcl Commands
コマンド一覧(マニュアルに無いもの)
gw_sh.exeを起動し、[]を入力したらコマンド一覧をあぶり出せた。
このやり方を発見したのは試行錯誤中の偶然。どこかに書いてあったのを見つけたというわけではない。
TCLにもともとあるコマンドと、上記のマニュアル記載分を差し引いたコマンドを掲載する。
auto_load_index
case
reset_option
run
set_csr
set_synplify_path
tclLog
add_fileとcreate_projectの順序
基本はcreate_projectの後にadd_fileを実行する
create_projectでプロジェクトディレクトリおよびプロジェクトファイルが作られる
create_projectの後に実行されたadd_fileにより、プロジェクトファイルにファイルが追加されていく
code:正しい順序
% create_project -name testprj -pn GW1NR-LV9QN88PC6/I5 -device_version C
% add_file foo.sv
% add_file bar.sv
testprj/testprj.gprjが生成され、中身は次のようになる
code:testprj.gprj
<?xml version="1" encoding="UTF-8"?>
<!DOCTYPE gowin-fpga-project>
<Project>
<Template>FPGA</Template>
<Version>5</Version>
<Device name="GW1NR-9C" pn="GW1NR-LV9QN88PC6/I5">gw1nr9c-004</Device>
<FileList>
<File path="/.../bar.sv" type="file.verilog" enable="1"/>
<File path="/.../foo.sv" type="file.verilog" enable="1"/>
</FileList>
</Project>
create_projectの前に実行したadd_fileは無視される
code:add_fileを先に実行しても効果は無い
% add_file foo.sv
% add_file bar.sv
% create_project ...
これで生成されたtestprj.gprjのFileListは空っぽ
create_projectの有無
create_projectやopen_project無しでも、特に問題なくビルド可能