其他分享
首页 > 其他分享> > vcs为什么makefile中执行的结果和直接执行的结果不一样

vcs为什么makefile中执行的结果和直接执行的结果不一样

作者:互联网

vcs为什么makefile中执行的结果和直接执行的结果不一样

最近在使用vcs时,有需求需要批量仿真verilog代码,但是把在terminal中运行的command复制到makefile中,执行make的时候却发现报出许多错误.

原命令:

点击查看代码
compile: 
	vcs ~/Testcase/RTL/7_VMC_5gate/tb_7_VMC001.v -debug_all -R

原运行结果(error)

点击查看代码
lindongyi@Ubuntu-Workstation:~/Testcase/testbench$ make
vcs ~/Testcase/RTL/7_VMC_5gate/tb_7_VMC001.v -full64 -debug_all
                         Chronologic VCS (TM)
         Version L-2016.06_Full64 -- Mon Mar 21 16:45:04 2022
               Copyright (c) 1991-2016 by Synopsys Inc.
                         ALL RIGHTS RESERVED

This program is proprietary and confidential information of Synopsys Inc.
and may be used and disclosed only as authorized in a license agreement
controlling such use and disclosure.

16:45:04 (snpslmd) OUT: "VCSCompiler_Net" lindongyi@Ubuntu-Workstation  
Parsing design file '/home/lindongyi/Testcase/RTL/7_VMC_5gate/tb_7_VMC001.v'
Top Level Modules:
       tb_7_VMC001
TimeScale is 1 ns / 1 ps
Starting vcs inline pass...
1 unique modules to generate
1 module and 0 UDP read. 
	However, due to incremental compilation, no re-compilation is necessary.
All of 0 modules done
16:45:04 (snpslmd) IN: "VCSCompiler_Net" lindongyi@Ubuntu-Workstation  
make[1]: Entering directory '/home/lindongyi/Testcase/testbench/csrc'
rm -f _csrc*.so pre_vcsobj_*.so share_vcsobj_*.so
ld -shared  -o .//../simv.daidir//_csrc0.so objs/amcQw_d.o 
rm -f _csrc0.so
......
......
......
collect2: error: ld returned 1 exit status
Makefile:104: recipe for target 'product_timestamp' failed
make[1]: *** [product_timestamp] Error 1
make[1]: Leaving directory '/home/lindongyi/Testcase/testbench/csrc'
Make exited with status 2
CPU time: .089 seconds to compile + .014 seconds to elab + .106 seconds to link
makefile:2: recipe for target 'compile' failed
make: *** [compile] Error 2

更改后命令:

点击查看代码
compile: 
	vcs ~/Testcase/RTL/7_VMC_5gate/tb_7_VMC001.v -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed -debug_all -R

更改后运行结果

点击查看代码
lindongyi@Ubuntu-Workstation:~/Testcase/testbench$ make
vcs ~/Testcase/RTL/7_VMC_5gate/tb_7_VMC001.v -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed -R
*** Using c compiler gcc-4.8 instead of cc ...
                         Chronologic VCS (TM)
         Version L-2016.06_Full64 -- Mon Mar 21 17:27:34 2022
               Copyright (c) 1991-2016 by Synopsys Inc.
                         ALL RIGHTS RESERVED

This program is proprietary and confidential information of Synopsys Inc.
and may be used and disclosed only as authorized in a license agreement
controlling such use and disclosure.

17:27:39 (snpslmd) OUT: "VCSCompiler_Net" lindongyi@Ubuntu-Workstation  
Parsing design file '/home/lindongyi/Testcase/RTL/7_VMC_5gate/tb_7_VMC001.v'
Top Level Modules:
       tb_7_VMC001
TimeScale is 1 ns / 1 ps
Starting vcs inline pass...

1 unique modules to generate
1 module and 0 UDP read. 
	However, due to incremental compilation, no re-compilation is necessary.
