Riviera-PROでSystemVerilog DPI-Cの基本的な使用法

このアプリケーションノートでは、Riviera-PROでSystemVerilog DPI-Cを使用したC言語インタフェースの基本について説明します。

SystemVerilog DPI-Cとは何ですか?

SystemVerilog DPI-Cにより、Cプログラミング言語とのインタフェースが可能になります。このインタフェース機能により、既存のCライブラリを含むC言語ファンクションをSystemVerilogテストベンチで使用できるようになります。

Cファンクションのインポートと使用

SystemVerilogファイルでCファンクションを使用するには、下記の様にインポートする必要があります:

import “DPI-C” function <function_type> function_name(arguments); 

インポートされるとこのファンクションへのコールは、SystemVerilog ファンクションコールと同じ構文と使用法になります。

SystemVerilogファンクションのエクスポート

CコードでSystemVerilogファンクション/タスクを使用するには、下記の様にエクスポートする必要があります:

export “DPI-C” function function_name;

//function declaration
function void  function_name(arguments);
    //function body
endtask

必要なインクルードファイル

"svdpi.h"ファイル(各Riviera-PROインストールで提供:/interfaces/include/svdpi.h)には、SystemVerilog DPIで使用される定数定義、構造体定義、およびルーチン宣言が含まれており、Cファイルにインクルードする必要があります。

メインフロー

必要なすべての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)を参照してください。

Ask Us a Question
x
Ask Us a Question
x
Captcha ImageReload Captcha
Incorrect data entered.
Thank you! Your question has been submitted. Please allow 1-3 business days for someone to respond to your question.
Internal error occurred. Your question was not submitted. Please contact us using Feedback form.
We use cookies to ensure we give you the best user experience and to provide you with content we believe will be of relevance to you. If you continue to use our site, you consent to our use of cookies. A detailed overview on the use of cookies and other website information is located in our Privacy Policy.