# vhdl files
|
# vhdl files
|
FILES = src/*
|
FILES = src/*
|
VHDLEX = .vhd
|
VHDLEX = .vhd
|
|
|
# testbench
|
# testbench
|
TESTBENCHPATH = testbench/${TESTBENCH}$(VHDLEX)
|
TESTBENCHPATH = testbench/${TESTBENCH}$(VHDLEX)
|
|
|
#GHDL CONFIG
|
#GHDL CONFIG
|
GHDL_CMD = ghdl
|
GHDL_CMD = ghdl
|
GHDL_FLAGS = --ieee=synopsys --warn-no-vital-generic
|
GHDL_FLAGS = --ieee=synopsys --warn-no-vital-generic
|
|
|
SIMDIR = simulation
|
SIMDIR = simulation
|
# Simulation break condition
|
# Simulation break condition
|
#GHDL_SIM_OPT = --assert-level=error
|
#GHDL_SIM_OPT = --assert-level=error
|
GHDL_SIM_OPT = --stop-time=500ns
|
GHDL_SIM_OPT = --stop-time=1000ns
|
|
|
WAVEFORM_VIEWER = gtkwave
|
WAVEFORM_VIEWER = gtkwave
|
|
|
all: compile run view
|
all: compile run view
|
|
|
new :
|
new :
|
echo "Setting up project ${PROJECT}"
|
echo "Setting up project ${PROJECT}"
|
mkdir src testbench simulation
|
mkdir src testbench simulation
|
|
|
compile :
|
compile :
|
ifeq ($(strip $(TESTBENCH)),)
|
ifeq ($(strip $(TESTBENCH)),)
|
@echo "TESTBENCH not set. Use TESTBENCH=value to set it."
|
@echo "TESTBENCH not set. Use TESTBENCH=value to set it."
|
@exit 2
|
@exit 2
|
endif
|
endif
|
|
|
mkdir -p simulation
|
mkdir -p simulation
|
$(GHDL_CMD) -i $(GHDL_FLAGS) --workdir=simulation --work=work $(TESTBENCHPATH) $(FILES)
|
$(GHDL_CMD) -i $(GHDL_FLAGS) --workdir=simulation --work=work $(TESTBENCHPATH) $(FILES)
|
$(GHDL_CMD) -m $(GHDL_FLAGS) --workdir=simulation --work=work $(TESTBENCH)
|
$(GHDL_CMD) -m $(GHDL_FLAGS) --workdir=simulation --work=work $(TESTBENCH)
|
@mv $(TESTBENCH) simulation/$(TESTBENCH)
|
@mv $(TESTBENCH) simulation/$(TESTBENCH)
|
|
|
run :
|
run :
|
@$(SIMDIR)/$(TESTBENCH) $(GHDL_SIM_OPT) --wave=$(SIMDIR)/$(TESTBENCH).ghw
|
@$(SIMDIR)/$(TESTBENCH) $(GHDL_SIM_OPT) --wave=$(SIMDIR)/$(TESTBENCH).ghw
|
|
|
view :
|
view :
|
$(WAVEFORM_VIEWER) --dump=$(SIMDIR)/$(TESTBENCH).ghw
|
$(WAVEFORM_VIEWER) --dump=$(SIMDIR)/$(TESTBENCH).ghw
|
|
|
clean :
|
clean :
|
$(GHDL_CMD) --clean --workdir=simulation
|
$(GHDL_CMD) --clean --workdir=simulation
|
|
|