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 件のコメント:
コメントを投稿