2020年7月12日日曜日

VIvado_HLSとVivadoのBlockDesignをCMakeでビルドしてみた

Vivado_HLSとVivadoのBlockDesignをCMAKEでパッケージしてみた話です。 使っているヘルパースクリプトはgithubのリポジトリにて公開しています。 使用方法もgithubのリポジトリで公開しています。 また、CMakeLists.txtの例をヘルパースクリプトのリポジトリのexampleフォルダーに保存しています。

環境

Vivado 2019.2
Vivado_HLS 2019.2
CMake 3.10.2

事前準備

VIVADO_CMAKE_HELPER環境変数にリポジトリパスを登録します。 次のスクリプトを動かしてください。

source <path-to-repository>/setup.sh

使い方

vivado_hls

ディレクトリ構造

サンプルは以下に示すディレクトリ構造を想定しています。

project_top
├── CMakeLists.txt:リポジトリ同梱のCMakeLists.txt.hls_example
├── directives.tcl
├── include:ヘッダ置き場
├── src:ソース置き場
└── test:テストベンチ置き場
    ├── include:テストベンチ用ヘッダ置き場
    └── src:テストベンチ用ソース置き場

CMakeLists.txtの編集方法

ヘッダの保存パスをCFLAGS及びCFLAGS_TESTBENCHにリストとして追加してください。
ソースをSRC_FILESやTESTBENCH_FILESにリストとして追加してください。
リストは区切りの";"を":"に置き換えてください。(そうしないと誤動作する)
その後vivado_hls_export.cmakeをインポートしてください。
これはビルドに必要なcustom_commandとcustom_targetを追加します.
加えて、インストール設定も追加します。archive zipファイルを除き生成結果のipフォルダーをCMAKE_INSTALL_PREFIX/${project_name}にコピーします。

インストール

インストールは以下コマンドで実行できます。<>でくくった部分は環境に合わせて設定してください。

source <path_to_vivado>/setup.sh
source <path_to_this_repository>/setup.sh
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=<path_to_user_ip_repository>
cmake --build .
make install

vivado ip packager(ipx)

ディレクトリ構造

サンプルは以下に示すディレクトリ構造を想定しています。

project_top
├── CMakeLists.txt:リポジトリ同梱のCMakeLists.txt.ipx_example
├── scripts:blockdesign.tclが保存されることを期待
├── src:rtlモジュール置き場
└── test:テストベンチ置き場
    └── src:テストベンチ用ソース置き場

CMakeLists.txtの編集方法

blockdesign.tclはvivadoのwrite_bd_tclコマンドを使用して作成してください。
design_nameとCMakeLists.txtの編集方法project_nameが同じになるようにしてください。
(または生成されたblockdesign.tclを修正してdesign_nameを変更してください)
必要に応じてrtl moduleとtestbenchをそれぞれSRC_FILES、TESTBENCH_FILESに追加してください。
リストは区切りの";"を":"に置き換えてください。(vivado_hls同様)
その後vivado_ipx_export.cmakeをincludeしてください。
これはビルドに必要なcustom_commandとcustom_targetを追加します。
また、インストール設定を行います。archive zipファイルを除き生成結果のipフォルダーをCMAKE_INSTALL_PREFIX/${project_name}にコピーします。

インストール

インストールは以下コマンドで実行できます。<>でくくった部分は環境に合わせて設定してください。

source <path_to_vivado>/setup.sh
source <path_to_this_repository>/setup.sh
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=<path_to_user_ip_repository>
cmake --build .
make install

プロジェクトのネスト

プロジェクトがネストしていても動作します。ICS_IFに例があります。
add_subdirectory(modules)で追加し、各々ビルドできるようにCMakeLists.txtを作成してください。

0 件のコメント:

コメントを投稿