Windows 10 Pro (v1909)
PYNQ-Z1 (Digilent) (以下、PYNQと表記)
PYNQ v2.5 Image
Vivado v2019.1 (64-bit)
秀丸エディタ Version 8.9.1
関連
概要
- DMA tutorial: DMA to streamed interfacesのtclファイルからBlock Designを生成し、bitstream生成
- => DMA転送できる
- DMA tutorial: DMA to streamed interfacesを参考にBlock Designを作成
- => DMA転送できない
- DMA tutorialと作成したBlock designのtclファイルから相違を確認して、Vivadoデザインで修正
- => DMA転送できない
- 修正したtclファイルをsourceコマンドで読みなおしBlock Design自体を再作成
- => DMA転送できた
Pythonスクリプト
作成したbitstreamに対しては、以下のPythonスクリプトを試した。
成功: DMA tutorial: DMA to streamed interfacesのtclファイルからBlock Designを生成し、bitstream生成
https://github.com/Xilinx/PYNQ_Workshop/tree/master/Session_4/bitstream
にあるdma_tutorial.tcl
をVivado上にて
source dma_tutorial.tcl
作成されたBlock Designからbitstreamを作成して、Pythonスクリプトを試した。
DMA転送ができた。
失敗: DMA tutorial: DMA to streamed interfacesを参考にBlock Designを作成
学習のため、上記で作成されたBlock DesignをVivado上で自分で作成してみた。
bitstreamを作成してPythonスクリプトを試した。
DMA転送に失敗した。
失敗: DMA tutorialと作成したBlock designのtclファイルから相違を確認して、Vivadoデザインで修正
次に、元になったtclファイルと自分で作成したtclファイルの相違を秀丸エディタで確認した。
ここで各種の名前の相違などが見つかり、Vivadoのデザイン画面にてそれらの名前の修正を行った。
その上でさらに相違を確認すると、axi_smc_2のM00_AXIとM01_AXIの接続を反対にしていたことに気づいた。
この修正をVivadoのデザイン画面にて修正した上でbitstreamを作成した。
DMA転送に失敗した。
成功: 修正したtclファイルをsourceコマンドで読みなおしBlock Design自体を再作成
ふと、「作成したBlock designのtclファイルからBlock designを自動生成するとどうか」と思った。
実行したところ、作成したbitstreamにてDMA転送が正常に実行されるようになった。
まとめ
Block designが期待通り動作しない場合、いったんtclファイルからBlock Designを生成しなおすと、不整合がなくなるのかもしれない。