FC2カウンター FPGAの部屋 ikwzm/vivado-hls-axi-dma-read-failureを試してみた

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

FPGAの部屋

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

ikwzm/vivado-hls-axi-dma-read-failureを試してみた

以前、

「Vivado HLS で DMA Read IP を作る2(絶対アドレス指定版)」を使って合成後の機能シミュレーション
「Vivado HLS で DMA Read IP を作る2(絶対アドレス指定版)」を使って合成後の機能シミュレーション2
「Vivado HLS で DMA Read IP を作る2(絶対アドレス指定版)」を使って合成後の機能シミュレーション3

「Vivado HLS で DMA Read IP を作る2(絶対アドレス指定版)」をIP として入れたVivado プロジェクトを論理シミュレーションすると動作するが、 Post-Synthesis Functional Simulation すると動作しない。しかし、Project Settings のTarget language を VHDL にする(DMA Read IPはVerilog HDL で IP化しているのだが)と Post-Synthesis Functional Simulation が動作するという現象があった。それを ikwzm さんが vivado-hls-axi-dma-read-failure でテストケースを作ってくれたのだが、Linux にVivado 2016.4 の環境が無かったためやっていなかった。今回は、環境を構築したためやってみた。

まずは、私のVirtualBox 上で vivado-hls-axi-dma-read-failureに書いてある通りにGitHub からクローンした(Ubuntu 16.04、Vivado 2016.4)
git clone https://github.com/ikwzm/vivado-hls-axi-dma-read-failure.git
cd vivado-hls-axi-dma-read-failure
git submodule init
git submodule update

vivado-hls-axi-read-failure_1_170411.png

これで、vivado-hls-axi-dma-read-failure ディレクトリが生成され、中にproject_post_synth_sim_ng ディレクトリとproject_post_synth_sim_ok ディレクトリがある。この中に create_project.tcl がある。
vivado-hls-axi-read-failure_2_170411.png

Vivado を起動した。
vivado-hls-axi-read-failure_3_170411.png

Vivado のGUI が立ち上がったので、まずは、tcl console で ~/vivado-hls-axi-dma-read-failure/project_post_synth_sim_ng に移動する。
cd /home/masaaki/vivado-hls-axi-dma-read-failure/project_post_synth_sim_ng/
vivado-hls-axi-read-failure_4_170411.png

souce create_project.tcl を実行した。
vivado-hls-axi-read-failure_5_170411.png

プロジェクトが生成された。
vivado-hls-axi-read-failure_6_170411.png

Flow Navigator からSynthesis -> Run Synthesis をクリックして、論理合成を行った。
論理合成が終了した。
vivado-hls-axi-read-failure_7_170411.png

Flow Navigator の Simulation -> Run Simulation -> Run Post-Synthesis Functional Simulation を選択して、論理合成後の機能シミュレーションを行った。
Vivado Internal Exception が出てしまった。tcl console から close_sim -force でもシミュレーションが落ちなかったので、vivado のプロセスを kill した。
vivado-hls-axi-read-failure_8_170411.png

もう一度、Vivado を起動して、tcl console に
cd /home/masaaki/vivado-hls-axi-dma-read-failure/project_post_synth_sim_ok/
souce create_project.tcl

を入力した。
vivado-hls-axi-read-failure_9_170411.png

論理合成を行った後、Flow Navigator の Simulation -> Run Simulation -> Run Post-Synthesis Functional Simulation を選択して、論理合成後の機能シミュレーションを行った。
Vivado Internal Exception が出てしまった。vivado のプロセスを kill した。
vivado-hls-axi-read-failure_10_170411.png

Linux でやるとうまく行かないので、vivado-hls-axi-dma-read-failure ディレクトリをそのままWindows 10 にコピーしてPost-Synthesis Functional Simulation をやってみた。
まずは、project_post_synth_sim_ng からやってみた。
もう一度、論理合成を行ってから、 Post-Synthesis Functional Simulation を行った。
vivado-hls-axi-read-failure_11_170411.png

100065 ns でタイムアウトで停止している。
vivado-hls-axi-read-failure_19_170411.png

波形を示す。
vivado-hls-axi-read-failure_12_170411.png
vivado-hls-axi-read-failure_13_170411.png
vivado-hls-axi-read-failure_14_170411.png

DMA Read IPのレジスタを設定するAXI4-Lite Slave アクセスのみだ。

次に、project_post_synth_sim_ok をやってみよう。
もう一度、論理合成を行ってから、Flow Navigator の Simulation -> Run Simulation -> Run Post-Synthesis Functional Simulation を選択して、論理合成後の機能シミュレーションを行った。
vivado-hls-axi-read-failure_15_170411.png

1636 ns で Failure: Simulation complete. で終了している。
vivado-hls-axi-read-failure_20_170411.png

波形を示す。
vivado-hls-axi-read-failure_16_170411.png
vivado-hls-axi-read-failure_17_170411.png
vivado-hls-axi-read-failure_18_170411.png

AXI4 Master も動作しているのが分かる。

(2017/04/12 : 追記)
Post-Synthesis Functional Simulation のOK とNG の違いですが、NG は Target language が Verilog です。
vivado-hls-axi-read-failure_21_170411.png

OK は、 Target language が VHDL です。
vivado-hls-axi-read-failure_22_170411.png

その違いで、論理合成がおかしくなるか?、正常か?が決まるようです。ちなみにDMA Read IP はVerilog HDLを指定してIP 化しています。
  1. 2017年04月11日 05:24 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3769-4a13b7c7
この記事にトラックバックする(FC2ブログユーザー)