diff --git a/ci/blackbox.sh b/ci/blackbox.sh index 5e06ae65..d5deacec 100755 --- a/ci/blackbox.sh +++ b/ci/blackbox.sh @@ -16,7 +16,17 @@ show_usage() { echo "Vortex BlackBox Test Driver v1.0" - echo "Usage: $0 [[--clusters=#n] [--cores=#n] [--warps=#n] [--threads=#n] [--l2cache] [--l3cache] [[--driver=#name] [--app=#app] [--args=#args] [--debug=#level] [--scope] [--perf=#class] [--rebuild=0|1] [--log=logfile] [--help]]" + echo "Usage: $0 [[--clusters=#n] [--cores=#n] [--warps=#n] [--threads=#n] [--l2cache] [--l3cache] [[--driver=#name] [--app=#app] [--args=#args] [--debug=#level] [--scope] [--perf=#class] [--rebuild=#n] [--log=logfile] [--help]]" +} + +show_help() +{ + show_usage + echo " where" + echo "--driver: simx, rtlsim, oape, xrt" + echo "--app: any subfolder test under regression or opencl" + echo "--class: 0=disable, 1=pipeline, 2=memsys" + echo "--rebuild: 0=disable, 1=force, 2=auto, 3=temp" } SCRIPT_DIR=$(dirname "$0") @@ -36,6 +46,7 @@ SCOPE=0 HAS_ARGS=0 PERF_CLASS=0 REBUILD=2 +TEMPBUILD=0 LOGFILE=run.log for i in "$@" @@ -102,7 +113,7 @@ case $i in shift ;; --help) - show_usage + show_help exit 0 ;; *) @@ -112,6 +123,12 @@ case $i in esac done +if [ $REBUILD -eq 3 ]; +then + REBUILD=1 + TEMPBUILD=1 +fi + case $DRIVER in simx) DRIVER_PATH=$VORTEX_HOME/runtime/simx @@ -174,53 +191,119 @@ make -C $VORTEX_HOME/runtime/stub > /dev/null if [ $DEBUG -ne 0 ] then - # driver initialization - if [ $SCOPE -eq 1 ] - then - echo "running: DEBUG=$DEBUG_LEVEL SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH" - DEBUG=$DEBUG_LEVEL SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null - else - echo "running: DEBUG=$DEBUG_LEVEL CONFIGS="$CONFIGS" make -C $DRIVER_PATH" - DEBUG=$DEBUG_LEVEL CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null - fi - # running application - if [ $HAS_ARGS -eq 1 ] + if [ $TEMPBUILD -eq 1 ] then - echo "running: OPTS=$ARGS make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1" - OPTS=$ARGS make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1 - status=$? + # setup temp directory + TEMPDIR=$(mktemp -d) + mkdir -p "$TEMPDIR/$DRIVER" + + # driver initialization + if [ $SCOPE -eq 1 ] + then + echo "running: DESTDIR=$TEMPDIR/$DRIVER DEBUG=$DEBUG_LEVEL SCOPE=1 CONFIGS=$CONFIGS make -C $DRIVER_PATH" + DESTDIR="$TEMPDIR/$DRIVER" DEBUG=$DEBUG_LEVEL SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null + else + echo "running: DESTDIR=$TEMPDIR/$DRIVER DEBUG=$DEBUG_LEVEL CONFIGS=$CONFIGS make -C $DRIVER_PATH" + DESTDIR="$TEMPDIR/$DRIVER" DEBUG=$DEBUG_LEVEL CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null + fi + + # running application + if [ $HAS_ARGS -eq 1 ] + then + echo "running: VORTEX_RT_PATH=$TEMPDIR OPTS=$ARGS make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1" + VORTEX_RT_PATH=$TEMPDIR OPTS=$ARGS make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1 + status=$? + else + echo "running: VORTEX_RT_PATH=$TEMPDIR make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1" + VORTEX_RT_PATH=$TEMPDIR make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1 + status=$? + fi + + # cleanup temp directory + trap "rm -rf $TEMPDIR" EXIT else - echo "running: make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1" - make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1 - status=$? + # driver initialization + if [ $SCOPE -eq 1 ] + then + echo "running: DEBUG=$DEBUG_LEVEL SCOPE=1 CONFIGS=$CONFIGS make -C $DRIVER_PATH" + DEBUG=$DEBUG_LEVEL SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null + else + echo "running: DEBUG=$DEBUG_LEVEL CONFIGS=$CONFIGS make -C $DRIVER_PATH" + DEBUG=$DEBUG_LEVEL CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null + fi + + # running application + if [ $HAS_ARGS -eq 1 ] + then + echo "running: OPTS=$ARGS make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1" + OPTS=$ARGS make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1 + status=$? + else + echo "running: make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1" + make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1 + status=$? + fi fi if [ -f "$APP_PATH/trace.vcd" ] then mv -f $APP_PATH/trace.vcd . fi -else - # driver initialization - if [ $SCOPE -eq 1 ] +else + if [ $TEMPBUILD -eq 1 ] then - echo "running: SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH" - SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null + # setup temp directory + TEMPDIR=$(mktemp -d) + mkdir -p "$TEMPDIR/$DRIVER" + + # driver initialization + if [ $SCOPE -eq 1 ] + then + echo "running: DESTDIR=$TEMPDIR/$DRIVER SCOPE=1 CONFIGS=$CONFIGS make -C $DRIVER_PATH" + DESTDIR="$TEMPDIR/$DRIVER" SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null + else + echo "running: DESTDIR=$TEMPDIR/$DRIVER CONFIGS=$CONFIGS make -C $DRIVER_PATH" + DESTDIR="$TEMPDIR/$DRIVER" CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null + fi + + # running application + if [ $HAS_ARGS -eq 1 ] + then + echo "running: VORTEX_RT_PATH=$TEMPDIR OPTS=$ARGS make -C $APP_PATH run-$DRIVER" + VORTEX_RT_PATH=$TEMPDIR OPTS=$ARGS make -C $APP_PATH run-$DRIVER + status=$? + else + echo "running: VORTEX_RT_PATH=$TEMPDIR make -C $APP_PATH run-$DRIVER" + VORTEX_RT_PATH=$TEMPDIR make -C $APP_PATH run-$DRIVER + status=$? + fi + + # cleanup temp directory + trap "rm -rf $TEMPDIR" EXIT else - echo "running: CONFIGS="$CONFIGS" make -C $DRIVER_PATH" - CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null - fi - - # running application - if [ $HAS_ARGS -eq 1 ] - then - echo "running: OPTS=$ARGS make -C $APP_PATH run-$DRIVER" - OPTS=$ARGS make -C $APP_PATH run-$DRIVER - status=$? - else - echo "running: make -C $APP_PATH run-$DRIVER" - make -C $APP_PATH run-$DRIVER - status=$? + + # driver initialization + if [ $SCOPE -eq 1 ] + then + echo "running: SCOPE=1 CONFIGS=$CONFIGS make -C $DRIVER_PATH" + SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null + else + echo "running: CONFIGS=$CONFIGS make -C $DRIVER_PATH" + CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null + fi + + # running application + if [ $HAS_ARGS -eq 1 ] + then + echo "running: OPTS=$ARGS make -C $APP_PATH run-$DRIVER" + OPTS=$ARGS make -C $APP_PATH run-$DRIVER + status=$? + else + echo "running: make -C $APP_PATH run-$DRIVER" + make -C $APP_PATH run-$DRIVER + status=$? + fi fi fi diff --git a/runtime/opae/Makefile b/runtime/opae/Makefile index 82d0b69c..153e33b3 100644 --- a/runtime/opae/Makefile +++ b/runtime/opae/Makefile @@ -1,25 +1,15 @@ XLEN ?= 32 - TARGET ?= opaesim - +DESTDIR ?= $(CURDIR) OPAESIM_DIR = ../../sim/opaesim - RTL_DIR=../../hw/rtl - SYN_DIR=../../hw/syn/altera/opae - SCRIPT_DIR=../../hw/scripts CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic -Wfatal-errors -CXXFLAGS += -I. -I../include -I../common/ -I../../hw +CXXFLAGS += -I$(DESTDIR) -I../include -I../common/ -I../../hw CXXFLAGS += -DXLEN_$(XLEN) -ifeq ($(TARGET), opaesim) - CXXFLAGS += -I$(OPAESIM_DIR) -else - CXXFLAGS += -I$(SYN_DIR) -endif - # Position independent code CXXFLAGS += -fPIC @@ -35,9 +25,11 @@ SRCS = vortex.cpp driver.cpp ../common/utils.cpp # set up target types ifeq ($(TARGET), opaesim) - CXXFLAGS += -DOPAESIM - OPAESIM = libopae-c-sim.so + OPAESIM = $(DESTDIR)/libopae-c-sim.so + CXXFLAGS += -DOPAESIM -I$(OPAESIM_DIR) + LDFLAGS += -L$(DESTDIR) -lopae-c-sim else + CXXFLAGS += -I$(SYN_DIR) ifeq ($(TARGET), asesim) CXXFLAGS += -DASESIM else @@ -65,14 +57,14 @@ endif PROJECT = libvortex.so -all: $(PROJECT) +all: $(DESTDIR)/$(PROJECT) -libopae-c-sim.so: - DESTDIR=../../runtime/opae $(MAKE) -C $(OPAESIM_DIR) ../../runtime/opae/libopae-c-sim.so +$(DESTDIR)/libopae-c-sim.so: + DESTDIR=$(DESTDIR) $(MAKE) -C $(OPAESIM_DIR) $(DESTDIR)/libopae-c-sim.so -$(PROJECT): $(SRCS) $(OPAESIM) - $(CXX) $(CXXFLAGS) $(SRCS) $(LDFLAGS) -o $(PROJECT) +$(DESTDIR)/$(PROJECT): $(SRCS) $(OPAESIM) + $(CXX) $(CXXFLAGS) $(SRCS) $(LDFLAGS) -o $@ clean: - DESTDIR=../../runtime/opae $(MAKE) -C $(OPAESIM_DIR) clean - rm -rf $(PROJECT) + DESTDIR=$(DESTDIR) $(MAKE) -C $(OPAESIM_DIR) clean + rm -rf $(DESTDIR)/$(PROJECT) diff --git a/runtime/rtlsim/Makefile b/runtime/rtlsim/Makefile index 57f58df4..4b400f84 100644 --- a/runtime/rtlsim/Makefile +++ b/runtime/rtlsim/Makefile @@ -1,5 +1,5 @@ XLEN ?= 32 - +DESTDIR ?= $(CURDIR) RTLSIM_DIR = ../../sim/rtlsim CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic -Wfatal-errors @@ -16,7 +16,7 @@ CXXFLAGS += $(CONFIGS) CXXFLAGS += -DDUMP_PERF_STATS LDFLAGS += -shared -pthread -LDFLAGS += -L. -lrtlsim +LDFLAGS += -L$(DESTDIR) -lrtlsim SRCS = vortex.cpp ../common/utils.cpp @@ -34,12 +34,12 @@ endif PROJECT = libvortex.so -all: $(PROJECT) +all: $(DESTDIR)/$(PROJECT) -$(PROJECT): $(SRCS) - DESTDIR=../../runtime/rtlsim $(MAKE) -C $(RTLSIM_DIR) ../../runtime/rtlsim/librtlsim.so - $(CXX) $(CXXFLAGS) $(SRCS) $(LDFLAGS) -o $(PROJECT) +$(DESTDIR)/$(PROJECT): $(SRCS) + DESTDIR=$(DESTDIR) $(MAKE) -C $(RTLSIM_DIR) $(DESTDIR)/librtlsim.so + $(CXX) $(CXXFLAGS) $(SRCS) $(LDFLAGS) -o $@ clean: - DESTDIR=../../runtime/rtlsim $(MAKE) -C $(RTLSIM_DIR) clean - rm -rf $(PROJECT) *.o \ No newline at end of file + DESTDIR=$(DESTDIR) $(MAKE) -C $(RTLSIM_DIR) clean + rm -rf $(DESTDIR)/$(PROJECT) *.o \ No newline at end of file diff --git a/runtime/simx/Makefile b/runtime/simx/Makefile index c9f157fd..9397ec24 100644 --- a/runtime/simx/Makefile +++ b/runtime/simx/Makefile @@ -1,5 +1,5 @@ XLEN ?= 32 - +DESTDIR ?= $(CURDIR) SIMX_DIR = ../../sim/simx CXXFLAGS += -std=c++11 -Wall -Wextra -Wfatal-errors @@ -10,7 +10,7 @@ CXXFLAGS += -DDUMP_PERF_STATS CXXFLAGS += -DXLEN_$(XLEN) LDFLAGS += -shared -pthread -LDFLAGS += -L. -lsimx +LDFLAGS += -L$(DESTDIR) -lsimx SRCS = vortex.cpp ../common/utils.cpp @@ -23,12 +23,12 @@ endif PROJECT = libvortex.so -all: $(PROJECT) +all: $(DESTDIR)/$(PROJECT) -$(PROJECT): $(SRCS) - DESTDIR=../../runtime/simx $(MAKE) -C $(SIMX_DIR) ../../runtime/simx/libsimx.so +$(DESTDIR)/$(PROJECT): $(SRCS) + DESTDIR=$(DESTDIR) $(MAKE) -C $(SIMX_DIR) $(DESTDIR)/libsimx.so $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@ clean: - DESTDIR=../../runtime/simx $(MAKE) -C $(SIMX_DIR) clean - rm -rf libsimx.so $(PROJECT) *.o \ No newline at end of file + DESTDIR=$(DESTDIR) $(MAKE) -C $(SIMX_DIR) clean + rm -rf $(DESTDIR)/$(PROJECT) *.o \ No newline at end of file diff --git a/sim/opaesim/Makefile b/sim/opaesim/Makefile index 3b906bc5..93f2da33 100644 --- a/sim/opaesim/Makefile +++ b/sim/opaesim/Makefile @@ -1,5 +1,5 @@ XLEN ?= 32 -DESTDIR ?= . +DESTDIR ?= $(CURDIR) RTL_DIR = ../../hw/rtl DPI_DIR = ../../hw/dpi AFU_DIR = $(RTL_DIR)/afu/opae @@ -119,16 +119,16 @@ PROJECT = libopae-c-sim.so all: $(DESTDIR)/$(PROJECT) $(DESTDIR)/vortex.xml: - verilator --xml-only -O0 $(VL_FLAGS) $(TOP) --xml-output $(DESTDIR)/vortex.xml + verilator --xml-only -O0 $(VL_FLAGS) $(TOP) --xml-output $@ $(DESTDIR)/scope.json: $(DESTDIR)/vortex.xml - $(SCRIPT_DIR)/scope.py $(DESTDIR)/vortex.xml -o $(DESTDIR)/scope.json + $(SCRIPT_DIR)/scope.py $^ -o $@ $(DESTDIR)/vortex_afu.h : $(AFU_DIR)/vortex_afu.vh - $(SCRIPT_DIR)/gen_config.py -i $(AFU_DIR)/vortex_afu.vh -o $(DESTDIR)/vortex_afu.h + $(SCRIPT_DIR)/gen_config.py -i $^ -o $@ $(DESTDIR)/$(PROJECT): $(SRCS) $(DESTDIR)/vortex_afu.h $(SCOPE_JSON) - verilator --build --exe -O3 $(VL_FLAGS) --cc $(TOP) --top-module $(TOP) $(SRCS) -CFLAGS '$(CXXFLAGS)' -LDFLAGS '$(LDFLAGS)' -o ../$(DESTDIR)/$(PROJECT) + verilator --build --exe -O3 $(VL_FLAGS) --cc $(TOP) --top-module $(TOP) $(SRCS) -CFLAGS '$(CXXFLAGS)' -LDFLAGS '$(LDFLAGS)' -o $@ clean: rm -rf obj_dir $(DESTDIR)/vortex.xml $(DESTDIR)/scope.json $(DESTDIR)/vortex_afu.h $(DESTDIR)/$(PROJECT) diff --git a/sim/rtlsim/Makefile b/sim/rtlsim/Makefile index 1d43ea4f..228cdd8b 100644 --- a/sim/rtlsim/Makefile +++ b/sim/rtlsim/Makefile @@ -1,5 +1,5 @@ XLEN ?= 32 -DESTDIR ?= . +DESTDIR ?= $(CURDIR) RTL_DIR = ../../hw/rtl DPI_DIR = ../../hw/dpi THIRD_PARTY_DIR = ../../third_party @@ -88,10 +88,10 @@ PROJECT = rtlsim all: $(DESTDIR)/$(PROJECT) $(DESTDIR)/$(PROJECT): $(SRCS) main.cpp - verilator --build $(VL_FLAGS) $^ -CFLAGS '$(CXXFLAGS) -DSTARTUP_ADDR=0x80000000' -LDFLAGS '$(LDFLAGS)' -o ../$@ + verilator --build $(VL_FLAGS) $^ -CFLAGS '$(CXXFLAGS) -DSTARTUP_ADDR=0x80000000' -LDFLAGS '$(LDFLAGS)' -o $@ $(DESTDIR)/lib$(PROJECT).so: $(SRCS) - verilator --build $(VL_FLAGS) $^ -CFLAGS '$(CXXFLAGS)' -LDFLAGS '-shared $(LDFLAGS)' -o ../$@ + verilator --build $(VL_FLAGS) $^ -CFLAGS '$(CXXFLAGS)' -LDFLAGS '-shared $(LDFLAGS)' -o $@ clean: rm -rf obj_dir $(DESTDIR)/$(PROJECT) $(DESTDIR)/lib$(PROJECT).so diff --git a/sim/simx/Makefile b/sim/simx/Makefile index bb67dbb5..3cce8de0 100644 --- a/sim/simx/Makefile +++ b/sim/simx/Makefile @@ -1,5 +1,5 @@ XLEN ?= 32 -DESTDIR ?= . +DESTDIR ?= $(CURDIR) RTL_DIR = ../hw/rtl THIRD_PARTY_DIR = ../../third_party