#################### # Program # #################### VERILATOR = verilator VERILATOR_COVERAGE = verilator_coverage #################### # Flags # #################### VERILATOR_BUILD_FLAGS += -cc --exe --timing VERILATOR_BUILD_FLAGS += -MMD VERILATOR_BUILD_FLAGS += -O3 --x-assign unique --x-initial unique VERILATOR_BUILD_FLAGS += -Wall -Wpedantic VERILATOR_BUILD_FLAGS += --trace --trace-fst --trace-params --trace-structs --trace-underscore VERILATOR_BUILD_FLAGS += --assert VERILATOR_BUILD_FLAGS += --coverage #VERILATOR_BUILD_FLAGS += --report-unoptflat VERILATOR_COV_FLAGS += --annotate logs/annotated VERILATOR_COV_FLAGS += --annotate-min 1 VERILATOR_COV_FLAGS += --write-info logs/coverage.info VERILATOR_COV_FLAGS += logs/coverage.dat VERILATOR_FLAGS += -sv -DSIMULATION_VERILATOR -DSIMULATION_PC #################### # Sources # #################### SOURCE = ./config.vlt $(wildcard ./model/*.v ./model/*.sv ../src/*.v ../src/*.sv ../src/**/*.v ../src/**/*.sv) INCLUDE = $(addprefix -I, $(dir $(wildcard ../src/*/. ../src/**/*/.))) VERILATOR_INPUT = -top testbench_top sim_main.cpp TB_FUNC_SOURCE = $(wildcard ../resources/tb.sv ../resources/func_test/*.v ../resources/func_test/**/*.v) #################### # Targets # #################### .phony: lint verilate func_soft tlb_soft build coverage run clean default: build lint: $(VERILATOR) --lint-only $(VERILATOR_FLAGS) $(INCLUDE) $(SOURCE) -top mycpu_top verilate: $(VERILATOR) $(VERILATOR_FLAGS) $(VERILATOR_BUILD_FLAGS) $(INCLUDE) $(SOURCE) $(TB_FUNC_SOURCE) $(VERILATOR_INPUT) func_soft: cd ../resources/soft/func && make clean && make && cp obj/inst_ram.mif ../../../sim && cp obj/data_ram.mif ../../../sim && cd ../../../sim perf_soft: cd ../resources/soft/perf_func && make clean && make && cp obj/allbench/axi_ram.mif ../../../sim && cd ../../../sim && mv axi_ram.mif inst_ram.mif tlb_soft: cd ../resources/soft/tlb_func && make clean && make && cp obj/inst_ram.mif ../../../sim && cp obj/data_ram.mif ../../../sim && cd ../../../sim build: verilate make -C obj_dir -f Vtestbench_top.mk -j `nproc` coverage: @rm -rf logs/annotated $(VERILATOR_COVERAGE) $(VERILATOR_COV_FLAGS) run: build @rm -rf logs obj_dir/Vtestbench_top # gtkwave logs/trace.fst clean: -rm -rf obj_dir logs