diff --git a/tests/.gitignore b/tests/.gitignore index eef769d..2ebb85f 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -1,2 +1 @@ -*.fst -sim_build +build_dirs diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 0000000..76b938a --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,45 @@ +ALL_COCOTB_TESTS = $(shell ls cocotb_tests/test_*.py | sed -E 's|.*?/test_(.*?).py|\1|g') + +default: $(ALL_COCOTB_TESTS) + +# This target will always rebuild, which is fine since we want to be sure to execute any +# test if we kick it off. +%: build_dirs/%/compile.f + rm -rf cocotb_tests/dump.fst + rm -rf cocotb_tests/results.xml + rm -rf cocotb_tests/simulation.log + + mkdir -p $(PWD)/build_dirs/$@/cocotb_build + $(MAKE) -C cocotb_tests \ + TOPLEVEL=$@\ + MODULE=test_$@\ + VERILOG_SOURCES="$(shell cat $^)"\ + SIM_BUILD=$(PWD)/build_dirs/$@/cocotb_build\ + | tee $(PWD)/build_dirs/$@/simulation.log + + # Move some files + mv cocotb_tests/dump.fst $(PWD)/build_dirs/$@/ + mv cocotb_tests/results.xml $(PWD)/build_dirs/$@/ + + @echo "" + @echo "##############################################################################" + @echo "# SIMULATION DONE ############################################################" + @echo "##############################################################################" + @echo "# Simulation dump: $(PWD)/build_dirs/$@/dump.fst" + @echo "# Simulation log : $(PWD)/build_dirs/$@/simulation.log" + @echo "# Results XML : $(PWD)/build_dirs/$@/results.xml" + @echo "##############################################################################" + @echo "##############################################################################" + +build_dirs/%/*.sv: systemrdl/%.rdl + ../srdl2sv/main.py $? --out_dir $(shell dirname $@) --file_log_level DEBUG --stream_log_level DEBUG + +build_dirs/%/compile.f: build_dirs/%/*.sv + ls $(PWD)/$(@D)/*_pkg.sv > $@ + ls $(PWD)/$(@D)/*amba*.sv >> $@ + ls $(PWD)/$(@D)/*.sv | grep -v '.*_pkg.sv$$' | grep -v '.*amba.*' >> $@ + +.PHONY: clean + +clean: + rm -rf build_dirs diff --git a/tests/cocotb_tests/Makefile b/tests/cocotb_tests/Makefile new file mode 100644 index 0000000..b2a778d --- /dev/null +++ b/tests/cocotb_tests/Makefile @@ -0,0 +1,5 @@ +# Simulator specific variables +SIM = verilator +EXTRA_ARGS += --trace-fst --trace-structs + +include $(shell cocotb-config --makefiles)/Makefile.sim