ImplementationByDpi
NOODLYBOXを、Tcl実装よりもシミュレーションを高速に(rev88で約6倍)すること、ソースコードの見通しをよくして拡張・保守をしやすくすることを目的として、DPI-Cで書き直しました。
C側は、C++を使って実装してあります。C++の演算子オーバロードの効果で、Tcl実装版と比べて、
FPGAをアクセスするプログラムの見た目を普通のCプログラムに近づけることができました。
DPI-Cの使い方の実例として人さまの参考になれれば嬉しいです。
ファイル一式の入手は?
svn checkout http://svn.sourceforge.jp/svnroot/noodlybox
で拾ってください。TortoiseSVNを使用してもチェックアウトが可能です。
とりあえず試すには?
ModelSim XE III/Starter 6.4bとMSYS+MinGWがインストール済みの、Windows XP Homeが動いているPCが必要です。
(DCMのHDLモデルを作るためにxaw2verilogを起動するので、Xilinx ISE 11のインストールも必要でした。2009.09.15追記)
手順は、ファイル一式を入手、展開し、MSYSのプロンプトを開いたら、
cd ~/noodlybox/dpisample
. settings.sh
make
cd msimv
make sim
を順にプロンプトに打ち込んでください。
開発状況
rev88時点
Tcl実装と同じ動作ができるようになりました。性能は、モジュールのロードが完了してから$stopまでを、Tcl実装とDPI-C実装で測って比べると、約6倍のスピードになっていました。
rev102時点
FPGAのレジスタを定義するCSVファイル(例:
/dpisample/samplefpga.csv)に予約レジスタが書かれていなくても(アドレスが飛び地になっていても)、構造体を正しく作れるようにしました。
構造体のレジスタアドレスのテストは、noodlybox/dpisampleでmakeを実行した後、msimvディレクトリに移ってmake addrtestを実行することで行えます。