intel-modelsim不会像vcs那样自动编译uvm,需要手动编译
编译的命令
gcc -fPIC -shared -o libuvm_dpi.so uvm_dpi.cc -I/home/zhoujie/intelFPGA/20.1/modelsim_ase/include/ -DQUESTA
含义:
uvm_dpi.cc,这是入口,它通过include已经包括了dpi目录下所有文件
-I/home/zhoujie/intelFPGA/20.1/modelsim_ase/include/ 有些依赖在仿真器里,需要include
-DQUESTA指定,因为在uvm_hdl.c里面,判断使用哪一个编译器,如果用modelsim,需要指定QUESTA
另外
uvm_common.c: In function ‘m_uvm_report_dpi’:
uvm_common.c:50:3: error: unknown type name ‘svScope’
50 | svScope old_scope = svSetScope(svGetScopeFromName(uvm_package_scope_name));
| ^~~~~~~
uvm_common.c:50:23: warning: implicit declaration of function ‘svSetScope’ [-Wimplicit-function-declaration]
50 | svScope old_scope = svSetScope(svGetScopeFromName(uvm_package_scope_name));
| ^~~~~~~~~~
uvm_common.c:50:34: warning: implicit declaration of function ‘svGetScopeFromName’ [-Wimplicit-function-declaration]
50 | svScope old_scope = svSetScope(svGetScopeFromName(uvm_package_scope_name));
| ^~~~~~~~~~~~~~~~~~
uvm_common.c: In function ‘int_str_max’:
uvm_common.c:57:15: error: ‘INT_MAX’ undeclared (first use in this function)
57 | int val = INT_MAX;
| ^~~~~~~
uvm_common.c:1:1: note: ‘INT_MAX’ is defined in header ‘<limits.h>’; did you forget to ‘#include <limits.h>’?
+++ |+#include <limits.h>
1 | //----------------------------------------------------------------------
uvm_common.c:57:15: note: each undeclared identifier is reported only once for each function it appears in
57 | int val = INT_MAX;
| ^~~~~~~
这个虽然不知道为什么,但是就是缺
#include <svdpi.h>
#include <limits.h>
在uvm_common.c加上即可
UVM版本
1800.2-2020
Merge pull request #18 from jrefice/official_release_3_1 · accellera-official/uvm-core@78c0654
坑2
刚刚编译的uvm是64位的,但是intel-modelsim是32位的,不匹配
需要编译32位的,
gcc -m32 -fPIC -shared -o libuvm_dpi.so uvm_dpi.cc -I/home/zhoujie/intelFPGA/20.1/modelsim_ase/include/ -DQUESTA
缺一些依赖,根据gcc和g++版本装即可
sudo apt-get install gcc-11-multilib g++-11-multilib
如果有冲突问gpt
sudo apt install build-essential g++-multilib
已经编译好的文件下载
uvm intel-modelsim 32bit