记录一下使用VCS和Verdi联合仿真的Makefile:
- 先上代码
#tb.v must include this part:
#initial begin
# $fsdbDumpfile("fifo.fsdb");
# $fsdbDumpvars(0);
#end
#after above,we also need $stop to finish dump in initial bolck.
#************parameter input*************
#prepare the source list file and then make add the soucefile name
#for example ,the Verilog source file's name is vlog_list.f then :make norsim src_list=file_list
src_list = filelist
simv_name = simv
vpdpluse_name = vcdpluse
cov_file_name = coverage
vdb_name = $(simv_name)
#************constant command************
#compile
NOR_VCS = vcs -full64 -sverilog +v2k -timescale=1ns/1ns \
-debug_all \
+notimingcheck \
+nospecify \
+vcs+flush+all \
-o $(simv_name) \
-l compile.log \
-f $(src_list).f
#coverage compile switch
COV_SW = -cm line+cond+fsm+branch+tgl
#verdi dump wave compile option
VERDI_HOME = /opt/synopsys/verdi/Verdi_O-2018.09-SP2
VERDI_SW = -P $(VERDI_HOME)/share/PLI/VCS/linux64/novas.tab \
$(VERDI_HOME)/share/PLI/VCS/linux64/pli.a
#run option
RUN_GUI = -R -gui -l run.log
RUN_VPD = -R +vpdfile+$(vpdpluse_name).vpd -l run.log
RUN_COV = -R $(COV_SW) -cm_name $(vdb_name) -cm_dir ./$(cov_file_name) -l run.log
RUN_VER = -R +fsdb+autoflush -l run.log
#************command************
#normally sim
norsim:
$(NOR_VCS) $(RUN_GUI)
#post-process
postsim:
$(NOR_VCS) $(RUN_VPD)
dve -vpd $(vpdpluse_name).vpd
#coverage
covsim:
$(NOR_VCS) $(COV_SW) $(RUN_COV)
dve -covdir $(cov_file_name).vdb
#verdi
#versim:
run_vcs:
$(NOR_VCS) $(VERDI_SW) $(RUN_VER)
vd:
verdi -sv -f $(src_list).f -ssf *.fsdb -nologo
#rm
clr:
rm -rf *csrc ./*.daidir $(simv_name) *simv* DVE* ucli* *.vpd *.vdb *.log *.fsdb *novas* *.dat *Log *rc *conf
以上代码来自于这两篇文章,写的非常好,感谢大佬们。我只是搬运工,然后自己修改了一下。
Makefile脚本启动VCS+Verdi
VCS+Verdi联合仿真教程
直接输入make run_vcs 和make vd即可运行。
使用中的一些问题
- filelist.f的生成
# 可将某路径下的 .v文件添加到filelist中
find [文件路径] -name "*.v" > filelist.f
#如果还需添加其他文件,如test.txt。 >> 可在不删除内容的情况下添加文件
find [文件路径] -name "*.txt" >> filelist.f
- tb文件
testbench 中须添加这部分,此外最好加上$stop 命令,不然会一直dump下去。
#initial begin
$fsdbDumpfile("top.fsdb");
$fsdbDumpvars(0);
end
- 环境配置的问题
VERDI_HOME 指定了verdi的安装路径,需要根据自己的需要进行更改。
- VCS license的问题
遇见了已经加了环境变量,在启动时还是提示VCS没有license的问题,一定要正确 source ~/.barshrc,并备份原有的.bashrc文件。
- verdi波形需要拖动或选择
执行完上述命令后,我们只是生成了fsdb文件,并打开了verdi,需要在波形仿真界面选择signal-> get signals来选择我们需要的波形。或者也可以像教程中写的直接拖动实例化模块(我用自己的工程文件没成功,可能是太菜了)。
才开始学,暂时就是这样,以后有了问题再写…