Basic use of SystemVerilog DPI-C in Riviera-PRO

This application note describes the basics of utilizing SystemVerilog DPI-C to interface with the C language in Riviera-PRO.

What is SystemVerilog DPI-C?

SystemVerilog’s DPI-C allows interfacing with the C programming language. This interfacing capability allows the use of C language functions, including those in existing C libraries, to be used in SystemVerilog testbenches.

Importing and Using C Functions

To use a C function in a SystemVerilog file, it needs to be imported:

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

Once imported, a call to this function has the same syntax and usage as a call to a SystemVerilog function.

Exporting SystemVerilog Functions

To use a SystemVerilog function/task in your C code, it needs to be exported:

export “DPI-C” function function_name;

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

Necessary Include Files

The "svdpi.h" file (provided with each Riviera-PRO installation: <installation_path>/interfaces/include/svdpi.h) contains constant definitions, structure definitions, and routine declarations used by the SystemVerilog DPI and must be included in the C files.

The Main Flow

Once all desired C or SystemVerilog functions have been appropriately imported or exported, the files needs to be compiled. Riviera-PRO requires explicit switches to be added to the compilation commands for both types of files as shown in Figure 1.

  • When compiling SystemVerilog files, the -dpilib switch needs to be introduced to the alog command.

  • When compiling C files, the -dpi switch needs to be included.

    • If using the Windows operating system, -sv_link <library_name> must also be included.

  • Finally, the asim command requires -sv_lib <DPI library> to be utilized in order for any imported C functions to be found by the simulator engine.

Figure 1: The strict DPI flow for Riviera-PRO

Note: If using the GUI, these switches can be set in the design options windows.

Figure 2: Opening the design options/properties

Figure 3: Enabling DPI strict mode

Figure 4: Setting the -dpi switch for ccomp

Figure 5: Linking the simulation library when using a Windows operating system

Figure 6: Setting the -sv_lib switch and pointing to the DPI library for the asim command

Riviera-PRO contains a basic DPI example design for reference in its installation directory (<installation_path>/examples/interfaces/dpi). For more details regarding the use of SystemVerilog DPI-C with Riviera-PRO, more information can be found in the Riviera-PRO user guide (Help -> Product Help -> Riviera-PRO Interfaces -> SystemVerilog DPI).

Ask Us a Question
Ask Us a Question
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.