仿真脚本
Makefile文件,如果需要使用,需要改动到自己项目中。
ifeq ($(mode), )
MODE= rtl_sim
else
MODE= $(mode)
endif
ifeq ($(findstring chip_top,$(mode)),chip_top)
FLIST = chip_top_sim
TOP_MODULE = chip_top_tb
VDEF+= +notimingcheck
VDEF+= +nospecify
endif
ifeq ($(findstring syn_pre,$(mode)),syn_pre)
FLIST = rtl_sim_pre_gate
TOP_MODULE = dig_top_tb
VDEF+= +notimingcheck
VDEF+= +nospecify
endif
ifeq ($(findstring rtl,$(mode)),rtl)
FLIST = rtl_sim
TOP_MODULE = dig_top_tb
VDEF+= +notimingcheck
VDEF+= +nospecify
endif
VDEF+= +define+DUMP_FSDB
VDEF+= +define+YOUR_DEF
ifeq ($(findstring syn_post,$(mode)),syn_post)
FLIST= dig_top_post
TOP_MODULE = dig_top_tb
VDEF+= +optconfigfile+notimingcheck.cfg
VDEF+= +define+SYN_POST
VDEF+= +sdfverbose +neg_tchk -negdelay
endif
ifeq ($(findstring syn_post_ff,$(mode)),syn_post_ff)
VDEF+= +define+POST_FF
endif
ifeq ($(findstring syn_post_tt,$(mode)),syn_post_tt)
VDEF+= +define+POST_TT
endif
ifeq ($(findstring syn_post_ss,$(mode)),syn_post_ss)
VDEF+= +define+POST_SS
endif
COMP_OPT+= -l ${MODE}/log/uvm_comp.log
COMP_OPT+= -o ${MODE}/exec/simv
RUN_OPT+= +dumpfsdb
RUN_OPT+= -l ${MODE}/log/${TOP_MODULE}.log
RUN_OPT+= -ucli -do ${WAVE_DO_FILE}
ifeq ($(findstring vcd,$(mode)),vcd)
WAVE_DO_FILE=./${TOP_MODULE}_vcd.do
RUN_OPT+= -vcd ${MODE}/wave/${TOP_MODULE}.vcd
WAVE_FILE= vcd
else
WAVE_DO_FILE=./${TOP_MODULE}_fsdb.do
RUN_OPT+= -vcd ${MODE}/wave/${TOP_MODULE}.vcd
WAVE_FILE= fsdb
endif
run:comp
./${MODE}/exec/simv \
${RUN_OPT} \
echo "${MODE}/log/{TOP_MODULE}.log"
comp:check_dir
vcs -sv \
-nc \
-Mupdate +vcs_lic+wait \
-timescale=1ns/1ps \
-negdelay \
-lca \
-debug_region+cell\
-j4 \
-full64 \
-debug_access+all \
-P $VERDI_HOME/share/PLI/VCS/LINUX64/novas.tab \
${VERDI_HOME}/share/PLI/VCS/LINUX64/pli.a \
-f ../flsit/${FLIST}.f \
${VDEF} \
${COMP_OPT} \
+lint=TFIPC-L \
+lint=PCWM \
+v2k
vd:
novas -sv \
-f ../flist/${FLIST}.f \
${VDEF} \
-preTitle ${MODE} \
-top ${TOP_MODULE} \
-ssf ${MODE}/wave/$TOP_MODULE.$WAVE_FILE \
-sswr ${TOP_MODULE}.rc \
&
clr:
-rm -rf simv* csrc ucli.key
@rm ${MODE} -rf
check_dir:
if [ ! -d ./${MODE} ]; then mkdir ${MODE} ${MODE}/exec ${MODE}/log ${MODE}/wave ; fi
wave.do文件
fsdb文件
##dig_top_tb.do
call \$fsdbDumpvars 0 "dig_top_tb"
run
vcd文件
call \$dumpvars 0 "dig_top_tb"
run