diff --git a/sim/verilator/Makefile b/sim/verilator/Makefile index f4a9ff8a8..28ec9b673 100644 --- a/sim/verilator/Makefile +++ b/sim/verilator/Makefile @@ -1,15 +1,20 @@ +SHELL := /bin/bash .PHONY: profile run questa clean +# verilator configurations OPT= PARAMS?=-DVERILATOR=1 --no-trace-top NONPROF?=--stats -WORKING_DIR=${WALLY}/sim/verilator -TARGET=$(WORKING_DIR)/target -SOURCE=${WALLY}/config/shared/*.vh ${WALLY}/src/cvw.sv ${WALLY}/testbench/testbench.sv ${WALLY}/testbench/common/*.sv ${WALLY}/src/*/*.sv ${WALLY}/src/*/*/*.sv - WALLYCONF?=rv64gc TEST?=arch64i +# constants +WORKING_DIR=${WALLY}/sim/verilator +TARGET=$(WORKING_DIR)/target +DEPENDENCIES=${WALLY}/config/shared/*.vh ${WALLY}/src/cvw.sv ${WALLY}/testbench/testbench.sv ${WALLY}/testbench/common/*.sv ${WALLY}/src/*/*.sv ${WALLY}/src/*/*/*.sv +INCLUDE_PATH="-I${WALLY}/config/shared" "-I${WALLY}/config/$(WALLYCONF)" "-I${WALLY}/config/deriv/$(WALLYCONF)" +SOURCE_PATH=${WALLY}/src/cvw.sv ${WALLY}/testbench/testbench.sv ${WALLY}/testbench/common/*.sv ${WALLY}/src/*/*.sv ${WALLY}/src/*/*/*.sv + default: run profile: obj_dir_profiling/Vtestbench_$(WALLYCONF) @@ -26,27 +31,27 @@ run: obj_dir_non_profiling/Vtestbench_$(WALLYCONF) time $(WORKING_DIR)/obj_dir_non_profiling/Vtestbench_$(WALLYCONF) +TEST=$(TEST) 2>&1 > $(WORKING_DIR)/logs/$(WALLYCONF)_$(TEST).log echo "Please check $(WORKING_DIR)/logs/$(WALLYCONF)_$(TEST).log for logs and output files." -obj_dir_non_profiling/Vtestbench_$(WALLYCONF): $(SOURCE) +obj_dir_non_profiling/Vtestbench_$(WALLYCONF): $(DEPENDENCIES) mkdir -p obj_dir_non_profiling time verilator \ --Mdir obj_dir_non_profiling -o Vtestbench_$(WALLYCONF) \ -cc --binary \ $(OPT) $(PARAMS) $(NONPROF) \ --timescale "1ns/1ns" --timing --top-module testbench --relative-includes \ - "-I${WALLY}/config/shared" "-I${WALLY}/config/$(WALLYCONF)" "-I${WALLY}/config/deriv/$(WALLYCONF)" \ + $(INCLUDE_PATH) \ wrapper.c \ - ${WALLY}/src/cvw.sv ${WALLY}/testbench/testbench.sv ${WALLY}/testbench/common/*.sv ${WALLY}/src/*/*.sv ${WALLY}/src/*/*/*.sv + $(SOURCE_PATH) -obj_dir_profiling/Vtestbench_$(WALLYCONF): $(SOURCE) +obj_dir_profiling/Vtestbench_$(WALLYCONF): $(DEPENDENCIES) mkdir -p obj_dir_profiling time verilator \ --Mdir obj_dir_profiling -o Vtestbench_$(WALLYCONF) \ -cc --binary \ --prof-cfuncs $(OPT) $(PARAMS) \ --timescale "1ns/1ns" --timing --top-module testbench --relative-includes \ - "-I${WALLY}/config/shared" "-I${WALLY}/config/$(WALLYCONF)" "-I${WALLY}/config/deriv/$(WALLYCONF)" \ + $(INCLUDE_PATH) \ wrapper.c \ - ${WALLY}/src/cvw.sv ${WALLY}/testbench/testbench.sv ${WALLY}/testbench/common/*.sv ${WALLY}/src/*/*.sv ${WALLY}/src/*/*/*.sv + $(SOURCE_PATH) questa: time vsim -c -do "do ${WALLY}/sim/wally-batch.do $(WALLYCONF) $(TEST)"