ZYNQ MPSoCでxsdkを使ったソフトウェア開発と、ILA使ったハードウェア開発を行う時の方法がわからないという話を聞いたので、普通にILAやVIOが使えますよ、というメモ。
開発環境はVivado 2019.1.3、ターゲットはTrenz TE0802-02です。
続きを読むZYNQ MPSoCでxsdkを使ったソフトウェア開発と、ILA使ったハードウェア開発を行う時の方法がわからないという話を聞いたので、普通にILAやVIOが使えますよ、というメモ。
開発環境はVivado 2019.1.3、ターゲットはTrenz TE0802-02です。
続きを読むVitisは、ホスト-FPGA間をOpenCL的に利用できるようにするXilinxの開発環境です。ホストとFPGAの間のデータ転送や制御の仕組みを自分で考えなくていいので楽なのですが、それでもちょっとした回路を動かす時にホスト側のC++コードを書くのがちょっと面倒。
と思っていたら、PYNQでAlveoにxclbinをロードして動かすのが簡単だということを知りました ( 高位合成で加速するアクセラレータ開発 (1) ~ ACRi ルームで体験してみよう )。で、RTLカーネルだったらどうなるのかな?とテストしてみたところ、同じようにRTLから作ったxclbinもPYNQから呼び出せることがわかりました。これは便利。
続きを読むZYNQを使ったシステム開発ではPS上でUbuntuを実行すると何かとはかどります。というわけで、Eclypse Z7上でUbuntu 18.04を走らせるためにu-bootとLinuxをビルドしました。手順は、ikwzmさんの https://github.com/ikwzm/FPGA-SoC-U-Boot-ZYBO-Z7 を参考に(ほぼそのままトレース)しています。
リソースなど一式は https://github.com/miyo/build-eclypsez7-linux にコミットしてます。
続きを読むプログラムの動的な振る舞い、特にメモリアクセスの様子をみてみたくなることがあります。
たとえば、2017年のデザインガイアで発表されていたFPGAアクセラレータ開発を支援するためのツール環境では、ValgrindとGDBを使ってメモリアクセスの様子を可視化していて、面白そうだな、やってみたいなと思わされます。
とりあえず Valgrind + GDBでメモリアクセスを確認する方法を、ちょっと試してみました。
続きを読むGoogleがオープンソースで公開した高位合成処理系XLSをためしてみました。サンプルは https://github.com/google/xls/tree/main/xls/examples にあるのですが、Goっぽい感じでハードウェアが設計できる処理系のようです。XLS Tools Quick Startがあるのですが、何ができるのかよくわからなかったので試してみました。
続きを読むIntelがCPUでもGPUでもFPGAでも同じようにプログラミングできるOneAPIをはじめる、DevCloudで試すことができる、という話を聞いたのでためしてみました。
説明書は https://github.com/intel/FPGA-Devcloud にあるのですが、若干手順が分かりづらかったのでメモです。
続きを読むVitis/Vivado 2019.2ではVivado SDKがなくなり、ソフトウェア開発はVitisに統合されました。MicroBlazeを使う場合もVivadoでハードウェアモジュールを組み立ててVitisでソフトウェアの開発をします。
この記事は、Vivado 2020.1でArtyを対象にMicroBlazeを使った開発をする手順のメモです。
続きを読むIntel PACの動作を波形レベルでデバッグしたい場合、mmlinkを使ってデバッグすることができます。新しくstpファイルを作成する場合、Intel PACにSignal Tapを仕込むの手順でデバッグ可能なFPGA用ビットファイルを作ることができます。
ですが、stpファイルと設定済のafu_synth_setup向けファイルが存在している場合に、
$ afu_synth_setup --source hw/rtl/filelist.txt build_synth
$ cd build_synth/
$ ${OPAE_PLATFORM_ROOT}/bin/run.sh
とゼロからビルドすると、うまくデバッグ可能なFPGA用ビットファイルを生成することができませんでした。毎回stpファイルをSignal Tap Logic Analyzerで作成しデザインに組み込むのは面倒なので、回避策が欲しいところ。というわけで、以下が回避方法です。
続きを読むIntel PACはmmlinkを使って、あたかも実機とJTAGと接続しているようにSignal Tapで信号の変化を観察してデバッグできます。
Accelerator Functional Unit Developer’s Guide for Intel(R) FPGA Programmable Acceleration Cardの6. AFU In-System Debugを見ながら作業すればよい、のですが、環境によるパラメタの設定が若干わかりづらかったので、hello_afuにSignal Tapを仕込む場合の実例を紹介します。
信号見えるまでは、何が悪いのか分からず不安ですから…
ad-refkit では githubにあるXilnxリポジトリのLinuxカーネルを利用しています。これは、ZYNQ PLのコンフィギュレーションに /sys/kernel/config/device-tree/overlays を使います。
ad-refkitの場合 init.sh の実行中にFPGAのコンフィギュレーション処理が含まれていますが、マニュアルで実行したい場合は次の手順で。
python3 fpga-bit2bin.py --flip design_1_wrapper.bit fpga.bin
cp /home/user/fpga.bin /lib/firmware/
rmdir /sys/kernel/config/device-tree/overlays/fpga # if exists
mkdir -p /sys/kernel/config/device-tree/overlays/fpga
dtc -I dts -O dtb -o fpga.dtb fpga.dts
cp fpga.dtb /sys/kernel/config/device-tree/overlays/fpga/dtbo
fpga-bit2bin.pyは github からダウンロードできます。
再コンフィギュレーションする場合には一度 rmdir
で overlays
の下の fpga
ディレクトリを削除するのが肝。rm -rf
ではないので注意。