在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 11473|回复: 6

[求助] systemverilog dpi simuation 出错,求助

[复制链接]
发表于 2011-3-22 23:54:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

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中的信号值。 如果有其他更好方法,请一并赐教
 楼主| 发表于 2011-3-23 00:39:59 | 显示全部楼层
本来是想要送给帮助者信元的,不过貌似搞错了,变成收费主题了。现在改正了
 楼主| 发表于 2011-3-25 12:21:55 | 显示全部楼层
没有人指点吗?

顺便说一下,仿真命令如下:
irun top.sv -cpost main.c -end -ncelabargs "-dpiheader header.h -dpi_void_task"
 楼主| 发表于 2011-3-26 21:49:19 | 显示全部楼层
I found the reason.

In C side, although the type of check value is int*, but when used it as parameter of function tmp, it should be used like
  tmp(100, check_value); instead of  tmp(100, *check_value);

Is it common for general C code?????
发表于 2011-4-14 22:03:33 | 显示全部楼层
楼主,你没搞清楚指针的用法。你的意思是要从SV往C传数,这个数是要存在C的,所以C里一定要有存储空间,而你只定义了一个没有初始化也没有分配内在的指针,tmp()函数往这个指针所指的内存写数肯定会访问到非法的空间从而造成程序崩溃。这样做是可以的:
  int check_value;
  tmp(100, &check_value);
发表于 2011-9-27 21:25:13 | 显示全部楼层
LZ请问下  你的SV代码和C代码是放在一起  还是分开为2个文件,文件后缀是.SV和.C吧,是在NCVLOG的环境下运行的吗》
发表于 2013-5-26 18:00:40 | 显示全部楼层
学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 04:48 , Processed in 0.020951 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表