windows+modelsim+DPI+C

操作系统是win10,modelsim是10.4版本,tb用system verilog写,调用c函数用DPI接口,非常方便。
首先可以直接运行Modelsim安装目录下的例子 ./modelsim10_4/examples/c_windows/dpi, 直接运行里面的vsim-vs.do文件,如果可以正常运行并输出结果,说明没有问题。
如果报错,我说一下我遇到的问题

问题1:报错:# couldn't execute "D:\modeltech64_10.4\win64\sccom": no such file or directory

  • 解决方案:添加C和C++编译器
    第一步:下载modelsim-gcc-4.5.0-mingw64.zip,他可以帮忙编译c,在modelsim的用户手册里有提到这个,但是注意软件要相互搭配使用,gcc4.5.0的版本是可以搭配modelsim10.4的,亲测没问题
    第二步:把里面g++的路径添加到系统的环境变量PATH中
    第三步:在modelsim终端输入g++ ---version看能不能输出版本号,如果输出则说明正常

问题2:编译并没有报错,但是最后vlog failed

image.png

这个问题我找了好久原因,因为它并没有显示出现问题的原因,我当时是怀疑G++的版本和modelsim的版本问题,我的电脑刚好又装了modelsim10_6,所以我直接相同的方法,测试安装路径下10.6的vsim-vs,结果出现不同的问题,vlog正常,但是vsim的时候显示在C:\Program Files (x86)\Microsoft Visual Studio\VC98\bin里没有ml64.exe,之后又下载ml64.exe;但是接下来又报错Link.exe出现了问题,但是那个路径下明明有link.exe,然后我就下载link.exe替换,但是还是不行。我就想这个路径是文件是怎么来的,发现是安装VC6来的,我就像是不是VC的版本不对,然后就卸载了VC,也就是删除了COMMON和VC98文件的内容,果然完美了,两个版本都可以用了。

  • 解决方案:我的是安装了VC6的问题,通过删除COMMON和VC98文件解决了

问题3:编译.cpp文件时总是在vsim的时候报错

  • 解决方案:g++版本太低,不支持std=c++11,所以重新下载了MinGW,安装了最新版本的g++.注意安装MinGW的时候选64位,因为我的电脑是64位的

问题4:编译.cpp文件时link不了

  • 解决方案:就是一个.c和.cpp联合编译的问题,需要在.cpp的头文件上声明extern "C"

问题5:vlog正常,但是vsim的时候错误

image.png

解决方案:降低gcc的版本,亲测gcc4.5.0是可以的

小结

  1. vlog最后一定是接顶层的.sv文件,可以分多行写多个vlog
  2. vlog .c文件时也有一定的顺序,注意如果是多个.c/cpp文件,都需要vlog,不然在vsim的时候会找不到ref 对应的函数

你可能感兴趣的:(windows+modelsim+DPI+C)