mirror of
https://github.com/Silicon1602/srdl2sv.git
synced 2024-12-21 22:48:41 +00:00
60 lines
2.2 KiB
Makefile
60 lines
2.2 KiB
Makefile
ALL_COCOTB_TESTS = $(shell ls cocotb_tests/test_*.py | sed -E 's|.*?/test_(.*?).py|\1|g')
|
|
|
|
.PHONY: clean examples
|
|
.PRECIOUS: build_dirs/%/compile.f
|
|
|
|
default: $(ALL_COCOTB_TESTS) examples
|
|
@echo ""
|
|
@echo "-------------------------------------------------------------------------------"
|
|
@echo "Showing all FAILs in simulation logs:"
|
|
@grep -r 'test.*FAIL' build_dirs && exit 1 || echo ''
|
|
@echo "-------------------------------------------------------------------------------"
|
|
@echo ""
|
|
@echo "SUCCESS: NO FAILURES FOUND!"
|
|
|
|
# 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 "##############################################################################"
|
|
|
|
# Rebuild if RDL file or srdl2sv-software is newer
|
|
build_dirs/%/compile.f: systemrdl/%.rdl $(shell which srdl2sv)
|
|
srdl2sv $< --out-dir $(shell dirname $@) --file-logging DEBUG --stdout-logging DEBUG
|
|
|
|
ls $(PWD)/$(@D)/*_if.sv > $@
|
|
ls $(PWD)/$(@D)/*amba*.sv >> $@
|
|
ls $(PWD)/$(@D)/*.sv | grep -v '.*_if.sv$$' | grep -v '.*amba.*' >> $@
|
|
|
|
examples:
|
|
# Make examples. This does not flag any functional issues, but if
|
|
# a change breaks compilation, this will flag it.
|
|
make -C ../examples/
|
|
|
|
clean:
|
|
rm -rf build_dirs
|
|
make -C ../examples/ clean
|