Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Altera SDK for OpenCL:シミュレーション環境は?


Twiiterでツイートした内容を整理したものですが。。。

Altera SDK for OpenCLでは、動作確認の手段として、
 1)、FPGA実機
 2)、エミュレータ
を用意しています。

FPGA実機では、OpenCL => Verilog HDL => Fittingをすべてしてから、
FPGAでの確認。
OpenCL => Verilog HDLは直ぐ(数秒から数分)ですが、Fittingが長い。。
本当に長い。

そのために、エミュレータというものが用意されていて、
OpenCL => Verilog HDLの代わりに、
OpenCL => x86コードでホストPC(x86_64)で動作確認ができるというもの。
Altera SDK for OpenCLは、LLVMベースのツールなので、
Verilog HDL生成の代わりに、
x86コードを生成することでエミュレータ環境を構築しているわけです。

エミュレーションで動作確認をしても、
LLVM => Verilog HDLでの動作確認をしているのではないのです。

そこで、
 3)、シミュレータ
での動作確認ができればいいのだが、そのためにはいろいろやらないとダメですね。

 OpenCLのアプリ => libOpenCL => FPGA実機

 OpenCLのアプリ => libOpenCL => HDLシミュレータ
って感じに。

OpenCL => Verilog HDLで生成したOpenCL部のトップ階層を
libOpenCL => HDLシミュレータ経由で制御できれば、いいだけです。

とあるシステムを利用すれば、libOpenCL => HDLシミュレータの仕組みは作れます。

HDLシミュレータ内で、OpenCL部のトップ階層ので各種レジスタへのアクセスし、
OpenCLカーネルを実行し、終了後、libOpenCL側に通知すればいいだけ。

FPGAのメモリ(OpenCLのGlobal Memory)へ/からのデータ移動も
libOpenCL <=> HDLシミュレータでやればできます。

問題は、FPGAへのFitting時間とシミュレーション時間のどちらが速いかです。

ModelSim ASEは遅いので、FPGAへのFitting時間の方が速く終わってしまうという可能性は大ですが、シミュレーション環境があると便利だと思いますが。。。

皆さん、いかがでしょうか?