#------------------------------------------------------------------------------
# $Header: /projects/raw/cvsroot/benchmark/Makefile,v 1.11 1997/08/16 22:19:37 jbabb Exp $
#
# Top level Benchmark Suite Makefile
#
# Authors: Jonathan Babb (jbabb@lcs.mit.edu)
#
# Copyright @ 1997 MIT Laboratory for Computer Science, Cambridge, MA 02129
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
# Targets of interest:
#
# release - generate and check distribution netlists
# results - generate results for all benchmarks
# distresults - generate results for all benchmarks from distribution nets
# summary - summarize results for built benchmarks
# soft - execute software version of all benchmarks
# drivers - compile all driver programs
# driver-soft - compile hardware driver program
# driver-sim - compile simulation driver program
# driver-hard - compile software driver program
# syn - synthesize all benchmarks
# compile - compile all benchmarks for hardware
# distcompile - compile all benchmarks for hardware from distribution netlists
# report - report hardware statistics for compiled benchmarks
# check - simulate behavioral and synthesized benchmark netlists
# checkhard - execute smallest size of each benchmark on the hardware
# dist - create a distribution tar.gz file including source and netlists
# distbuild - builds the distribution
# distclean - cleans up non-distributed files created during build process
# realclean - cleans up as much as possible, down to the bare source
#
# BENCHMARK.{any of the above} is the target for a specific benchmark
#
#------------------------------------------------------------------------------
.SILENT:
NAME = benchmark_v1.0
SUITESDIR = suites
RESULTS = Results.txt
RESULTS_HTML = Results.html
SUITES = \
bheap.suite \
bubblesort.suite \
des.suite \
fft.suite \
intmatmul.suite \
jacobi.suite \
life.suite \
mergesort.suite \
nqueens.suite
# graph.suite
all:
@echo Nothing to make
release:
@echo "Starting full release procedure..."
gmake dist check | tee ../$(NAME).log
echo \
"Completed full release. (log file: $(NAME).log)"
results: $(SUITES:.suite=.results) summary
$(SUITES:.suite=.results):
@echo "Generating results for $(@:.results=) suite..."
(cd $(SUITESDIR)/$(@:.results=)/build; gmake results)
@echo "Completed generating results for $(@:.results=) suite."
distresults: $(SUITES:.suite=.distresults) summary
$(SUITES:.suite=.distresults):
@echo "Generating distresults, $(@:.distresults=) suite..."
(cd $(SUITESDIR)/$(@:.distresults=)/build; gmake distresults)
@echo "Completed generating distresults, $(@:.distresults=) suite."
$(RESULTS_HTML): summary
summary: summary.txt
@echo "Creating results summary page ($(RESULTS_HTML))..."
echo "
Results" > $(RESULTS_HTML)
cat $(RESULTS) | awk '{print " | "$$1" | "$$2" | "$$3" | "$$4" | "$$5" | "$$6" | "$$7" | "$$8" | "$$9" | "$$10" | "$$11" | "$$12" | "$$13" | "$$14" |
"}' >> $(RESULTS_HTML)
echo "
" >> $(RESULTS_HTML)
$(RESULTS): summary.txt
summary.txt: Makefile
@echo "Creating results summary table ($(RESULTS))..."
echo "name case elements bits cycles soft-speed(KHZ) total-gates useful-gates FPGAs v-cycles hard-clk(MHZ) hard-speed(KHZ) speedup per-FPGA" > $(RESULTS)
cat suites/*/build/*.summary >> $(RESULTS)
report: $(SUITES:.suite=.report)
$(SUITES:.suite=.report):
@echo "Compiling result reports for $(@:.report=) suite..."
(cd $(SUITESDIR)/$(@:.report=)/build; gmake report)
@echo "Completed running report version of $(@:.report=) suite."
soft: $(SUITES:.suite=.soft)
$(SUITES:.suite=.soft):
@echo "Running software version of $(@:.soft=) suite..."
(cd $(SUITESDIR)/$(@:.soft=)/build; gmake soft)
@echo "Completed running software version of $(@:.soft=) suite."
drivers: $(SUITES:.suite=.drivers)
$(SUITES:.suite=.drivers):
@echo "Building drivers for $(@:.drivers=) suite..."
(cd $(SUITESDIR)/$(@:.drivers=)/build; gmake drivers)
@echo "Completed building drivers for $(@:.drivers=) suite..."
driver-hard: $(SUITES:.suite=.driver-hard)
$(SUITES:.suite=.driver-hard):
@echo "Building driver-hard for $(@:.driver-hard=) suite..."
(cd $(SUITESDIR)/$(@:.driver-hard=)/build; gmake driver-hard)
@echo "Completed building driver-hard for $(@:.driver-hard=) suite..."
driver-sim: $(SUITES:.suite=.driver-sim)
$(SUITES:.suite=.driver-sim):
@echo "Building driver-sim for $(@:.driver-sim=) suite..."
(cd $(SUITESDIR)/$(@:.driver-sim=)/build; gmake driver-sim)
@echo "Completed building driver-sim for $(@:.driver-sim=) suite..."
driver-soft: $(SUITES:.suite=.driver-soft)
$(SUITES:.suite=.driver-soft):
@echo "Building driver-soft for $(@:.driver-soft=) suite..."
(cd $(SUITESDIR)/$(@:.driver-soft=)/build; gmake driver-soft)
@echo "Completed building driver-soft for $(@:.driver-soft=) suite..."
check: $(SUITES:.suite=.check)
$(SUITES:.suite=.check):
@echo "Checking $(@:.check=) suite..."
(cd $(SUITESDIR)/$(@:.check=)/build; gmake check)
@echo "Completed checking $(@:.check=) suite."
checkhard: $(SUITES:.suite=.checkhard)
$(SUITES:.suite=.checkhard):
@echo "Checking small benchmark on hardware, $(@:.checkhard=) suite..."
(cd $(SUITESDIR)/$(@:.checkhard=)/build; gmake checkhard)
@echo "Checking small benchmark on hardware, $(@:.checkhard=) suite."
syn: $(SUITES:.suite=.syn)
$(SUITES:.suite=.syn):
@echo "Running synthesizing $(@:.syn=) suite..."
(cd $(SUITESDIR)/$(@:.syn=)/build; gmake syn)
@echo "Completed synthesizing $(@:.syn=) suite."
compile: $(SUITES:.suite=.compile)
$(SUITES:.suite=.compile):
@echo "Running compiling $(@:.compile=) suite..."
(cd $(SUITESDIR)/$(@:.compile=)/build; gmake compile)
@echo "Completed compiling $(@:.compile=) suite."
distcompile: $(SUITES:.suite=.distcompile)
$(SUITES:.suite=.distcompile):
@echo "Compiling hardware from dist, $(@:.distcompile=) suite..."
(cd $(SUITESDIR)/$(@:.distcompile=)/build; gmake distcompile)
@echo "Compiling hardware from dist, $(@:.distcompile=) suite..."
dist: distbuild distclean tar
tar:
(cd ..; \
tar -cvf $(NAME).tar $(NAME); \
gzip $(NAME).tar)
@echo "Distribution file: $(NAME).tar.gz
distbuild: $(SUITES:.suite=.distbuild)
$(SUITES:.suite=.distbuild):
@echo "Building $(@:.distbuild=) suite distribution..."
(cd $(SUITESDIR)/$(@:.distbuild=)/build; gmake distbuild)
@echo "Completed building $(@:.distbuild=) suite distribution."
distclean: $(SUITES:.suite=.distclean)
@echo "Completed distcleaning benchmark directories."
$(SUITES:.suite=.distclean):
(cd $(SUITESDIR)/$(@:.distclean=)/build; gmake distclean)
@echo "Completed distcleaning $(@:.distclean=) suite."
realclean: $(SUITES:.suite=.realclean)
-rm -f $(RESULTS) $(RESULTS_HTML)
@echo "Completed realcleaning benchmark directories."
$(SUITES:.suite=.realclean):
(cd $(SUITESDIR)/$(@:.realclean=)/build; gmake realclean)
@echo "Completed cleaning $(@:.realclean=) suite."
#---------------------------------------------------------------------