Como usar SystemVerilog com simuladores da Cadence

Foma 1: Compilação e simulação em um só comando:

ncverilog +sv coisa.sv

Forma 2: Compilação e simulação em tempos separados

ncvlog coisa.sv -sv
ncelab worklib.coisa:module
ncsim worklib.coisa:module

Como usar SystemVerilog junto com C/C++

Arquivo pi_test.c

 #include "svdpi.h" //SystemVerilog Direct Programming Interface Header File
 #include "pi_test.h"
 #include  <math.h>
 //DPI =  Direct Programming Interface
 double get_real_c() {  // imported SV function
 // exercise DPI function - get calling scope
 printf("Function Calling HDL scope is %s \n", svGetNameFromScope(svGetScope()));
 return 3.14159;
 }
 void put_real_c(double n) {  // imported SV function
 // exercise DPI function - get calling scope
 printf("Function Calling HDL scope is %s \n", svGetNameFromScope(svGetScope()));
 printf("pi + 5.0 = %f\n", n+5.0);
 }

Arquivo pi_test.h

 double get_real_c();
 void put_real_c(double n);

Arquivo pi_test.sv

  module pi_test ();
  // map the C function name to the Verilog function name
  import "DPI-C" context get_real_c = function real get_real_v ();
  import "DPI-C" context put_real_c = function void put_real_v (real x);

  real pi;
  initial begin
   $display("real_test");
   pi = get_real_v();        // get a real number from the C code
   $display("pi = %f", pi);  // display it
   put_real_v(pi);           // send the real number back to C code
  end
 endmodule

Arquivo Makefile

 vai:
  ncvlog pi_test.sv -sv
  ncelab -dpiheader dpi.h worklib.pi_test:module
  gcc -m32 -fPIC -g -shared -o pi_test.so pi_test.c  -I/`ncroot`/tools/include
  ncsim worklib.pi_test:module -sv_lib pi_test.so

 clean:
  rm -rf INCA_libs *.log *.so waves.shm


Observações:

 No Makefile é necessário um TAB antes de qualquer comando que não é nome de alvo.
 Antes de digitar make, digite ius