Vivado 2013.4のIP Integrator で、AXI VDMAのシミュレーションをしようとしている。AXI VDMAのシミュレーションは、当初 ISim で行ったが、最後までシミュレーションすることができずに断念した。次に、Questaでシミュレーションを行ったら、最後までシミュレーションすることができた。今度は、AXI VDMAのシミュレーションをVivado 2013.4のシミュレータでやってみた。

出来上がったVivado 2013.4 IP Integrator の画面を下に示す。
4fdd9959.png


これで、Verilog HDLのラッパーファイルを生成して、テストベンチとCMOSカメラのモデルを用意してシミュレーションを行った。そうしたら、コンパイルは通ったのだが、シミュレーションが始まった所でエラーが出てしまった。
2237a69a.png


それは、ビルトインFIFOのBehavioral Simulation Modelがサポートされていないので、エラーだそうだ。ショック。。。

FAILURE : Behavioral models do not support built-in FIFO configurations. Please use post-synthesis or post-implement simulation in Vivado.


post-synthesis Simulation だったら問題ないということで、論理合成を行った。無事に論理合成が成功して、post-synthesis Simulation を行ったが、こっちは問題ない。しかしやはり遅いですね。。。
f531b4ee.png


100usec シミュレーションをしてみたが、3分09秒かかった。100usec当たり3分として、17msec間シミュレーションをするのにかかる時間は170x3=510分、510分/60 = 8.5時間必要だ。長いし、信号名が論理合成後の信号名になってしまうので、見にくい。

Web上で検索すると、”AR# 56989 LogiCORE IP AXI Video Direct Memory Access v6.0 - 「FAILURE : Behavioral models do not support built-in FIFO configurations」というエラー メッセージが表示される”がヒット。。。
tcl コマンドを実行すると、BUILT_IN FIFO が、ビヘイビアー シミュレーションをサポートするブロック RAM FIFO に置き換えられるそうだが、論理合成はリソースのペナルティがあるとのことだ。つまり、使用するリソースが増えるということだと思う。

それでは、tclコマンド実行して、Behavioral Simulationする前に、インプリメントをしてみた。
インプリメントが成功した。
97d9faa1.png


次は、tclコマンドを実行した。

set_property -dict [list CONFIG.Component_Name {axi_vdma_0 } CONFIG.c_enable_debug_all {1}] [get_ips axi_vdma_0]


でも、axi_vdma_0 を選択しながらだと、エラーになってしまう。
axi_vdma_0 のダイアログを出しながらだと、tclコマンドが実行されない?どうやったらよいのだろうか?
4177ab9f.png


たぶん、この tclコマンドは、最上位の階層のAXI VDMAのFIFOを変更するスクリプトなので、IP Integrator の下の axi_vdma_0 には適用できないのじゃないだろうか?tclコマンドの書き方を探ってみることにする。

(2013/01/10:追記)
ikwzmさん、ありがとうございました。 CONFIG.c_enable_debug_allを1にして、シミュレーションすることができました。

・まずは、Diagramウインドウで、axi_vdma_0 をクリックして、Soure File Properties ウインドウのProperties タブをクリックする。

・CONFIGを展開して、c_enable_debug_all を1 にすると、axi_vdma_0 が大きくなった。今まで隠れていた出力信号が表示されるようになった。そうか、この辺りで、いろいろなオプション信号を表示させることが出来るのか?
a4dd0fc7.png


周りに、c_enable_debug_info_0, c_enable_debug_info_1 … などの信号があるので、これらを1 にすれば、信号が選べるのかもしれない?

・この状態でセーブして、Behavioral Simulation を行ったところシミュレーションが成功した。。。
0a3d88d8.png


・34msec シミュレーションを行った。私の古いパソコンで4時間40分かかった。見事にシミュレーションができた。
aac7c90b.png


Viavdo Simulator は ISim よりもきちんとシミュレーションが出来るようだが、まだ未サポートの事項があるようなので、注意が必要だ。早く、SystemVerilog に対応してくれるととても嬉しい。その際には、SystemVerilog に乗り換えたい。


試しにインプリメントしてみました。インプリメントも通ったので、問題なさそうです。
ac223e2e.png


Vivado 2013.4 IP Integrator で1つ回路を実際に作ってみて、ZedBoardで動作させてみようと思います。