ハードウェア エミュレーションでは、カーネル コードは RTL コードにコンパイルされるので、ザイリンクス デバイスにインプリメンテーションする前にカーネルの RTL ロジックを評価できます。ホスト コードはカーネルの RTL モデルのビヘイビアー シミュレーションと同時に実行でき、直接インポートされるか、Vitis HLS を使用して C/C++/OpenCL カーネル コードから作成されます。詳細は、ハードウェア エミュレーション を参照してください。
次の図に、ホスト コードの検証、ホストおよびカーネルのパフォーマンスのプロファイリング、FPGA リソース使用量の見積もり、ハードウェア (RTL) の正確なモデルを使用したカーネルの検証を実行するために Vitis デバッガーで使用可能なハードウェア エミュレーション フローを示します。RTL カーネル コードは、Vivado シミュレータまたはサードパーティー RTL シミュレータで解析されます。GDB は、ホスト コードの従来のソフトウェア スタイル デバッグに使用されまます。
ハードウェア エミュレーションを実行して、ホストおよびカーネルのハードウェア インプリメンテーションが正しいことを検証します。ハードウェア エミュレーション フローでは、FPGA ファブリックで実行されるカーネル ロジックをテストするため、Vitis コア開発キットから Vivado ロジック シミュレータが起動します。インターフェイス モデルの全体的な実行時間に対する影響を制限するため、モデル間のインターフェイスはトランザクション レベル モデル (TLM) で記述されます。ハードウェア エミュレーションの実行時間は、ソフトウェア エミュレーションよりも長くなります。
ハードウェア エミュレーションでは、パフォーマンスを改善するためカーネル コードを変更することも可能です。機能が正しく、カーネルのパフォーマンス見積もりが十分なものになるまで、ハードウェア エミュレーションでホストおよびカーネル コード デザインを繰り返し実行します。