LoginSignup
0
0

More than 3 years have passed since last update.

Vitis_HLS/Vivado/Vitis(2020.2.2) で作成した API がアップデートされない

Last updated at Posted at 2021-05-23

Vitis_HLS(2020.2.2) で C 合成した回路を Vitis で使用する際、一部のドライバがアップデートされなくて嵌ってしまった。
このメモはその時の解決法を書いたものです。もっといい方法があれば教えてください。

再現方法

「FPGA プログラミング大全第2版」にある、Patblt 回路を構成したのですが、このとき、offset を slave にするのを忘れて合成し、Vivado に取り込んでしまいました。全く気づかないまま論理合成し(これは成功)、Vitis を起動してプログラムを打ち込んでみると、XPatblt_Set_dstout 関数がないというエラーが発生しました。

ps7_cortexa9_0/standalone_domain/bsp/ps7_cortexa9_0/libsrc/patblt_v1_0/src/xpatblt.h を見ると確かにこの関数は定義されていません。xpatblt.c を見ると、やはり定義されていませんでした。

Vitis_HLS に戻って確認したところ、offset を slave にし忘れていることが判明したため、slave を指定して C 合成をやり直し、Vivado でデバイスを update して bitstream を作成、ハードウェアを export し直しました。

次に Vitis に移り、「Update Hardware Specification」を選択してハードウェア構成を取り込みました。
Clean で全ての生成ファイルをクリアしたあと、ps7_cortexa9_0/standalone_domain/bsp/ps7_cortexa9_0/ libsrc/patblt_v1_0/src/xpatblt.h を見ると、相変わらず XPatblt_Set_dstout 関数が定義されていません。

もちろん、この関数を使ったサンプルプログラムはコンパイルできません。
さて、どうするか?

hw ツリーにヒントが

よく見ると、hw/drivers/patblt_v1_0/src/xpatblt.h に定義されているファイルには XPatblt_Set_dstout 関数が定義されており、xpatblt_hw.h を見るとレジスタのオフセットも正しそうです。

そこで、以下の項目に修正を加えることにしました:

  • ps7_cortexa9_0/standalone_domain/bsp/ps7_cortexa9_0/libsrc/patblt_v1_0/src/xpatblt.h: hw/drivers/patblt_v1_0/src/xpatblt.h の XPatblt_Set_dstout をコピーする。
  • ps7_cortexa9_0/standalone_domain/bsp/ps7_cortexa9_0/libsrc/patblt_v1_0/src/xpatblt.c: hw/drivers/patblt_v1_0/src/xpatblt.c の XPatblt_Set_dstout をコピーする。
  • ps7_cortexa9_0/standalone_domain/bsp/ps7_cortexa9_0/libsrc/patblt_v1_0/src/xpatblt_hw.h: hw/drivers/patblt_v1_0/src/xpatblt_hw.h を丸コピーする。

動くのか?

旧設定と新設定ではレジスタのオフセット値が異なっており、どちらか一方が正しいことになります。ここは新設定が正しいだろうという予想のもと、修正しましたが、実機で動くのか試して見る必要がありそうです。
そこで、patblt を使用したサンプルプログラムを Z7-20 ボードで実行してみました。

結果は新設定の方が正しいことがわかりました。
たまたま Vitis のバグを踏んだのですかねえ。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0