Model Composer HDL IP の生成 - 2021.2 日本語

Vitis Model Composer ユーザー ガイド (UG1483)

Document ID
UG1483
Release Date
2021-10-22
Version
2021.2 日本語

Model Composer では、RTL が自動的に生成され、これを HDL ライブラリにインポートしてほかのブロックと一緒に使用できます。Model Composer で HDL 用の出力ファイルが生成されると、まず C++ コードの生成 に示すように C++ コードが記述され、その C++ コードから RTL が合成されます。このプロセスは、Model Composer Hub ブロックの TargetSystem Generator に設定すると開始します。このコマンドでは、HDL ライブラリ用の IP パッケージが作成されます。

Model Composer には、プロセスのログ ウィンドウが表示されます。プロセスが終了すると、MATLAB ウィンドウに合成レポートが表示されます。合成レポートには、Model Composer で合成された RTL デザインのパフォーマンス見積もりとリソース使用率の詳細が含まれます。このレポートを確認すると、見積もりを確認して、モデルを見直すことができます。

図 1. 合成レポート

Model Composer で RTL の合成が終了すると、ログ ウィンドウに「Exporting RTL as an IP for System Generator for DSP」 (RTL を System Generator for DSP 用に IP としてエクスポート中) というメッセージが表示されます。このプロセスは Tcl スクリプト run_hls.tcl で処理され、Model Composer で HDL IP がエクスポートされます。

Model Composer では、このアルゴリズムにより、次の出力ファイルが生成されます。
  • SystemC (IEEE 1666-2006、バージョン 2.2)
  • VHDL (IEEE 1076-2000)
  • Verilog (IEEE 1364-2001)
  • 合成、C/RTL 協調シミュレーション、および IP パッケージの後に生成されるレポート ファイル。

Model Composer で HDL IP が生成されると、プロジェクト ディレクトリ構造が次の図のようになります。Edge_Detection_Sysgen フォルダーは、Model Composer Hub ブロックの Code Directory で指定したディレクトリです。Edge_Detection_prj フォルダーは、run_hls.tcl スクリプトで作成されたプロジェクトです。solution1 フォルダーは、Vitis HLS ソリューションです。詳細は、 『Vitis 高位合成ユーザー ガイド』 (UG1399) を参照してください。Solution1.json ファイルには、Model Composer HDL デザインでサブシステム IP を使用するのに必要な情報が含まれます。

図 2. System Generator の出力
Model Composer で生成した HDL IP は、次の手順で Model Composer HDL モデルにインポートできます。
  1. Model Compose HDL モデルを開いた状態で Simulink Editor のキャンバスを右クリックし、Xilinx BlockAdd をクリックします。モデルに追加可能な HDL ライブラリ ブロックがリストされます。
  2. ダイアログ ボックスでリストをスクロール ダウンするか、Add Block 検索フィールドに「HLS」と入力し、Vitis HLS ブロックをモデルに追加します。
  3. 新しく追加したブロックをダブルクリックして、Vitis HLS Block Parameter ダイアログ ボックスを開きます。
    図 3. Vitis HLS ブロック
  4. Browse をクリックして Model Composer 出力を生成した Vitis HLS プロジェクトの solution ディレクトリを指定します。たとえば、上記の例の場合は、Lucas_Kanade_prj/solution1 フォルダーを指定して OK をクリックします。

Vitis HLS テンプレート ブロックは Model Composer HDL モデルで Edge Detection IP に変換されます。必要に応じて、モデルに合わせてこの IP ブロックの角をドラッグして大きくします。ブロックは、最初は Vitis HLS テンプレートに合わせたサイズになっています。次の図は、Model Composer HLS モデルから生成した HDL IP を示しています。

図 4. Vitis HLS ブロック

Model Composer サブシステム モジュールの関数引数が Vitis HLS で変換されて 1 つの複合ポートにまとめられる場合は、そのポートの signal type 情報が不明になるので、HDL IP ブロックに含まれなくなります。このため、ポートで再形成、マップ、データ パック最適化などを使用した場合は、これらの複合ポートに対するポート タイプ情報を Model Composer HDL モデルで手動で指定する必要があります。これには、複合ポートがどのように作成されたかを理解してから、HDL モデル内で slice および reinterpretation ブロックを使用して、Vitis HLS ブロックをシステムのほかのブロックに接続する必要があります。

たとえば、R、G、B の 3 つの 8 ビット入出力ポートが 24 ビット入力ポート (RGB_in) と 24 ビット出力ポート (RGB_out) にパックされているとします。IP ブロックを Model Composer HDL に含めた後、次のようになる必要があります。
  • 24 ビット入力ポート (RGB_in) は、3 つの 8 ビット入力信号 (R_inG_inB_in) を正しくまとめた HDL ブロックで駆動される必要があります。
  • 24 ビット出力ポート (RGB_out) は、3 つの 8 ビット信号 (R_outG_outB_out) に正しく分割される必要があります。
ヒント: 複合タイプのポートに接続するための slice および reinterpretation ブロックの使用方法の詳細は、HDL ライブラリ を参照してください。