|
|
VERILOGEX = .v # Verilog file extension
|
VERILOGEX = .v # Verilog file extension
|
|
|
# testbench path TESTBENCH is passed from the command line
|
# testbench path TESTBENCH is passed from the command line
|
SCENEPATH =
|
SCENEPATH =
|
TESTBENCH = TestBench_verilog
|
TESTBENCH = TestBench_verilog
|
TESTBENCHPATH = ../testbench/${TESTBENCH}$(VERILOGEX)
|
TESTBENCHPATH = ../testbench/${TESTBENCH}$(VERILOGEX)
|
SOURCEPATH = ../rtl
|
SOURCEPATH = ../rtl
|
GPUCONFIGURATIONSCRIPT=../scripts/configure_gpu.pl
|
GPUCONFIGURATIONSCRIPT=../scripts/configure_gpu.pl
|
INPUTCONFIGURATIONSCRIPT=../scripts/configure_params.pl
|
INPUTCONFIGURATIONSCRIPT=../scripts/configure_params.pl
|
#iverilog CONFIG
|
#iverilog CONFIG
|
VERILOG_CMD = iverilog
|
VERILOG_CMD = iverilog
|
GPUCORES = 4
|
GPUCORES = 4
|
|
WIDTH = 200
|
|
HEIGHT = 200
|
GPUMEMBANKS = $(GPUCORES)
|
GPUMEMBANKS = $(GPUCORES)
|
#VERILOG_FLAGS =
|
#VERILOG_FLAGS =
|
|
|
# VVP (iverilog runtime engine)
|
# VVP (iverilog runtime engine)
|
VVP_CMD = vvp
|
VVP_CMD = vvp
|
#VVP_FLAGS =
|
#VVP_FLAGS =
|
|
|
#Simulation Vars
|
#Simulation Vars
|
SIMDIR = .
|
SIMDIR = .
|
DUMPTYPE = none
|
DUMPTYPE = none
|
DEBUG_CORE_ID =
|
DEBUG_CORE_ID =
|
SCENEPATH =
|
SCENEPATH =
|
#Viewer
|
#Viewer
|
WAVEFORM_VIEWER = gtkwave # Waveform viewer executable
|
WAVEFORM_VIEWER = gtkwave # Waveform viewer executable
|
|
|
|
|
all: compile run view
|
all: compile run view
|
|
|
file_check:
|
file_check:
|
ifeq ($(strip $(FILES)),)
|
ifeq ($(strip $(FILES)),)
|
@echo "FILES not set. Use FILES=value to set it. Put mutltiple files in quotes"
|
@echo "FILES not set. Use FILES=value to set it. Put mutltiple files in quotes"
|
@exit 2
|
@exit 2
|
endif
|
endif
|
|
|
testbench_check:
|
testbench_check:
|
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
|
|
|
|
|
|
|
check:
|
check:
|
$(VERILOG_CMD) -t null $(FILES)
|
$(VERILOG_CMD) -t null $(FILES)
|
|
|
# Setup up project directory
|
# Setup up project directory
|
new :
|
new :
|
echo "Setting up project ${PROJECT}"
|
echo "Setting up project ${PROJECT}"
|
mkdir rtl testbench simulation
|
mkdir rtl testbench simulation
|
|
|
|
|
compile : testbench_check
|
compile : testbench_check
|
perl $(GPUCONFIGURATIONSCRIPT) $(GPUCORES) $(GPUMEMBANKS)
|
perl $(GPUCONFIGURATIONSCRIPT) $(GPUCORES) $(GPUMEMBANKS)
|
|
|
cp $(SOURCEPATH)/aDefinitions.v .
|
cp $(SOURCEPATH)/aDefinitions.v .
|
ifeq ($(strip $(DEBUG_CORE_ID)),)
|
ifeq ($(strip $(DEBUG_CORE_ID)),)
|
$(VERILOG_CMD) -o $(SIMDIR)/$(TESTBENCH) $(TESTBENCHPATH) $(SOURCEPATH)/*
|
$(VERILOG_CMD) -o $(SIMDIR)/$(TESTBENCH) $(TESTBENCHPATH) $(SOURCEPATH)/*
|
else
|
else
|
$(VERILOG_CMD) -DDEBUG=1 -DDUMP_CODE=1 -DDEBUG_CORE=$(DEBUG_CORE_ID) -o $(SIMDIR)/$(TESTBENCH) $(TESTBENCHPATH) $(SOURCEPATH)/*
|
$(VERILOG_CMD) -DDEBUG=1 -DDUMP_CODE=1 -DDEBUG_CORE=$(DEBUG_CORE_ID) -o $(SIMDIR)/$(TESTBENCH) $(TESTBENCHPATH) $(SOURCEPATH)/*
|
endif
|
endif
|
rm -f aDefinitions.v
|
rm -f aDefinitions.v
|
|
|
run : testbench_check
|
run : testbench_check
|
ifeq ($(strip $(SCENEPATH)),)
|
ifeq ($(strip $(SCENEPATH)),)
|
@echo "SCENEPATH not set. Use SCENEPATH=value to set it"
|
@echo "SCENEPATH not set. Use SCENEPATH=value to set it"
|
@exit 2
|
@exit 2
|
endif
|
endif
|
cp -f $(SCENEPATH)/*.mem .
|
cp -f $(SCENEPATH)/*.mem .
|
perl $(INPUTCONFIGURATIONSCRIPT) $(GPUCORES)
|
perl $(INPUTCONFIGURATIONSCRIPT) $(GPUCORES) $(WIDTH) $(HEIGHT)
|
$(VVP_CMD) ./$(TESTBENCH) -$(DUMPTYPE) $(VVP_FLAGS)
|
$(VVP_CMD) ./$(TESTBENCH) -$(DUMPTYPE) $(VVP_FLAGS)
|
|
|
view : testbench_check
|
view : testbench_check
|
$(WAVEFORM_VIEWER) $(SIMDIR)/$(TESTBENCH).$(DUMPTYPE)
|
$(WAVEFORM_VIEWER) $(SIMDIR)/$(TESTBENCH).$(DUMPTYPE)
|
|
|
clean :
|
clean :
|
rm *.{mem,ppm,log}
|
rm *.{mem,ppm,log}
|
|
|