FC2カウンター FPGAの部屋 2014年01月09日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vivado 2013.4 で AXI VDMA をシミュレーションする

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

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

これで、Verilog HDLのラッパーファイルを生成して、テストベンチとCMOSカメラのモデルを用意してシミュレーションを行った。そうしたら、コンパイルは通ったのだが、シミュレーションが始まった所でエラーが出てしまった。
Vivado_2013_4_21_140108.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 を行ったが、こっちは問題ない。しかしやはり遅いですね。。。
Vivado_2013_4_22_140108.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する前に、インプリメントをしてみた。
インプリメントが成功した。
Vivado_2013_4_23_140109.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コマンドが実行されない?どうやったらよいのだろうか?
Vivado_2013_4_24_140109.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 が大きくなった。今まで隠れていた出力信号が表示されるようになった。そうか、この辺りで、いろいろなオプション信号を表示させることが出来るのか?
Vivado_2013_4_25_140109.png

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

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

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

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


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

Vivado 2013.4 IP Integrator で1つ回路を実際に作ってみて、ZedBoardで動作させてみようと思います。
  1. 2014年01月09日 04:37 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:2