|  | 
 
| 
本帖最后由 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中的信号值。 如果有其他更好方法,请一并赐教
 | 
 |