主要参考:
如下:
.PHONY : comp sim clean
#当使用make命令行指定此目标时,这个目标所在规则定义的命令、无论目标文件是否存在都会被无条件执行。
PROJECT = test
UVM_VERBOSITY = UVM_LOW
DEBUG =
#-debug/-debug_all/-debug_pp (在这里可以对debug的命令进行选择)
#-debug —— (对应TB中的$vcdpluson加载波形函数)使能DVE、VERDI波形调试和UCLI命令行调试等;
#-debug_all —— 使能所有的debug调试功能;
#-debug_pp —— 同-debug_all,但是更加节约资源;
CM_PATH = ./ #指定覆盖率文件放置的路径
comp :
vcs \
-kdb \
-sverilog \
+v2k \
-timescale=1ns/10ps \
$(DEBUG) \
-f filelist \
+vcs+lic+wait \
-full64 \
-LDFLAGS -Wl,--no-as-needed \
-l compile.log
sim :
./simv \
+fsdb+autoflush \
-l sim.log
clean :
rm -rf *.log simv *.daidir csrc *.key DVEfiles *.vpd
#
# -ucli \#使能UCLI命令
# -lca \# vcs参数,表示使用vcs“用户限制使用”功能,即vcs提供的一些功能,但该功能还未经过充分验证。
# -kdb \# Knowledge Database (KDB),生成kdb.elab++,位于simv.daidir目录下
# -sverilog \# 编译支持SystemVerilog语法;
# +v2k \# 编译支持Verilog—2001语法;
# -timescale=time_unit/time_precision \# 添加仿真时间单位、精度;
# $(DEBUG) \#
# -ntb_opts uvm \# —— 常用参数uvm,这里表示加载uvm库文件
# -f filename \# —— 指定源文件的路径名列表
# -cm line|cond|fsm|tgl|branch|assert\# —— 覆盖率收集,常用命令 -cm line+cond+fsm+tgl
# -cm_dir $(CM_PATH) \# —— 指定覆盖率文件放置的路径
# +vcs+lic+wait \#—— 当所有的license都不可用时,等待vcs的license
# -full64 \# 以64位模式编译设计并创建64位可执行文件用于64位模式下的模拟,如果不加上这个option,在仿真时,当出现内存超过4GB时,仿真会停止,但出现内存超过4GB可能是正常现象。
# -o $(PROJECT) \# ——指定编译后产生的文件名,默认编译后的文件名为simv,在这为PROJECT指定的名字
# -l compile.log \# 生成编译的日志
#sim :
# ./simv \
# +fsdb+autoflush \ # 命令行参数autoflush,一边仿真一边dump波形,如果没有该参数,那么不会dump波形,需要在ucli命令run 100ns后键入fsdbDumpflush才会dump波形
只需要在当前文件夹下创建一个filelist,把待编译的文件都列进去即可。
不过我用这个vcs2018,如果带着uvm编译会报错,不知道咋解决,后续再看吧。
#error “UVM_ERROR: THIS VERSION OF VCS DOESN’T SUPPORT VCSMX_FAST_UVM.