インターフェイスの配列 - 2023.2 日本語

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

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

配列を最上位関数への引数として使用した場合、Vitis HLS では次のいずれかが想定されます。

  • メモリはオフチップで、Vitis カーネル フローのデフォルトとしてメモリにアクセスするために、Vitis HLS で M_AXI ポートがインタフェイスに合成される。
  • メモリは、Vivado IP のデフォルト動作としてレイテンシ 1 の標準ブロック RAM。データはアドレスの供給後 1 クロック サイクルで準備完了。

Vitis HLS でのこれらのポートの作成方法は、次のように設定します。

  • INTERFACE プラグマまたは指示子を使用して、インターフェイスを M_AXI、BRAM、または FIFO インターフェイスとして指定します。
  • INTERFACE プラグマまたは指示子の storage_type を使用して、RAM をシングル ポートまたはデュアル ポート RAM として指定します。
  • INTERFACE プラグマまたは指示子の latency オプションを使用して、RAM のレイテンシを指定します。
  • 配列最適化指示子 (ARRAY_PARTITION または ARRAY_RESHAPE) を使用すると、配列の構造を設定し直せ、I/O ポートの数も変更できます。
ヒント: データへのアクセスがメモリ (RAM または FIFO) ポートからに制限されるため、インターフェイス上の配列がパフォーマンスの障害となることがあります。これらの障害は通常、最適化指示子を使用することにより回避できます。
合成可能なコードで配列を使用する場合は、配列を必ずサイズ指定する必要があります。たとえば、配列インターフェイス の宣言 d_i[4]d_i[] に変更されると、Vitis HLS でデザインが合成できないことを示すメッセージが表示されます。
@E [SYNCHK-61] array_RAM.c:52: unsupported memory access on variable 'd_i' which is (or contains) an array with unknown size at compile time.