我是靠谱客的博主 优秀冥王星,最近开发中收集的这篇文章主要介绍vcs+verdi Debug记录项目场景:问题描述:原因分析:解决方案:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

项目场景:

场景描述:在linux环境用vcs+verdi跑uvm的一个测试用例


问题描述:

报错代码如下:

filelist:11: warning: overriding recipe for target `uvm_dpi.o'
filelist:7: warning: ignoring old recipe for target `uvm_dpi.o'
filelist:13: warning: overriding recipe for target `uvm_dpi.d'
filelist:9: warning: ignoring old recipe for target `uvm_dpi.d'
filelist:11: warning: overriding recipe for target `uvm_dpi.o'
filelist:7: warning: ignoring old recipe for target `uvm_dpi.o'
filelist:13: warning: overriding recipe for target `uvm_dpi.d'
filelist:9: warning: ignoring old recipe for target `uvm_dpi.d'
rm -f _csrc*.so pre_vcsobj_*.so share_vcsobj_*.so
filelist:11: warning: overriding recipe for target `uvm_dpi.o'
filelist:7: warning: ignoring old recipe for target `uvm_dpi.o'
filelist:13: warning: overriding recipe for target `uvm_dpi.d'
filelist:9: warning: ignoring old recipe for target `uvm_dpi.d'
g++ -w  -pipe -DVCS -DUVM_DPI_DO_TYPE_CHECK -fPIC -DVCS -O -I/EDA/synopsys/vcs-mx/O-2018.09-SP2/include    -c /EDA/synopsys/vcs-mx/O-2018.09-SP2/etc/uvm-1.2/dpi/uvm_dpi.cc
g++ -w  -pipe -DVCS -DUVM_DPI_DO_TYPE_CHECK -fPIC -DVCS -O -I/EDA/synopsys/vcs-mx/O-2018.09-SP2/include    -c /EDA/synopsys/vcs-mx/O-2018.09-SP2/etc/uvm-1.2/verdi/dpi/uvm_verdi_dpi.cpp
gcc  -w  -pipe -DVCS -DUVM_DPI_DO_TYPE_CHECK -fPIC -DVCS -O -I/EDA/synopsys/vcs-mx/O-2018.09-SP2/include    -fPIC -c -o uM9F1_0x2aB.o uM9F1_0x2aB.c
if [ -x ../simv ]; then chmod -x ../simv; fi
g++  -o ../simv    -Wl,-rpath-link=./ -Wl,-rpath='$ORIGIN'/simv.daidir/ -Wl,-rpath=./simv.daidir/ -Wl,-rpath='$ORIGIN'/simv.daidir//scsim.db.dir  -rdynamic  -Wl,-rpath=/EDA/synopsys/vcs-mx/O-2018.09-SP2/linux64/lib -L/EDA/synopsys/vcs-mx/O-2018.09-SP2/linux64/lib  uvm_dpi.o uvm_dpi.o uvm_verdi_dpi.o   objs/amcQw_d.o   _2913932_archive_1.so  SIM_l.o    uM9F1_0x2aB.o   rmapats_mop.o rmapats.o rmar.o rmar_nd.o  rmar_llvm_0_1.o rmar_llvm_0_0.o          -lzerosoft_rt_stubs -lvirsim -lerrorinf -lsnpsmalloc -lvfs -lca-override_timescale=1ns/100ps /EDA/synopsys/verdi/verdi/Verdi_O-2018.09-SP2/share/PLI/VCS/LINUX64/pli.a    -lvcsnew -lsimprofile -lreader_common /EDA/synopsys/vcs-mx/O-2018.09-SP2/linux64/lib/libBA.a -luclinative /EDA/synopsys/vcs-mx/O-2018.09-SP2/linux64/lib/vcs_tls.o   -Wl,-whole-archive -lvcsucli -Wl,-no-whole-archive       ./../simv.daidir/vc_hdrs.o  _vcs_pli_stub_.o   /EDA/synopsys/vcs-mx/O-2018.09-SP2/linux64/lib/vcs_save_restore_new.o -ldl -lm  -lc -lpthread -ldl 
uvm_dpi.o: In function `m_uvm_report_dpi':
uvm_dpi.cc:(.text+0x96): multiple definition of `m_uvm_report_dpi'
uvm_dpi.o:uvm_dpi.cc:(.text+0x96): first defined here
uvm_dpi.o: In function `int_str_max':
uvm_dpi.cc:(.text+0x275): multiple definition of `int_str_max'
uvm_dpi.o:uvm_dpi.cc:(.text+0x275): first defined here
uvm_dpi.o: In function `uvm_re_match':
uvm_dpi.cc:(.text+0x2a0): multiple definition of `uvm_re_match'
uvm_dpi.o:uvm_dpi.cc:(.text+0x2a0): first defined here
uvm_dpi.o: In function `uvm_glob_to_re':
uvm_dpi.cc:(.text+0x500): multiple definition of `uvm_glob_to_re'
uvm_dpi.o:uvm_dpi.cc:(.text+0x500): first defined here
uvm_dpi.o: In function `uvm_dump_re_cache':
uvm_dpi.cc:(.text+0x78f): multiple definition of `uvm_dump_re_cache'
uvm_dpi.o:uvm_dpi.cc:(.text+0x78f): first defined here
uvm_dpi.o: In function `uvm_memory_load':
uvm_dpi.cc:(.text+0x7c2): multiple definition of `uvm_memory_load'
uvm_dpi.o:uvm_dpi.cc:(.text+0x7c2): first defined here
uvm_dpi.o: In function `uvm_hdl_check_path':
uvm_dpi.cc:(.text+0x7e1): multiple definition of `uvm_hdl_check_path'
uvm_dpi.o:uvm_dpi.cc:(.text+0x7e1): first defined here
uvm_dpi.o: In function `uvm_hdl_btoi':
uvm_dpi.cc:(.text+0x7fd): multiple definition of `uvm_hdl_btoi'
uvm_dpi.o:uvm_dpi.cc:(.text+0x7fd): first defined here
uvm_dpi.o: In function `uvm_hdl_dtob':
uvm_dpi.cc:(.text+0x938): multiple definition of `uvm_hdl_dtob'
uvm_dpi.o:uvm_dpi.cc:(.text+0x938): first defined here
uvm_dpi.o: In function `uvm_hdl_read_string':
uvm_dpi.cc:(.text+0x9ce): multiple definition of `uvm_hdl_read_string'
uvm_dpi.o:uvm_dpi.cc:(.text+0x9ce): first defined here
uvm_dpi.o: In function `uvm_hdl_read':
uvm_dpi.cc:(.text+0x9ed): multiple definition of `uvm_hdl_read'
uvm_dpi.o:uvm_dpi.cc:(.text+0x9ed): first defined here
uvm_dpi.o: In function `uvm_hdl_deposit':
uvm_dpi.cc:(.text+0xc24): multiple definition of `uvm_hdl_deposit'
uvm_dpi.o:uvm_dpi.cc:(.text+0xc24): first defined here
uvm_dpi.o: In function `uvm_hdl_force':
uvm_dpi.cc:(.text+0xc37): multiple definition of `uvm_hdl_force'
uvm_dpi.o:uvm_dpi.cc:(.text+0xc37): first defined here
uvm_dpi.o: In function `uvm_hdl_release_and_read':
uvm_dpi.cc:(.text+0xc4a): multiple definition of `uvm_hdl_release_and_read'
uvm_dpi.o:uvm_dpi.cc:(.text+0xc4a): first defined here
uvm_dpi.o: In function `uvm_hdl_release':
uvm_dpi.cc:(.text+0xc5d): multiple definition of `uvm_hdl_release'
uvm_dpi.o:uvm_dpi.cc:(.text+0xc5d): first defined here
uvm_dpi.o: In function `push_data':
uvm_dpi.cc:(.text+0xc73): multiple definition of `push_data'
uvm_dpi.o:uvm_dpi.cc:(.text+0xc73): first defined here
uvm_dpi.o:(.bss+0x10): multiple definition of `argc_total'
uvm_dpi.o:(.bss+0x10): first defined here
uvm_dpi.o:(.bss+0x0): multiple definition of `argv_ptr'
uvm_dpi.o:(.bss+0x0): first defined here
uvm_dpi.o: In function `walk_level':
uvm_dpi.cc:(.text+0xc97): multiple definition of `walk_level'
uvm_dpi.o:uvm_dpi.cc:(.text+0xc97): first defined here
uvm_dpi.o: In function `uvm_dpi_get_next_arg_c':
uvm_dpi.cc:(.text+0xd60): multiple definition of `uvm_dpi_get_next_arg_c'
uvm_dpi.o:uvm_dpi.cc:(.text+0xd60): first defined here
uvm_dpi.o:(.bss+0x8): multiple definition of `argv_stack'
uvm_dpi.o:(.bss+0x8): first defined here
uvm_dpi.o: In function `uvm_dpi_get_tool_name_c':
uvm_dpi.cc:(.text+0xe26): multiple definition of `uvm_dpi_get_tool_name_c'
uvm_dpi.o:uvm_dpi.cc:(.text+0xe26): first defined here
uvm_dpi.o: In function `uvm_dpi_get_tool_version_c':
uvm_dpi.cc:(.text+0xe3c): multiple definition of `uvm_dpi_get_tool_version_c'
uvm_dpi.o:uvm_dpi.cc:(.text+0xe3c): first defined here
uvm_dpi.o: In function `uvm_dpi_regcomp':
uvm_dpi.cc:(.text+0xe52): multiple definition of `uvm_dpi_regcomp'
uvm_dpi.o:uvm_dpi.cc:(.text+0xe52): first defined here
uvm_dpi.o: In function `uvm_dpi_regexec':
uvm_dpi.cc:(.text+0xf10): multiple definition of `uvm_dpi_regexec'
uvm_dpi.o:uvm_dpi.cc:(.text+0xf10): first defined here
uvm_dpi.o: In function `uvm_dpi_regfree':
uvm_dpi.cc:(.text+0xf39): multiple definition of `uvm_dpi_regfree'
uvm_dpi.o:uvm_dpi.cc:(.text+0xf39): first defined here
/usr/bin/ld: cannot find -lca-override_timescale=1ns/100ps
collect2: error: ld returned 1 exit status
make[1]: *** [product_timestamp] Error 1
make[1]: Leaving directory `/project/UVM_AXI_TEST/csrc'
Make exited with status 2
CPU time: 11.309 seconds to compile + .334 seconds to elab + .372 seconds to link
Verdi KDB elaboration done and the database successfully generated: 0 error(s), 0 warning(s)
make: *** [comp] Error 2

        

