はじめに
最近のFPGA開発において、AI処理の高速化や低消費電力化を実現するために、Xilinx社の Versal に搭載されている AI Engine の活用が注目されています。
これまでAI Engineの開発には、主にVitisやC/C++ベースの開発環境が必要でしたが、MathWorksのMATLAB/Simulink環境からもAI Engine開発が可能になったようです。
(こんな製品例題が有りました。)
早速私もお試し中なのですが、まだ色々とハマりポイントが多かったので、情報共有致します。
本記事では、まず第一歩として「環境構築編」としています。
この記事は、以下のような方に役立つ内容かと思います。
1.MATLABユーザーでFPGA開発に興味がある
2.モデルベースデザインを使ってAI Engineの開発をしてみたい
3.Versal + AI Engine による高速な信号処理を試してみたい
かかれていること
本記事では、以下の内容を扱います
- MATLAB/Simulink から AI Engine 開発を始めるための必要なツール
- 開発環境の構成とバージョン整合性
- Xilinx ツールとの連携の初期セットアップ
- よくあるハマりポイントと対処法
実際の開発(アルゴリズムの実装やAI Engineカーネルの記述)は、次回以降の記事で紹介します。
環境構成
AI Engine 開発をMATLABから行うためには、以下のソフトウェアとハードウェアが必要です。
私も下記構成で試しています。
✔ ソフトウェア構成(2025年時点での推奨)
- OS
- Ubuntu 20.04 LTS
- MATLAB
- バージョン: R2024b Update3以降 (Linux版)
- ツールボックス
- HDL Coder
- Fixed-Point Designer
- MATLAB Coder
- Embedded Coder
- Simulink Coder
- HDL Verifier(必須ではないが、AI EngineとFPGA連携検証に使用)
- Simulink
- MALTAB
- Xilinx
- Vivado 2023.1
- Vitis 2023.1
- Vitis Model Composer 2023.1
- Momory
- 64GB (最小は32GB:AMD Vivado™ Design Suite: Standard & Enterprise Edition)
✔ ハードウェアボード例
- Xilinx VCK190
- AI Engine搭載のVersalプラットフォーム
MATLABのインストール
MATLABのインストールはMathWorksのページから可能です。
https://www.mathworks.com/downloads/
R2024bのUpdate3以降のバージョンをダウンロードしましょう。
Vivadoのインストール
Vivado/Vitis Model Composer は2023.1をインストールします。
AMDのソフトウェアダウンロードセンターからダウンロードしましょう。
Linuxバージョンをインストール。
Vivadoのインストール時に途中で止まってしまう
Vivadoのインストール時に色々とトラップが有ったのでここに記します。
下記のページを参考にしました。
- https://marsee101.blog.fc2.com/blog-entry-6251.html
- https://yuyuyuroom.site/2023/12/19/ubuntu%E3%81%B8vivado%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/
インストール時にgenerating installed device listという項目が出て、そこでインストールが止まってしまう問題が発生します。
これは必要パッケージが欠けているため発生している事象であり、下記のコマンドを実行することで、回避可能です。
sudo apt install -y tofrodos gawk xvfb git libncurses5-dev tftpd zlib1g-dev \
zlib1g-dev:i386 libssl-dev flex bison chrpath socat autoconf libtool \
texinfo gcc-multilib libsdl1.2-dev libglib2.0-dev screen pax build-essential \
libc6-dev-i386 net-tools graphviz libncursesw5 libgmp3-dev libncurses5 libtinfo5 \
libncursesw5-dev ocl-icd-opencl-dev opencl-headers ocl-icd-libopencl1 gcc-multilib
その他必要パッケージのインストール
AI Engineの合成時にxtermが無いとうまく合成できないようです。
これインストールする必要が有ります。下記のコマンドで入れましょう。
sudo apt install xterm
MATLAB上からVersalの実機と通信する際に下記のようなエラーが発生する場合が有ります。
Caused by:
Error using loaddefinedlibrary
/home//Documents/MATLAB/SupportPackages/R2024b/3P.instrset/libiio.instrset/glnxa64/usr/lib/x86_64-linux-gnu/libiio.so: undefined symbol: libusb_set_auto_detach_kernel_driver
これは、libusb_set_auto_detach_kernel_driver()関数を持つlibusbのshared objectよりも優先順位の高いパスに別のlibusbのShared objectがあるためバッティングしているようです。
そのため下記のコマンドで改めて必要なライブラリのインストールを行います
sudo apt update
sudo apt install libusb-1.0-0
併せて、このライブラリを最初に呼び出されるようにすればOK。bashrcに下記のように書いておきます。
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libusb-1.0.so.0
念のため一度読み込みます。
source .bashrc
MATLAB & Model Composerの立ち上げ
下記のコマンドでMATLAB及びModel Copmoserを立ち上げます。
model_composer -softwareopengl
ここで、-softwareopenglというオプションを付けています。このオプションはソフトウェアレンダリングでOpenGLの処理を行うことを選択します。
Model ComposerでAI Engineを使うとクラッシュが頻発しますが、このコマンドで回避できます。
立ち上がったら、さっそくMathWorksが提供している下記の例題を動かしてみます。
https://www.mathworks.com/help/hdlcoder/ug/integrate-hdl-ip-core-with-versal-ai-engine.html
MATLABのコマンドウィンドウで下記のコマンドを打つことでも立ち上げることが出来ます。
openExample('hdlcoder/IntegrateHDLIPCoreWithVersalAIEngineExample')
MATLABでの準備
MathWorksで提供しているVersal開発用のサポートパッケージをインストールします。
「Add-ons>HDL Coder support package for AMD FPGA and SoC Device」が必要なサポートパッケージですので、これをインストールします。
MATLABでのビットストリーム生成
Simulinkを立ち上げて、HDL CoderのアプリからBuild Bitstreamボタンを押すことで合成が実行されます。
ディレクトリの中にxclbinファイルが生成されれば合成完了です。
もしファイルが存在していないエラーが出る場合
V++コンパイル時に下記のようなエラーが発生する場合が有ります。
ERROR: [VPL 17-275] File does not exist [/home//Documents/MATLAB/Examples/R2024b/hdlcoder/IntegrateHDLIPCoreWithVersalAIEngineExample/hdl_prj6/vitis_prj/_x/link/vivado/vpl/prj/prj.gen/sources_1/bd/ext_platform/ip/ext_platform_noc_lpddr4_0/bd_0/ip/ip_0/ip_0/bd_f0b4_MC1_ddrc_0_phy_ddrmc.elf]
下記のログファイルを確認します。
vivado/vpl/prj/prj.gen/sources_1/bd/ext_platform/ip/ext_platform_noc_ddr4_0/bd_0/ip/ip_0/ip_0/temp/MemGen.log
これは、内部的に下記のエラーが発生していることが原因のようです。
"Error while loading shared libraries: libudev.so.1: cannot open shared object file: No such file or directory"
これは、libudev.so.1が見つかっていないor登録されていないことが原因のようです。
そこで、下記のコマンドを実行してください。
sudo apt-get install libudev-dev
その後bashrcコマンドをMATLABで実行。
export LD_PRELOAD=$LD_PRELOAD:/lib/x86_64-linux-gnu/libudev.so.1
念のため一度読み込みます。
source .bashrc
この状態で再度Build Bitstreamしてみると、上手くコンパイルできました。
バージョン
2025/8/20 初版リリース
2025/8/21 ファイルが存在していないエラーの対応方法について追記