Makefile VCS

LD_LIBRARY_PATH = ${NOVAS_HOME}/share/PLI/VCS/LINUX

test = basic_test

program_path = ./env
PROGRAM_TOP = $(program_path)/test.sv
package_path = ./packages
PACKAGES = $(package_path)/all_user_pkg.sv
MODULE_CTRL = ./common/dut_def.v ./common/dut_reg_def.v
TEST_TOP = $(MODULE_CTRL) $(PACKAGES) ${PROGRAM_TOP}

DUT = XXX

HARNESS_TOP = $(program_path)/top.sv

TOP = $(HARNESS_TOP) $(TEST_TOP)

DUT_SIM_FILE = $(TEST_TOP) $(DUT) ${HARNESS_TOP}

###LOG/WAVEFORM SETUP
log = ./results/testlog/$(test)_$(seed).log
vpd_name = ./results/waveforms/$(test)_$(seed).vpd
fsdb_name = ./results/waveforms/$(test)_$(seed).fsdb
###GEN fsdb/vpd waveform
vpd = 0
fsdb = 0
vpd_file =
fsdb_file =

ifeq ($(vpd),1)
vpd_file = +vpdfile+$(vpd_name)
endif
ifeq ($(fsdb),1)
fsdb_file = +fsdbfile+$(fsdb_name)
endif

####UVM SETUP
verbosity = UVM_MEDIUM
uvm_ver = uvm-1.2
seed = 1
uvm_defines = UVM_NO_DEPRECATED+UVM_OBJECT_MUST_HAVE_CONSTRUCTOR
defines =
plus =
##option: UVM_TR_RECORD +UVM_LOG_RECORD
option =
##trace: UVM_OBJECTION_TRACE
trace =

##COVERAGE SETUP
codecoverage =
cov_dir =
cov_dir_op =
cov = 0

扫描二维码关注公众号,回复: 1662709 查看本文章

ifeq ($(cov),1)
codecoverage = -cm line+tgl+cond+branch+assert
cov_dir = ./results/cov/$(test)_$(seed).vdb
cov_dir_op = -cm_dir $(cov_dir)
endif

##SVA SETUP
sva = +assert -asssert svaext

compile_ini_val_ctrl = +vcs+initreg+random
simv_ini_val_ctrl = +vcs+initreg+0

###COMPILE SETUP
compile_swtiches = -sverilog -fsdb -lca -kdb=both -debug_access+all +vcs+vcdpluson -timescale="1ns/100ps" -l comp.log \
-ntb_opts $(uvm_ver) $(DUT_SIM_FILE) \
+define+$(uvm_defines)+$(defines)+UVM_MAX_STRAMEBITS=10000 \
$(compile_ini_val_ctrl)
###RUN SETUP
runtime_switches = -l $(log) +UVM_TESTNAME=$(test) + UVM_VERBOSITY=$(verbosity) \
+$(plus) +$(trace) +$(option) $(simv_ini_val_ctrl)
###VERDI SETUP
verdi_swtiches = -sverilog -uvmDebug -ntb_opts $(uvm_ver) $(DUT_SIM_FILE)
verdi_interactive_switches = $(DUT_SIM_FILE)

##TESTLIST
testlist = ./testlist
#sensitive filelist for smart compile
RTL_FILE = $(shell cat filelist.f | grep -v "//" | grep -v "-" | grep -v "+" | grep -v "*")
sts_compile_list = $(shell find $(program_path)/ | grep "\.sv"


###MAIN CODE PART
all: simv run
simv compile: $(RTL_FILE) $(sts_compile_list)
vcs $(compile_swtiches) $(codecoverage) $(sva)
run:
./simv +ntb_random_seed=$(seed) $(runtime_switches) $(codecoverage) $(sva) $(vpd_file) $(fsdb_file) $(cov_dir_op) -licqueue
ifeq ($(cov),1)
test -d "simv.vdb/snps/coverage/db/testdata/" || mkdir -p simv.vdb/snps/coverage/db/testdata
mv -f $(cov_dir)/snps/coverage/db/testdata/test/ simv.vdb/snps/coverage/db/testdata/$(test)_$(seed)
endif

regress:
make compile
-mkdir simv.vdb/snps/coverage/db/testdata/
perl run_regress $(testlist)

result:
perl get_result ./results

dve:
dve -vpd $(vpd_name) &

dve_i:
export DVE_CASENAME=$(test);\
./simv -gui=dve +ntb_random_seed=$(seed) $(runtime_switches) &

verdi:
verdi $(verdi_swtiches) -nologo &

verdi_i:
./simv -gui=verdi +ntb_random_seed=$(seed) $(verdi_interactive_switches) $(runtime_switches) +UVM_VERDI_TRACE &

clean:
-rm -rf ./results/testlog/*
-rm -rf ./results/waveforms/*
-rm -rf simv* csrc* *.tmp *.key log *.h temp *.log .vcs* DVE* *.hvp urg* .inter.vpd.uvm .restart* .synopsys* novas.* *.dat verdi* work* vlog*

help:
@echo =============================================================

猜你喜欢

转载自www.cnblogs.com/bky-lxin/p/9205047.html
VCS