1. 使用流程
VCS的具体功能是编译文件,包括C和CPP文件,v和sv文件,编译结束后再生成可执行文件simv。
2. 相关参数
-full64 : VCS以64位运行
-sverilog:如果你的文件后缀名用的是.sv,那么编译时要加上该参数
-cpp g++ -4.8 : 要根据的VCS的版本寻找对应的G++的版本
-cc gcc-4.8:对应gcc的版本
-LDFLAGS :这个参数和后面的参数不写有时还会报错,指用GCC等编译器中的一些优化参数
-Wl, --no-as-needed:把用户指定的链接库全部写入可执行文件中,而不是依赖的库写入
-debug_all:这个参数是肯定需要的
-rdynamic:指示需要加载的动态库
-R:表示在编译完成之后自动运行仿真
-f :filelist.f文件,用于表示所有源文件
-o :指定输出的可执行文件的名字,缺省是simv
3. 具体例子
Makefile
compile:
vcs \
-full64 \
-sverilog \
-cpp g++-4.8 \
-cc gcc-4.8 \
-LDFLAGS \
-Wl, --no-as-needed \
-debug_all \
-rdynamic \
-P ${LD_LIBRARY_PATH}/novas.tab \
${LD_LIBRARY_PATH}/pli.a \
-f filelist.f \
+vcs+lic+wait \
-timescale=1ns/1ps \
-l compile.log
例子中加入-cpp和-cc的主要原因是用的VCS2016.06, 而我电脑里用gcc7.5,所以在下载完gcc4.8之后需要显性的表示出vcs调用GCC的版本。之后动态库链接的一些参数也是因为同样的原因,如果不加-Wl,–no-as-needed会显示其他动态库找不到函数声明,因此需要我们链接的时候把一些链接库直接添加到可执行文件中。