| # Default test | |
| DUT ?= aes | |
| 
 | |
| # Path to ext deps | |
| EXT := ../ext | |
| 
 | |
| ifeq (${DUT}, wishbone) | |
| TOPLEVEL := wishboneslavee | |
| SIM_ARGS := -gSimulation=true \ | |
| -gAddressWidth=8 \ | |
| -gDataWidth=16 | |
| else | |
| TOPLEVEL := ${DUT} | |
| endif | |
| 
 | |
| ifeq (check, $(firstword $(MAKECMDGOALS))) | |
| ifeq (FIX, $(lastword $(MAKECMDGOALS))) | |
| RUFF_ARGS := --fix | |
| endif | |
| endif | |
| 
 | |
| # Cocotb related | |
| MODULE              := tb_${DUT} | |
| COCOTB_LOG_LEVEL    := DEBUG | |
| CUSTOM_COMPILE_DEPS := results | |
| COCOTB_RESULTS_FILE := results/${MODULE}.xml | |
| 
 | |
| # Simulator & RTL related | |
| SIM                  ?= ghdl | |
| TOPLEVEL_LANG        := vhdl | |
| VHDL_SOURCES_libvhdl := ${EXT}/libvhdl/common/UtilsP.vhd | |
| VHDL_SOURCES         := ${EXT}/libvhdl/syn/*  \ | |
| ${EXT}/cryptocores/aes/rtl/vhdl/*.vhd | |
| SIM_BUILD            := build | |
| 
 | |
| ifeq (${SIM}, ghdl) | |
| COMPILE_ARGS := --std=08 | |
| SIM_ARGS             += \ | |
| --wave=results/${MODULE}.ghw \ | |
| --psl-report=results/${MODULE}_psl.json \ | |
| --vpi-trace=results/${MODULE}_vpi.log | |
| else | |
| EXTRA_ARGS := --std=08 | |
| VHDL_LIB_ORDER := libvhdl | |
| endif | |
| 
 | |
| ifneq (, $(shell which cocotb-config)) | |
| include $(shell cocotb-config --makefiles)/Makefile.sim | |
| else | |
| $(warning WARNING: cocotb not found) | |
| endif | |
| 
 | |
| check format: | |
| ifneq (, $(shell which ruff)) | |
| 	ruff $@ *.py $(RUFF_ARGS) | |
| else | |
| 	@echo "ERROR: ruff not found"; exit 1 | |
| endif | |
| 
 | |
| FIX: | |
| 	@# | |
| 
 | |
| results: | |
| 	mkdir -p results | |
| 
 | |
| clean:: | |
| 	rm -rf *.o uarttx uartrx wishboneslavee aes results $(SIM_BUILD) | |
| 
 | |
| cleanall: clean | |
| 	rm -rf .ruff_cache __pycache__ | |
| 
 | |
| .PHONY: clean cleanall check format FIX
 |