| 
 | 
 
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册  
 
×
 
 本帖最后由 fly_haopp 于 2011-3-23 15:27 编辑  
 
最近在学习systemverilog 的 dpi。试着自己写了一段简单的代码,但是仿真出错。代码如下 
 
SV代码: 
module top ; 
 
import "DPI-C" context main = task c_main(); 
export "DPI-C" task tmp; 
initial 
begin 
  #10ns; 
  #10ns;  
  c_main(); 
  #10ns; 
  $finish; 
end 
task tmp(input int dati, output int dato); 
begin 
  #10ns; 
  if(dati==100) 
    dato = 100; 
  else 
    dato = 0;  
end 
endtask 
endmodule 
 
 
C代码 
#include <stdio.h> 
#include "svdpi.h" 
#include "vpi_user.h" 
#include "header.h" 
void main () { 
  int i; 
  int* check_value; 
  tmp(100,*check_value); 
  printf("C-side got tmp value %d\n",*check_value); 
} 
 
 
出错信息(用的是NC) 
ncsim: *E,SIGUSR: Unix Signal SIGSEGV raised from user application code. 
 
 
求助各位大侠。此出错信息是什么原因造成的。 
另外这种dpi的代码仿真出错以后要如何debug 
 
 
PS: 这段代码的目的是让C通过调用SV的task,从而得到SV中的信号值。 如果有其他更好方法,请一并赐教 |   
 
 
 
 |