Cadence Xrun UVM Makefile

#
#--================================================ ===============
#-- File name : Makefile
#-- Author: shzhang

#-- Date : 2023/11/01

#-- Abstract : Cadence Xcelium Xrun Makefile
#--================================================ ===============
#
################################################ #####
.PHONY: com run clean
################################################ #####
export cpto_sw_v200_tb_path = ..
################################################ #####
SIM_DIR = .
LOG_DIR = ../log
FSDB_DIR = ../wave/fsdb
SHM_DIR = ../wave/shm
TC_DIR = ../tc/cfg
COV_DIR = ../cov/imc/cov_work
################################################ #####
TOP_BENTCH = top
TOP_DUT = cpto_sw_v200_top
################################################ #####
uvm_version = uvm_1.1d
export UVM_HOME = /DigData/shzhang/uvm/uvm-1.1d
export UVM_PKG = /DigData/shzhang/uvm/uvm-1.1d/src/uvm_pkg.sv
export UVM_EXT_HOME = /tools/edaTools/Cadence/XCELIUM20.09.007/tools/methodology/UVM/CDNS-1.1d
################################################ #####
TOP_FILE = ${cpto_sw_v200_tb_path}/th/cpto_sw_v200_top.sv
COMMON_FILE= ${cpto_sw_v200_tb_path}/tt/uvm_plus_arg_def.sv
################################################ #####
tc = cpto_sw_v200_basic_test
seed = $(shell date + %s%N | cut -b 12-)
fsdb=on
vbt = UVM_MEDIUM
errnum = 10
gui=off
################################################ #####
TIMESCALE + = -timescale 1ns/100ps
#TIMESCALE + = -vtimescale 1ns/100ps
################################################ #####
DFILELIST = -f ./incfilelist.f
VFILELIST = -f ./vincfilelist.f
CFILELIST = -f ./cfilelist.f
################################################ #####
#compile options
SYS_COM_OPTS + = -v2001 -sv -disable_sem2009
SYS_COM_OPTS + = -uvmhome $(UVM_HOME) -uvmexthome $(UVM_EXT_HOME) -uvm $(UVM_PKG)
#SYS_COM_OPTS + = -uvmnocdnsextra
SYS_COM_OPTS + = -64bit
SYS_COM_OPTS + = -notimingcheck
SYS_COM_OPTS + = -access + rwc -accessreg + rwc
SYS_COM_OPTS + = -genhier
SYS_COM_OPTS + = -debug -plidebug -fsmdebug
#SYS_COM_OPTS + = -linedebug
#SYS_COM_OPTS + = -uvmlinedebug -classlinedebug
SYS_COM_OPTS += -parseinfo include
SYS_COM_OPTS + = -date
SYS_COM_OPTS + = -dumpstack
SYS_COM_OPTS + = -negdelay
SYS_COM_OPTS + = $(TIMESCALE)
SYS_COM_OPTS + = -lwdgen
SYS_COM_OPTS + = -dpi
SYS_COM_OPTS + = + cli + 3
SYS_COM_OPTS + = -errormax 10
SYS_COM_OPTS + = -relax
################################################ #####
#cov options
#COV_COM_OPTS + = -coverage B:E:F:T:U
COV_COM_OPTS + = -covfile ./cov_config.ccf
################################################ #####
#USER options
USR_COM_OPTS + = -top $(TOP_BENTCH)
#USR_COM_OPTS + = -define MACRO
################################################ #####
################################################ #####
#SIM_OPTS
SYS_SIM_OPTS + = -licqueue
SYS_SIM_OPTS + = + UVM_TC_CFG_NAME=$(tc)
SYS_SIM_OPTS + = -f $(TC_DIR)/$(tc).cfg
SYS_SIM_OPTS + = + UVM_VERBOSITY=$(vbt)
SYS_SIM_OPTS + = + UVM_MAX_QUIT_COUNT=$(errnum)
SYS_SIM_OPTS + = -svseed $(seed) -randwarn
COV_SIM_OPTS + = -covoverwrite
COV_SIM_OPTS + = -covworkdir $(COV_DIR)
COV_SIM_OPTS + = -covbaserun $(tc)
WAVE_SIM_OPTS + = + loadpli1=${VERDI_HOME}/share/PLI/IUS/LINUX64/boot/debpli.so:debpli_boot
WAVE_SIM_OPTS + = + dump_fsdb=$(fsdb)
################################################ #####
com:
    @echo "******************************";
    @echo "******XRUN Compile Start******"
    @echo "******************************";
    xrun -compile -elaborate \
    $(SYS_COM_OPTS) \
    $(USR_COM_OPTS) \
    $(COV_COM_OPTS) \
    $(DFILELIST) $(COMMON_FILE) $(TOP_FILE) $(VFILELIST) $(CFILELIST) \
    -l $(SIMDIR)/xrun_compile.log
    @echo "******************************";
    @echo "*******XRUN Compile End*******"
    @echo "******************************";
    #$(WAVE_COM_OPTS) \
################################################ #####

################################################ #####
run:
    @echo "************************************************ *****";
    @echo "******Simulation Start:$(tc),$(seed),$(vbt);*******"
    @echo "************************************************ *****";
    xrun -R \
    $(SYS_SIM_OPTS) \
    $(WAVE_SIM_OPTS) \
    $(COV_SIM_OPTS) \
     + ntb_random_seed=$(seed) \
    -l $(LOG_DIR)/$(tc)/$(tc)_$(seed).log
    @echo "************************************************ *****";
    @echo "******Simulation Start:$(tc),$(seed),$(vbt);*******"
    @echo "************************************************ *****";
################################################ #####

################################################ #####
imc_merge:
    cd ../cov/imc/cov_work/scope & amp; & amp; \
    rm -rf merged* & amp; & amp; \
    cd ../../ & amp; & amp; \
    imc -execcmd "merge * -overwrite -out merged"
################################################ #####

################################################ #####
indago:
    @echo "debug is indago"
    @cd ./xrun & amp; & amp; indago
    @echo "Welcom indago!"
################################################ #####

################################################ #####
Verdi:
    verdi \
    -2001 \
    -autoalias \
    -sv -ntb_opts uvm-1.1 \
    /DigData/shzhang/Project/digital_all/cbb/verification/bt/cpto_sw_v200/tt/uvm_plus_arg_def.sv \
    -f ./incfilelist.f \
    /DigData/shzhang/Project/digital_all/cbb/verification/bt/cpto_sw_v200/th/cpto_sw_v200_top.sv \
    -f ./vincfilelist.f \
    -top top \
     + libext + .v + .V + .vg + .vb + veo + .h + .sv \
     &.
################################################ #####

################################################ #####
clean:
    -rm -rf xcelium.d* xrun.key *.history verdiLog *.log
    -rf -rf novas*
    -rm -rf $(SIM_DIR)/xcelium.d* $(SIM_DIR)/csrc* $(SIM_DIR)/vc_hdrs.h $(SIM_DIR)/*.log
################################################ #####