GGFront: A GHDL/GTKWave GUI Frontend
Copyright (C) 2018-2023 Naoki FUJIEDA. All rights reserved.
パッケージの内容
GHDL/ | VHDLシミュレータ(再配布) |
gtkwave/ | 波形ビューア(再配布) |
sources/ | 各プログラムのソースコード |
work/ | 作業用ディレクトリ |
COPYING | 著作権表記 |
GGFront.exe | GGFront本体 |
README.txt | このファイル |
動作環境
Windows 8.1 以降 + .NET Framework 4.6 以降
※ 最新の Windows 10 で動作確認済
使い方
- GGFront.exe を実行
メインのウィンドウが表示されます.通常は GHDL・GTKWave の横の Guess にチェックが入っており,自動検出が有効になっているかと思いますが,もしも「●●が所定の場所に見つかりませんでした」と表示された場合は,手動でこれらのファイル(GHDL.exe, GTKWave.exe)の位置を指定する必要があります. - ソースを追加
ウィンドウ右側の Add ボタンをクリックして,追加したい VHDL ソースファイルを選択してください.エクスプローラからファイルを Source File(s) のリストにドロップすることでもソースを追加できます. - シミュレーション対象の選択
ソース内にある entity の階層関係が Hierarchy リストに表示され,そのうちシミュレーション対象は太字で表示されます.テストベンチ(通常は一番上の階層にある)を選択して,Set as Top ボタンを押してください. - Compile and Simulation ボタンを押す
正しくシミュレーションができていれば,「シミュレーションは ● ns 後に停止しました.」と表示されます.もしエラーが出た場合は「●●中にエラーが~~」と表示されたあと,エラー内容が別のウィンドウに表示されます.所定の制限時間までにシミュレーションが終了しなかった場合,「シミュレーションは ● 以内に終了しませんでした」と表示されます.波形ファイルはエラーが発生した場合を除き,テストベンチと同じファイル名で,拡張子.vcdをつけて保存されます. - View Waveform ボタンを押す
GTKWave が自動的に起動します.確認したい信号を選択して Append ボタンを押し,Zoom Fit/In/Out を用いて拡大率を調整して,波形を確認します. - ソースファイルを修正した場合
GGFront 上で再度 Compile and Simulation ボタンを押すと,波形ファイルが更新されます.GTKWave 上で Reload ボタンを押すと更新が反映されます.
注意事項
作業用ディレクトリ(work/)は,GHDLのためにGGFrontが一時的に利用するディレクトリですので,中身はシミュレータのコンパイル時(Compile and Simulateを押した時)に自動的に削除されます.重要なファイルを work/ に置かないように注意してください.
VHDL-93 の言語仕様には,シミュレーションを終了する標準的な手法がありません.そのため,GGFront においては,シミュレーションの「終了」を「重要度failure の assert 文によってシミュレーションが失敗した場合」と定義しています.これ以外の手法でシミュレーションを「終了」させているテストベンチに対しては,正しく動作しない場合があります.
v0.4.0 よりテストベンチ内でファイルを読み書きするケースに対応しました.VHDL-93 の言語仕様である read_mode, write_mode を使った方法だけではなく,VHDL-87 の言語仕様である in, out を使った方法にも対応しています.ただし,いずれの場合も,ファイル名が文字列リテラルとして与えられている場合に限ります.
ライセンス
パッケージ内のGHDLおよびGTKWaveは,GPL v2により再配布しているものです.GGFront自体には New BSD ライセンスが適用されます.詳しくは,COPYING を参照してください.
謝辞
GGFront の改良の一部は,愛知工業大学ディジタルシステム研究室の卒業生の卒業研究をもとに実施されています.以下の卒業生の貢献に感謝いたします.
- エラーメッセージの整形と日本語による解説機能:
池田 朋弘 さん(2020年3月卒業) - 列挙型信号の波形表示機能:
棚橋 元哉 さん(2023年3月卒業)
更新履歴
v0.7.4 2023-12-13
- 文字列リテラル内に -- が含まれている場合に,誤ってコメントと認識してしまっていた問題を修正.
- 列挙型信号の値の確認について,type 文や signal 文が複数行にまたがる場合に対応するとともに,そうした記述の読み込みに異常に長い時間を要していた問題を修正.
v0.7.3 2023-11-22
- v0.7.1 での修正時のミスにより,列挙型信号の値の確認機能が正しく動作しなくなっていた問題を修正.
v0.7.2 2023-10-25
- v0.7.0~v0.7.1 において,ファイル末尾にエラーが存在する VHDL 記述を解析した際に,エラーメッセージの整形でクラッシュしていた問題を修正.
- エラーに対する説明・対処法を追加 (47種類 → 48種類).
v0.7.1 2023-05-19
- 列挙型信号の値の確認機能について,波形ファイルのサイズが大きい場合の性能上の問題を修正.
v0.7.0 2023-03-31
- GHDL の仕様上これまで GTKWave 上で確認できなかった列挙型信号の値を,確認できるようにした.
- エラーに対する説明・対処法を追加 (42種類 → 47種類).
v0.6.0 2022-02-15
- パッケージに同梱している GHDL のバージョンを 1.0.0 に更新.これにより表示されるようになったエラー発生箇所は,メッセージ画面では茶色の等幅フォントで表示されるようにした.
- GHDL を実行する際,個別のファイルを解析(Analyze)してから全体を再分析(Elaborate)するように変更.
- 上記によりソースコードの順序入れ替えの機能が不要になったため,廃止.
- エラーに対する説明・対処法を追加 (42種類 → 47種類).
v0.5.3 2021-11-13
- Set as Top ボタンが押されるまでは,トップモジュールを自動的に認識して設定しつづけるように変更.
- component に対応する entity が見つからない場合,Hierarchy リストに茶色で表示されるようにした.
- 設定項目が十分少なくなったため,プロジェクトのセーブロード機能を廃止.
- エラーに対する説明・対処法を追加 (40種類 → 42種類).
v0.5.2 2021-08-24
- エラーメッセージの一部にカーソルを当てたときのツールチップが,一定時間後に自動で閉じないように変更.
v0.5.1 2021-08-20
- シミュレーション中のエラー (bound check failure など) が発生した際のエラーメッセージの整形に対応.
- エラーに対する説明・対処法を追加 (34種類 → 40種類).
v0.5.0 2020-09-09
- エラー発生時のメッセージを,テキストファイルに関連付けられたアプリで開くのではなく,GGFront 上の子ウィンドウに表示するように変更.
v0.4.5 2020-04-30
- シミュレーション時間の制限で,一部の値が利用できなかった不具合を修正.
- シミュレーション終了時刻がミリ秒またはフェムト秒単位であった場合に,エラーと扱われていた不具合を修正.
v0.4.4 2020-04-21
- シミュレーション時間,実時間のタイムアウトの変更に対応.
- 'X'や'Z'などのリテラルを含む記述を正しくコンパイルできなかった不具合を修正.
v0.4.3 2019-11-26
- entity の循環参照を判定するロジックに誤りがあったのを修正.
v0.4.2 2019-08-03
- ファイルを読み書きするentityがシミュレーション対象に含まれない場合でも,作業用ディレクトリとの間でファイルのコピーを行おうとしてしまっていた不具合を修正.
- パッケージに同梱しているGHDL,GTKWaveのバージョンを,それぞれ 0.36,3.3.100 へと更新.
v0.4.1 2019-07-24
- 設定ファイル(setting.xml)に書き込めない状況下で,GGFrontが起動できない,または強制終了する不具合を修正.
v0.4.0 2019-04-26
- テストベンチ内でファイルを読み書きする場合(ただし,ファイル名が文字列リテラルとして与えられている場合に限る)に対応.
- ソースコードおよびクラスの構造を見直し.
v0.3.2 2018-12-14
- GHDLの実行にタイムアウトを設定することにより,GHDLがハングする状況(例えばテストベンチでwait文の含まれないprocessを書いてしまったなど)で,GGFrontがGHDLごとハングしてしまう不具合を修正.
v0.3.1 2018-11-06
- ソース修正後に参照関係を再解析するボタン(Refresh)を追加した.
- トップモジュールとして選択されたEntityを青字で表示するようにした.
v0.3.0 2018-08-24
- GHDLやGTKWaveが所定の相対パス(パッケージに含まれる通り)にある場合,それらをワンクリックで指定できるようにした.
- ソースを簡易解析して,Entityの参照関係を表示できるようにした.これにより,トップモジュールをリストから選択できるようになった.
- 波形ファイルの保存先を,都度選択する方式ではなく,トップモジュールに対応するソースと同じ名前の.vcdファイルを自動選択する方式に変更した.
- ソースの解析順を変更するボタンを追加.
- ライブラリに起因するシミュレーション時の警告を出力しないようにした.(GHDLの --ieee-asserts=disable オプションを追加)
v0.2.1 2018-06-28
- GHDLから出力されるメッセージが多いとGGFrontがハングする不具合を修正.
v0.2.0 2018-05-11
- 呼び出し先のentityが見つからない場合に警告を表示するようにした.(GHDLの --warn-default-binding オプションを追加)
- std_logic_unsigned を使用した場合に「=」演算子でエラーが出るのを修正.(GHDLの -fexplicit オプションを追加)
v0.1.0 2018-03-29
- 最初のバージョン.