メモリ モデル - 2023.2 日本語

Vitis 高位合成ユーザー ガイド (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 日本語

AMD Vivado™ HLS と AMD Vitis™ HLS の主な違いの 1 つは、内部メモリ モデルのインプリメント方法です。メモリ モデルは、コンピューター メモリ内でのデータの配置およびアクセス方法を定義します。これらは、データ アライメントとデータ構造のパディングという別々の問題ですが、関連しています。Vitis HLS では Vivado HLS とは異なるメモリ モデルが使用され、主な相違点は次のとおりです。

  • Vitis HLS では、GCC コンパイラ規格に従ってデータ アライメントが実行されます。
  • Vitis HLSVivado HLS では、インターフェイスの構造体/クラスの集約と分割の方法が大きく異なります。
    • Vivado HLS では、デフォルトでインターフェイス内の構造体が集約解除されていましたが、Vitis HLS では、構造体は集約したままにします。この場合、AGGREGATE/pragma HLS disaggregate プラグマ/指示子を使用すると、Vivado HLS の動作と同じようにできます。
      • 例外は、構造体の中に hls::stream オブジェクトがある場合、または構造体内部の配列がパーティションされている場合で、いずれの場合も Vitis HLS によって構造体が分割されます。
    • 内部変数やグローバル変数などのコード内の構造体は、デフォルトで分割され、構造体に示すようにメンバー要素に分解されます。作成される要素の数とタイプは、その構造体の内容によって決まります。構造体の配列は、複数の配列 (構造体の各メンバーに別々の配列) としてインプリメントされます。
  • Vitis HLS では、AXI などのインターフェイス プロトコルについてデータ アライメントの方法も異なります。
  • また、DATA_PACK のような廃止予定のプラグマも変更されています。

これらの変更の詳細は、ユーザー ガイド (UG1399) のVitis HLS のメモリ レイアウト モデルを参照してください。先に進む前に、このセクションを確認する必要があります。