# NOVAS        := /eda/tools/snps/verdi/R-2020.12/share/PLI/VCS/LINUX64
# EXTRA        := -P ${NOVAS}/novas.tab ${NOVAS}/pli.a

VERDI_TOOL   := verdi
SIM_TOOL     := vcs
SIM_OPTIONS  := -full64 -debug_acc+all  +v2k -sverilog -timescale=1ns/10ps \
                +error+500\
                +define+SVA_OFF\
                -work DEFAULT\
                +vcs+flush+all \
                +lint=TFIPC-L \
                +define+SV_ASSRT_DISABLE \
                +define+S50 \
                -kdb \

SRC_FILE ?=
SRC_FILE += ../../common/rtl/utils/register.sv
SRC_FILE += ../../common/rtl/utils/fifo.sv
SRC_FILE += ../../common/rtl/clkrst/clk_int_div.sv
SRC_FILE += ../../common/rtl/clkrst/counter.sv
SRC_FILE += ../../common/rtl/cdc/cdc_sync.sv
SRC_FILE += ../../common/rtl/utils/edge_det.sv
SRC_FILE += ../../common/rtl/utils/xchecker.sv
SRC_FILE += ../../common/rtl/interface/axi4_define.svh
SRC_FILE += ../rtl/vgalcd_cnt.sv
SRC_FILE += ../rtl/vgalcd_timgen.sv
SRC_FILE += ../rtl/vgalcd_core.sv
SRC_FILE += ../rtl/axi4_vgalcd.sv
SRC_FILE += ../model/axi4_mem_model.sv

SRC_FILE += ../../common/rtl/verif/helper.sv
SRC_FILE += ../../common/rtl/verif/test_base.sv
SRC_FILE += ../../common/rtl/verif/apb4_master.sv
SRC_FILE += ../tb/vgalcd_test.sv
SRC_FILE += ../tb/test_top.sv
SRC_FILE += ../tb/axi4_vgalcd_tb.sv

SIM_INC ?=
SIM_INC += +incdir+../rtl/
SIM_INC += +incdir+../../common/rtl/
SIM_INC += +incdir+../../common/rtl/clkrst
SIM_INC += +incdir+../../common/rtl/tech
SIM_INC += +incdir+../../common/rtl/verif
SIM_INC += +incdir+../../common/rtl/interface

SIM_APP  ?= axi4_vgalcd
SIM_TOP  := $(SIM_APP)_tb

WAVE_CFG ?= # WAVE_ON
RUN_ARGS ?=
RUN_ARGS += +${WAVE_CFG}
RUN_ARGS += +WAVE_NAME=$(SIM_TOP).fsdb

comp:
	@mkdir -p build
	cd build && (${SIM_TOOL} ${SIM_OPTIONS} -top $(SIM_TOP) -l compile.log $(SRC_FILE) $(SIM_INC))

run: comp
	cd build && ./simv -l run.log ${RUN_ARGS}

wave:
	${VERDI_TOOL} -ssf build/$(SIM_TOP).fsdb &

clean:
	rm -rf build
	rm -rf verdiLog
	rm -rf novas.*

.PHONY: wave clean
