Vivado HLS基本実験

VivadoHLSでは,C/C++からよりよいハードウェアを作成するために,いくつかのpragmaで指示をあたえることができるようになっています.どんなpragmaがあり,どのような効果があるのか,試してみましょう.

データに関するpragmaの調査と実験

Vivado HLSではトップモジュールに選択した関数の引数が,RTLモジュールとの入出力になります.RTLモジュールとのインターフェースをどのようにしたいかは,引数に対するpragmaで指定することができます.

pragmaによって,

  • std_logic_vector のような単純な信号
  • ブロックメモリ相当のインターフェース
  • FIFO相当のインターフェース
  • AXI4-Stream相当のインターフェース

を選択できます.ユーザガイドを参考にpragmaを指定し,合成されるHDLモジュールを調査してみましょう. C/RTLシミュレーションでインターフェースの振る舞いを観察してみるとよいでしょう.

回路生成方式に関するpragmraの調査と実験

高速あるいは効率良く動作するハードウェアの設計では,データ並列性やパイプライン並列性の活用が必要不可欠です.Vivado HLSではデータ並列性やパイプライン並列性の抽出は,ほぼ人手によるpragmaに委ねられています.言いかえれば,正しくpragamを指定できなければ,Vivado HLSをうまく使いこなすことはできません.

次のキーワードを参考にpragmaを調べて,合成されるHDLモジュールを調査してみましょう.

  • DATAFLOW
  • UNROLL
  • PIPELINE

C/RTLシミュレーションで,pragmaの指定の有無による実行サイクル数の変化を観察してみるとよいでしょう.