All of 0 modules done
17:27:40 (snpslmd) IN: "VCSCompiler_Net" lindongyi@Ubuntu-Workstation  
17:27:40 (snpslmd) OUT: "VCSCompiler_Net" lindongyi@Ubuntu-Workstation  
17:27:46 (snpslmd) IN: "VCSCompiler_Net" lindongyi@Ubuntu-Workstation  
make[1]: Entering directory '/home/lindongyi/Testcase/testbench/csrc'
rm -f _csrc*.so pre_vcsobj_*.so share_vcsobj_*.so
ld -shared  -o .//../simv.daidir//_csrc0.so objs/amcQw_d.o 
rm -f _csrc0.so
if [ -x ../simv ]; then chmod -x ../simv; fi
g++-4.8  -o ../simv   -Wl,-rpath-link=./ -Wl,-rpath='$ORIGIN'/simv.daidir/ -Wl,-rpath=./simv.daidir/ -Wl,-rpath='$ORIGIN'/simv.daidir//scsim.db.dir  -Wl,--no-as-needed -rdynamic   amcQwB.o   _prev_archive_1.so _csrc0.so  SIM_l.o  _csrc0.so     rmapats_mop.o rmapats.o rmar.o  rmar_llvm_0_1.o rmar_llvm_0_0.o          /home/lindongyi/Synopsys_EDA_Tools/vcs2016/linux64/lib/libzerosoft_rt_stubs.so /home/lindongyi/Synopsys_EDA_Tools/vcs2016/linux64/lib/libvirsim.so /home/lindongyi/Synopsys_EDA_Tools/vcs2016/linux64/lib/liberrorinf.so /home/lindongyi/Synopsys_EDA_Tools/vcs2016/linux64/lib/libsnpsmalloc.so    /home/lindongyi/Synopsys_EDA_Tools/vcs2016/linux64/lib/libvcsnew.so /home/lindongyi/Synopsys_EDA_Tools/vcs2016/linux64/lib/libsimprofile.so /home/lindongyi/Synopsys_EDA_Tools/vcs2016/linux64/lib/libuclinative.so   -Wl,-whole-archive /home/lindongyi/Synopsys_EDA_Tools/vcs2016/linux64/lib/libvcsucli.so -Wl,-no-whole-archive          /home/lindongyi/Synopsys_EDA_Tools/vcs2016/linux64/lib/vcs_save_restore_new.o -ldl  -lc -lm -lpthread -ldl 
../simv up to date
make[1]: Leaving directory '/home/lindongyi/Testcase/testbench/csrc'
17:27:47 (snpslmd) OUT: "VCSRuntime_Net" lindongyi@Ubuntu-Workstation  
Chronologic VCS simulator copyright 1991-2016
Contains Synopsys proprietary information.
Compiler version L-2016.06_Full64; Runtime version L-2016.06_Full64;  Mar 21 17:27 2022
$stop at time 7690000 Scope: tb_7_VMC001 File: /home/lindongyi/Testcase/RTL/7_VMC_5gate/tb_7_VMC001.v Line: 62
ucli% 

.bashrc文件

点击查看代码
#VCS
export PATH=$PATH:/home/lindongyi/Synopsys_EDA_Tools/vcs2016/bin
alias vcs="vcs -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed"
export VCS_ARCH_OVERRIDE=linux

说明:

代码功能不做解释了,更改前后命令的区别是,新命令多出来的参数是来自于安装vcs时,添加到.bashrc中的环境变量.
将.bashrc中vcs的参数添加到makefile中就可以得到和直接在终端运行一样的结果.

原因分析:

目前分析,可能makefile运行只调用.bashrc中的路径等内容,而不调用如alias这样的别名配置参数,所以需要手动将环境变量中的配置参数添加进来,才能保证makefile正常运行.
当然,如果makefile中的功能不需要.bashrc中的环境变量配置,那么应该与直接在终端中的命令行中执行是一样的效果.

收获:

以后在使用makefile的时候,就要主义是否在.bashrc中配置了alias,因为使用Linux中的Synopsys家的工具比较多,而这些工具在安装后,许多都在.bashrc中配置了alias,所以在makefile中使用这些别名的时候,出现报错就可以去.bashrc中把alias中的内容拷贝过来.
另外可以在终端中输入命令alias来查看有哪些别名被设置了.
alias命令执行结果如下:

点击查看代码
lindongyi@Ubuntu-Workstation:~$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias dc='dc_shell'
alias dv='design_vision'
alias dve='dve -full64'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias fm='formality'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias lmg_scl='lmgrd -c /home/lindongyi/Synopsys_EDA_Tools/scl/license/Synopsys.dat'
alias ls='ls --color=auto'
alias pt='primetime'
alias vcs='vcs -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed'

标签:Synopsys,makefile,alias,vcs,so,home,执行,lindongyi
来源: https://www.cnblogs.com/lindongyi/p/16035624.html