このアプリケーションノートでは、Riviera-PROでSystemVerilog DPI-Cを使用したC言語インタフェースの基本について説明します。
SystemVerilog DPI-Cにより、Cプログラミング言語とのインタフェースが可能になります。このインタフェース機能により、既存のCライブラリを含むC言語ファンクションをSystemVerilogテストベンチで使用できるようになります。
SystemVerilogファイルでCファンクションを使用するには、下記の様にインポートする必要があります:
import “DPI-C” function <function_type>function_name(arguments);
インポートされるとこのファンクションへのコールは、SystemVerilog ファンクションコールと同じ構文と使用法になります。
CコードでSystemVerilogファンクション/タスクを使用するには、下記の様にエクスポートする必要があります:
export “DPI-C” function function_name; //function declaration function void function_name(arguments); //function body endtask
"svdpi.h"ファイル(各Riviera-PROインストールで提供:
必要なすべてのCまたはSystemVerilogファンクションが適切にインポートまたはエクスポートされたら、ファイルをコンパイルする必要があります。
Riviera-PROでは、図 1に示すように両方のタイプのファイルのコンパイルコマンドに明示的なスイッチを追加する必要があります。
WSystemVerilogファイルをコンパイルするときは、-dpilibスイッチをalogコマンドに含める必要があります。
Cファイルをコンパイルするときは、-dpiスイッチを含める必要があります。
Windowsオペレーティングシステムを使用している場合は、-sv_link <library_name>も含める必要があります。
最後にasimコマンドで、インポートされたCファンクションをシミュレーターエンジンで検出するために-sv_libを使用する必要があります。
図 1: Riviera-PROの厳密なDPIフロー
注意:GUIを使用している場合、これらのスイッチはデザインオプションウィンドウで設定できます。
図 2: デザインオプション/プロパティを開く
図 3: DPI strict modeをイネーブル
図 4: ccompの-dpiスイッチの設定
図 5: Windowsオペレーティングシステムを使用している場合のシミュレーションライブラリのリンク
図 6: -sv_libスイッチを設定し、asimコマンドのDPIライブラリを示す
Riviera-PROのインストールディレクトリ(<installation_path>/examples/interfaces/dpi)には、参考用の基本的なDPIサンプルデザインが含まれています。SystemVerilog DPI-CとRiviera-PROの使用の詳細については、Riviera-PROユーザーガイド(Help -> Product Help -> Riviera-PRO Interfaces -> SystemVerilog DPI)を参照してください。