シミュレーション目的でプロジェクトに C テストベンチを追加した場合、それを C/RTL 協調シミュレーションにも 使用して、RTL が C ソース コードと同じように機能するかどうかを検証できます。合成の RTL 結果を検証するには、
[C/RTL Cosimulation] ツールバー ボタン ( ) または [Solution] → [Run C/RTL cosimulation] をクリックします。
次の図に示す [Co-simulation Dialog] ダイアログ ボックスでは、検証に使用する RTL のタイプ (Verilog または VHDL) およびシミュレーションに使用する HDL シミュレータを選択できます。
図 33: [Co-simulation Dialog] ダイアログ ボックス
このダイアログボックスには、次の設定があります。
• シミュレータ: Vivado Design Suite でサポートされる HDL シミュレータの 1 つを選択します。デフォルトのシミ ュレータは、[Vivado XSIM] です。
• 言語: シミュレーションの出力言語を Verilog にするか VHDL にするかを選択します。
• [Setup Only]: 必要なシミュレーション ファイルを作成するのみで、シミュレーションは実行しません。シミュレ ーション実行ファイルは、後でコマンド シェルから実行できます。
• [Optimizing Compile]: コンパイルに時間がかかっても、可能な場合はランタイムパフォーマンスを改善するため に最適化を実行します。
• [Input Arguments]: C テストベンチに対するコマンドライン引数を指定します。
• [Dump Trace]: シミュレーション実行時に現在のソリューションの sim/Verilog または sim/VHDL ディレクト リに書き込まれるトレース ファイル出力のレベルを指定します。選択肢は、次のとおりです。
• [all]: すべてのポートおよび信号波形データが出力され、トレースファイルに保存されます。
• [port]: 最上位ポートの波形トレース データのみが出力されます。
• [none]: トレース データは出力されません。
• [Random Stall]: 各データ転送にランダムなストールを適用します。
• [Compiled Library Location]: サードパーティ シミュレータで使用するコンパイル済みのシミュレーション ライブ ラリのディレクトリを指定します。
• [Extra Options for DATFLOW]:
• [Wave Debug]: RTL シミュレーションのすべてのプロセスを 波形を表示します。これは、Vivado XSim シミュ レータを使用する場合にのみサポートされます。オンにすると、シミュレータの GUI が起動し、シミュレー ションで生成された波形でデータフローの動作を確認できます。
• [Disable Deadlock Detection]: デッドロック検出をオフにし、協調シミュレーションのデッドロックビューア
ー を協調シミュレーションで開きます。
• [Channel Profiling (PIPO/FIFO)]: [Dataflow] ビュー に表示するプロファイル データの収集をイネーブルにし ます。
ヒント: C/RTL 協調シミュレーションの設定は、[Explorer] ビューでソリューションを右クリックし、[Solutions Settings] をクリックして、開いた [Solution Settings] ダイアログ ボックスから前もって変更できます。
C/RTL 協調シミュレーションが終了すると、コンソールに検証で問題が検出されなかったことを示す次のメッセージ が表示されます。
INFO: [Common 17-206] Exiting xsim ...
INFO: [COSIM 212-316] Starting C post checking ...
Test passed !
INFO: [COSIM 212-1000] *** C/RTL co-simulation finished: PASS ***
INFO: [COSIM 212-211] II is measurable only when transaction number is greater than 1 in RTL simulation.
Otherwise, they will be marked as NA. If user wants to calculate them, please make sure there are at
least 2 transactions in RTL simulation.
Finished C/RTL cosimulation.
シミュレーション中には、C テストベンチの printf コマンドの結果もコンソールに表示されます。
テストベンチの記述で説明するように、テストベンチでは最上位関数からの出力が合成のために検証され、出力が正 しければ、テストベンチの main() 関数に 0 が返されます。Vitis HLS は C シミュレーションと C/RTL 協調シミュレ ーションの両方に同じ戻り値を使用して、結果が正しいかどうかを判断します。C テストベンチから 0 以外の値が返 された場合、Vitis HLS でシミュレーションでエラーが発生したことがレポートされます。
シミュレーション後は協調シミュレーション レポートが自動的に開き、エラーなし (PASS) またはエラーあり (FAIL) と、レイテンシおよび II の測定の統計が表示されます。
ヒント: コンソール ウィンドウに示されるように、RTL シミュレーションのトランザクション数が 1 を超えない限 り、協調シミュレーションレポートには II が NA と表示されます。テストベンチの記述で説明するように、RTL シ ミュレーションに少なくとも 2 つのトランザクションがないと、II は計算できません。