Vitis Model Composer Hub ブロックを使用して出力を生成する際、Create and run C simulation をオンにしてテストベンチを作成して実行することもできます。このオプションをオンにすると、Model Composer の検証フローが使用されます。この場合、前述のように、Model Composer で makefile、テストベンチ (tb.cpp)、signals.stim などを含む出力ファイルも生成されます。テストベンチの目的は、Simulink シミュレーションで生成された入力スティミュラスを生成された C++ または RTL コードの最上位関数に適用し、関数の出力を signals.stim ファイルに取り込まれた出力サンプルと比較することです。検証フローでは、生成される出力によって、Model Composer で生成された C++ または RTL 出力のシミュレーションが実行され、Simulink シミュレーションで生成されたのと同じ結果が検索されます。
Model Composer Hub ブロックの Target が HLS C++ コードの場合、検証フローは次のようになります。
- モデルが Simulink でシミュレーションされ、入力と出力が signals.stim バイナリ ファイルに記録されます。
- Model Composer で C++ コードと
main()
関数を含むテストベンチ (tb.cpp) が生成されます。 - Model Composer でシミュレーションが開始します。
- 生成された C++ からの出力が Simulink シミュレーションで記録された出力 signals.stim と一致するかどうかが検証されます。
- 不一致があると、不一致のあった出力信号名とその実際の値と一致するべき値がレポートされます。
- シミュレーションが正常に終了したか (Pass)、エラーが発生したか (Fail) が Model Composer から返されます。
重要: Model Composer でのシミュレーション中に、次のエラー メッセージが表示されることがあります。
Failed to find a XilinxLibrary block connected to input port.
このエラーは、サブシステムの入力に HLS ライブラリ ブロックセットからのブロックに接続されていないものがあることを示しています。これは、信号をグループ化したり見やすくするために、単にサブシステムを通過するだけの信号があることが原因である場合もあります。この状況を回避するには、 ブロック ライブラリの Gain ブロックをデフォルト値 1、Output data type same as input をオンにして追加し、入力をこの Gain ブロックに接続します。図 1. 未接続の入力への Gain ブロックの追加