|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 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中的信号值。 如果有其他更好方法,请一并赐教 |
|