|HOME |ABOUT |ARTICLES |ACK |FEEDBACK |TOC |LINKS |BLOG |JOBS |


Tutorials



EXPORT


Export Methods



Methods implemented in SystemVerilog and specified in export declarations can be called from C, such methods are referred to as exported methods.



Steps To Write Export Methods



In SV Code :
Setp1: Export the systemverilog function


export "DPI-C" function export_func;


Step2: Define the systemverilog function


function void export_func();
$display("SV: Hello from SV ");
endfunction



In C code :
Step3: Export the Systemverilog function


extern void export_func(void);



Step4: Invoke the systemverilog function


void import_func()
{
export_func();
}



Full Example:



CODE: SV_file.sv
program main;

export "DPI-C" function export_func;
import "DPI-C" function void import_func();

function void export_func();
$display("SV: Hello from SV ");
endfunction

initial
begin
import_func();
end

endprogram


CODE: C_file.c
#include "stdio.h"
#include "vc_hdrs.h"
#include "svdpi.h"

extern void export_func(void);

void import_func()
{
export_func();
}

RESULTS:

SV: Hello from SV


Blocking Export Dpi Task




SV Dpi allows C to call a SystemVerilog method which consumes time.



CODE:SV_file.sv
program main;

export "DPI-C" task export_task;
import "DPI-C" context task import_task();

task export_task();
$display("SV: Entered the export function . wait for some time : %0d ",$time);
#100;
$display("SV: After waiting %0d",$time);
endtask

initial
begin
$display("SV: Before calling import function %0d",$time);
import_task();
$display("SV: After calling import function %0d",$time);
end

endprogram
CODE: C_file.c
extern void export_task();

void import_task()
{
printf(" C: Before calling export function\n");
export_task();
printf(" C: After calling export function\n");
}
RESULTS

SV: Before calling import function 0
C: Before calling export function
SV: Entered the export function . wait for some time : 0
SV: After waiting 100
C: After calling export function
SV: After calling import function 100


Index
Introductions
Layers
Import
Naming
Export
Pure And Context
Data Types
Arrays
Passing Structs And Unions
Arguments Type
Disablie

Report a Bug or Comment on This section - Your input is what keeps Testbench.in improving with time!





<< PREVIOUS PAGE

TOP

NEXT PAGE >>

copyright © 2007-2017 :: all rights reserved www.testbench.in::Disclaimer