原因分析:

应该是uvm的编译库里某个模块被重复编译或者重复加载了。原本报错的makefile中该部分为:

comp:
	vcs 
	-override_timescale=1ns/1ps 
	-full64 
	-sverilog 
	-debug_access+all 
	-P ${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab 
	${NOVAS_HOME}/share/PLI/VCS/LINUX64/pli.a 
	+notimingcheck 
	+nospecify 
	+v2k 
	+vcs+flush+all 
	-ntb_opts uvm-1.2 
	+acc 
	+vpi 
	+define+UVM_OBJECT_MUST_HAVE_CONSTRUCTOR 
	+incdir+$(UVM_HOME)/src 
	+incdir+$(UVM_HOME)/src/uvm.sv 
	${UVM_HOME}/src/dpi/uvm_dpi.cc -CFLAGS -DVCS 
	$(ALL_DEFINE) 
	$(CM) 
	$(CM_NAME) 
	$(CM_DIR) 
	$(VPD_NAME) 
	-o $(OUTPUT) 
	-l ./LOG/compile.log 
	-f ./flist_SIM.f  

        
我猜可能是 -ntb_opts uvm-1.2 已经将UVM的全部编译库的文件都已经使能包含了,所以后面就不能再添加UVM的编译库的路径?如果有哪位大佬知道其中缘由,请指教。

解决方案:

将makefile里的这些行删除:

	+incdir+$(UVM_HOME)/src 
	+incdir+$(UVM_HOME)/src/uvm.sv 
	${UVM_HOME}/src/dpi/uvm_dpi.cc -CFLAGS -DVCS    

新的makefile的com部分为:

comp:
	vcs 
	-override_timescale=1ns/1ps 
	-full64 
	-sverilog 
	-debug_access+all 
	-P ${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab 
	${NOVAS_HOME}/share/PLI/VCS/LINUX64/pli.a 
	+notimingcheck 
	+nospecify 
	+v2k 
	+vcs+flush+all 
	-ntb_opts uvm-1.2 
	+acc 
	+vpi 
	+define+UVM_OBJECT_MUST_HAVE_CONSTRUCTOR 
	$(ALL_DEFINE) 
	$(CM) 
	$(CM_NAME) 
	$(CM_DIR) 
	$(VPD_NAME) 
	-o $(OUTPUT) 
	-l ./LOG/compile.log 
	-f ./flist_SIM.f   

这样就没报错了

最后

以上就是优秀冥王星为你收集整理的vcs+verdi Debug记录项目场景:问题描述:原因分析:解决方案:的全部内容,希望文章能够帮你解决vcs+verdi Debug记录项目场景:问题描述:原因分析:解决方案:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部