ImplementationByPipe
HDL実装とC++実装とのやりとりに、TclでもDPI-Cでもなく名前付きパイプを使用しています。速度的には、ModelSimの場合はDPI-Cと同等でした。
Tcl版やDPI-C版よりもシミュレータへの依存性が少ないので、将来的により多くのシミュレータで動かせるようになると思います。
対応状況は以下のとおりです。Verilog HDL列、VHDL列に入っているのはNOODLYBOXのリリース番号です。
| Simulator | Simulator ver. | Verilog HDL | VHDL |
| ModelSim XE III/Starter | 6.4b | 0009以降 | 0011以降 |
| Icarus Verilog | 20090923 | 0010以降 | - |
| GHDL | 0.28 | - | 挫折 |
| ISE Simulator | 11.1 | 対応予定 | 対応予定 |
- NOODLYBOX リリース0012にて、MinGW猫科研究所パックのgcc-4.4.1を使用していると、pipesampleがうまく動作しない問題があります(チケット#20073)。
_felidlabo/04_gccinstall.batで2) gcc-3.4.5-2006011703を選んだ場合は問題が発生しませんので、それで回避してください。
- GHDLに関して、GHDLがTEXTIOのflushをサポートするようになったら、対応化に再挑戦するつもりです。
ファイル一式の入手は?
svn checkout http://svn.sourceforge.jp/svnroot/noodlybox
で拾ってください。TortoiseSVNを使用してもチェックアウトが可能です。
ModelSimで試すには?
ModelSim XE III/Starter 6.4bとXilinx ISE 11とMSYS+MinGWがインストール済みの、Windows XP Homeが動いているPCが必要です。
手順は、ファイル一式を入手、展開し、MSYSのプロンプトを開いたら、
Verilog HDLの場合
cd ~/noodlybox/pipesample
. settings.sh
make msimproj-verilog
cd msimv
make sim
VHDLの場合
cd ~/noodlybox/pipesample
. settings.sh
make msimproj-vhdl
cd msim
make sim
を順にプロンプトに打ち込んでください。
make simの代わりにmake launchとすることで、シミュレータの起動だけを行うことができます。
Icarus Verilogで試すには?
Icarus Verilog 20090923とXilinx ISE 11とMSYS+MinGWがインストール済みの、Windows XP Homeが動いているPCが必要です。Icarus Verilogは、このサイトの
IcarusVerilogに書いてある方法でビルドできます。
手順は、ファイル一式を入手、展開し、MSYSのプロンプトを開いたら、
cd ~/noodlybox/pipesample
. settings.sh
make icarusproj-verilog
を順にプロンプトに打ち込んでください。
makeが完了すれば、icarusvディレクトリにpipesample.vcdというファイルが出来上がります。このファイルを見るには
GtkWaveを使うか、ModelSimに付属のvcd2wlfを使ってwlfに変換してから、ModelSimで開いてください。
補足:
make viewで
GtkWaveの起動ができます。また、
make pipesample.wlfでwlfへの変換ができます。
なお、シミュレータがIcarus Verilogの場合は、C++側をInsightでデバッグできます。pipesample/icarusv_makefileの
./$(EXENAME) 0 SH7751 &
となっている箇所の'.'の前に#を入れてコメント化して自動起動しないように直し、その状態で
- insight c_side_pipe.exe 0 SH7751 & でInsightを起動する
- Console Windowでb 55と打ってパイプの作成後の行にbreakpointを張る
- Console Windowでrunと打って55行目まで実行する
- MinGWのウィンドウで、rm *vcd と makeを実行する
とすれば、後は好きなだけステップ実行その他ができます。

Insightについて
インストール方法
- http://sourceforge.net/projects/mingw/files/ から、GNU Source-Level Debugger → Release Candidate_ gdb-6.6 → insight-6.6-mingw.tar.bz2 をダウンロードします。
- insight-6.6-mingw.tar.bz2を展開します。
- できたinsight-mingwディレクトリの中身を/usr/localにコピーします。
簡単な解説
DPI-C版よりさらにシンプルです。
- ModelSim用に作ったpipesample/sim.tclは、シミュレーション開始前にc_side_pipe.exeというファイルを
バックグラウンドで実行するようにしています。
- c_side_pipe.exeは、実行されると名前付きパイプを2つ(VerilogからCへの方向と、CからVerilogへの方向)作り、シミュレータがパイプに接続しにくるのを待ちます。
- 接続後は、MPU.vの入力信号および出力信号の状態をパイプを介してやりとりします。