enabling temporary build directory for blackbox multiple instances

This commit is contained in:
Blaise Tine
2023-12-28 20:06:10 -08:00
parent 51e621cdf1
commit e62d122c9b
7 changed files with 158 additions and 83 deletions

View File

@@ -16,7 +16,17 @@
show_usage() show_usage()
{ {
echo "Vortex BlackBox Test Driver v1.0" 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") SCRIPT_DIR=$(dirname "$0")
@@ -36,6 +46,7 @@ SCOPE=0
HAS_ARGS=0 HAS_ARGS=0
PERF_CLASS=0 PERF_CLASS=0
REBUILD=2 REBUILD=2
TEMPBUILD=0
LOGFILE=run.log LOGFILE=run.log
for i in "$@" for i in "$@"
@@ -102,7 +113,7 @@ case $i in
shift shift
;; ;;
--help) --help)
show_usage show_help
exit 0 exit 0
;; ;;
*) *)
@@ -112,6 +123,12 @@ case $i in
esac esac
done done
if [ $REBUILD -eq 3 ];
then
REBUILD=1
TEMPBUILD=1
fi
case $DRIVER in case $DRIVER in
simx) simx)
DRIVER_PATH=$VORTEX_HOME/runtime/simx DRIVER_PATH=$VORTEX_HOME/runtime/simx
@@ -174,53 +191,119 @@ make -C $VORTEX_HOME/runtime/stub > /dev/null
if [ $DEBUG -ne 0 ] if [ $DEBUG -ne 0 ]
then 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 # running application
if [ $HAS_ARGS -eq 1 ] if [ $TEMPBUILD -eq 1 ]
then then
echo "running: OPTS=$ARGS make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1" # setup temp directory
OPTS=$ARGS make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1 TEMPDIR=$(mktemp -d)
status=$? 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 else
echo "running: make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1" # driver initialization
make -C $APP_PATH run-$DRIVER > $LOGFILE 2>&1 if [ $SCOPE -eq 1 ]
status=$? 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 fi
if [ -f "$APP_PATH/trace.vcd" ] if [ -f "$APP_PATH/trace.vcd" ]
then then
mv -f $APP_PATH/trace.vcd . mv -f $APP_PATH/trace.vcd .
fi fi
else else
# driver initialization if [ $TEMPBUILD -eq 1 ]
if [ $SCOPE -eq 1 ]
then then
echo "running: SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH" # setup temp directory
SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null 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 else
echo "running: CONFIGS="$CONFIGS" make -C $DRIVER_PATH"
CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null # driver initialization
fi if [ $SCOPE -eq 1 ]
then
# running application echo "running: SCOPE=1 CONFIGS=$CONFIGS make -C $DRIVER_PATH"
if [ $HAS_ARGS -eq 1 ] SCOPE=1 CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null
then else
echo "running: OPTS=$ARGS make -C $APP_PATH run-$DRIVER" echo "running: CONFIGS=$CONFIGS make -C $DRIVER_PATH"
OPTS=$ARGS make -C $APP_PATH run-$DRIVER CONFIGS="$CONFIGS" make -C $DRIVER_PATH > /dev/null
status=$? fi
else
echo "running: make -C $APP_PATH run-$DRIVER" # running application
make -C $APP_PATH run-$DRIVER if [ $HAS_ARGS -eq 1 ]
status=$? 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
fi fi

View File

@@ -1,25 +1,15 @@
XLEN ?= 32 XLEN ?= 32
TARGET ?= opaesim TARGET ?= opaesim
DESTDIR ?= $(CURDIR)
OPAESIM_DIR = ../../sim/opaesim OPAESIM_DIR = ../../sim/opaesim
RTL_DIR=../../hw/rtl RTL_DIR=../../hw/rtl
SYN_DIR=../../hw/syn/altera/opae SYN_DIR=../../hw/syn/altera/opae
SCRIPT_DIR=../../hw/scripts SCRIPT_DIR=../../hw/scripts
CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic -Wfatal-errors 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) CXXFLAGS += -DXLEN_$(XLEN)
ifeq ($(TARGET), opaesim)
CXXFLAGS += -I$(OPAESIM_DIR)
else
CXXFLAGS += -I$(SYN_DIR)
endif
# Position independent code # Position independent code
CXXFLAGS += -fPIC CXXFLAGS += -fPIC
@@ -35,9 +25,11 @@ SRCS = vortex.cpp driver.cpp ../common/utils.cpp
# set up target types # set up target types
ifeq ($(TARGET), opaesim) ifeq ($(TARGET), opaesim)
CXXFLAGS += -DOPAESIM OPAESIM = $(DESTDIR)/libopae-c-sim.so
OPAESIM = libopae-c-sim.so CXXFLAGS += -DOPAESIM -I$(OPAESIM_DIR)
LDFLAGS += -L$(DESTDIR) -lopae-c-sim
else else
CXXFLAGS += -I$(SYN_DIR)
ifeq ($(TARGET), asesim) ifeq ($(TARGET), asesim)
CXXFLAGS += -DASESIM CXXFLAGS += -DASESIM
else else
@@ -65,14 +57,14 @@ endif
PROJECT = libvortex.so PROJECT = libvortex.so
all: $(PROJECT) all: $(DESTDIR)/$(PROJECT)
libopae-c-sim.so: $(DESTDIR)/libopae-c-sim.so:
DESTDIR=../../runtime/opae $(MAKE) -C $(OPAESIM_DIR) ../../runtime/opae/libopae-c-sim.so DESTDIR=$(DESTDIR) $(MAKE) -C $(OPAESIM_DIR) $(DESTDIR)/libopae-c-sim.so
$(PROJECT): $(SRCS) $(OPAESIM) $(DESTDIR)/$(PROJECT): $(SRCS) $(OPAESIM)
$(CXX) $(CXXFLAGS) $(SRCS) $(LDFLAGS) -o $(PROJECT) $(CXX) $(CXXFLAGS) $(SRCS) $(LDFLAGS) -o $@
clean: clean:
DESTDIR=../../runtime/opae $(MAKE) -C $(OPAESIM_DIR) clean DESTDIR=$(DESTDIR) $(MAKE) -C $(OPAESIM_DIR) clean
rm -rf $(PROJECT) rm -rf $(DESTDIR)/$(PROJECT)

View File

@@ -1,5 +1,5 @@
XLEN ?= 32 XLEN ?= 32
DESTDIR ?= $(CURDIR)
RTLSIM_DIR = ../../sim/rtlsim RTLSIM_DIR = ../../sim/rtlsim
CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic -Wfatal-errors CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic -Wfatal-errors
@@ -16,7 +16,7 @@ CXXFLAGS += $(CONFIGS)
CXXFLAGS += -DDUMP_PERF_STATS CXXFLAGS += -DDUMP_PERF_STATS
LDFLAGS += -shared -pthread LDFLAGS += -shared -pthread
LDFLAGS += -L. -lrtlsim LDFLAGS += -L$(DESTDIR) -lrtlsim
SRCS = vortex.cpp ../common/utils.cpp SRCS = vortex.cpp ../common/utils.cpp
@@ -34,12 +34,12 @@ endif
PROJECT = libvortex.so PROJECT = libvortex.so
all: $(PROJECT) all: $(DESTDIR)/$(PROJECT)
$(PROJECT): $(SRCS) $(DESTDIR)/$(PROJECT): $(SRCS)
DESTDIR=../../runtime/rtlsim $(MAKE) -C $(RTLSIM_DIR) ../../runtime/rtlsim/librtlsim.so DESTDIR=$(DESTDIR) $(MAKE) -C $(RTLSIM_DIR) $(DESTDIR)/librtlsim.so
$(CXX) $(CXXFLAGS) $(SRCS) $(LDFLAGS) -o $(PROJECT) $(CXX) $(CXXFLAGS) $(SRCS) $(LDFLAGS) -o $@
clean: clean:
DESTDIR=../../runtime/rtlsim $(MAKE) -C $(RTLSIM_DIR) clean DESTDIR=$(DESTDIR) $(MAKE) -C $(RTLSIM_DIR) clean
rm -rf $(PROJECT) *.o rm -rf $(DESTDIR)/$(PROJECT) *.o

View File

@@ -1,5 +1,5 @@
XLEN ?= 32 XLEN ?= 32
DESTDIR ?= $(CURDIR)
SIMX_DIR = ../../sim/simx SIMX_DIR = ../../sim/simx
CXXFLAGS += -std=c++11 -Wall -Wextra -Wfatal-errors CXXFLAGS += -std=c++11 -Wall -Wextra -Wfatal-errors
@@ -10,7 +10,7 @@ CXXFLAGS += -DDUMP_PERF_STATS
CXXFLAGS += -DXLEN_$(XLEN) CXXFLAGS += -DXLEN_$(XLEN)
LDFLAGS += -shared -pthread LDFLAGS += -shared -pthread
LDFLAGS += -L. -lsimx LDFLAGS += -L$(DESTDIR) -lsimx
SRCS = vortex.cpp ../common/utils.cpp SRCS = vortex.cpp ../common/utils.cpp
@@ -23,12 +23,12 @@ endif
PROJECT = libvortex.so PROJECT = libvortex.so
all: $(PROJECT) all: $(DESTDIR)/$(PROJECT)
$(PROJECT): $(SRCS) $(DESTDIR)/$(PROJECT): $(SRCS)
DESTDIR=../../runtime/simx $(MAKE) -C $(SIMX_DIR) ../../runtime/simx/libsimx.so DESTDIR=$(DESTDIR) $(MAKE) -C $(SIMX_DIR) $(DESTDIR)/libsimx.so
$(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@ $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@
clean: clean:
DESTDIR=../../runtime/simx $(MAKE) -C $(SIMX_DIR) clean DESTDIR=$(DESTDIR) $(MAKE) -C $(SIMX_DIR) clean
rm -rf libsimx.so $(PROJECT) *.o rm -rf $(DESTDIR)/$(PROJECT) *.o

View File

@@ -1,5 +1,5 @@
XLEN ?= 32 XLEN ?= 32
DESTDIR ?= . DESTDIR ?= $(CURDIR)
RTL_DIR = ../../hw/rtl RTL_DIR = ../../hw/rtl
DPI_DIR = ../../hw/dpi DPI_DIR = ../../hw/dpi
AFU_DIR = $(RTL_DIR)/afu/opae AFU_DIR = $(RTL_DIR)/afu/opae
@@ -119,16 +119,16 @@ PROJECT = libopae-c-sim.so
all: $(DESTDIR)/$(PROJECT) all: $(DESTDIR)/$(PROJECT)
$(DESTDIR)/vortex.xml: $(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 $(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 $(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) $(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: clean:
rm -rf obj_dir $(DESTDIR)/vortex.xml $(DESTDIR)/scope.json $(DESTDIR)/vortex_afu.h $(DESTDIR)/$(PROJECT) rm -rf obj_dir $(DESTDIR)/vortex.xml $(DESTDIR)/scope.json $(DESTDIR)/vortex_afu.h $(DESTDIR)/$(PROJECT)

View File

@@ -1,5 +1,5 @@
XLEN ?= 32 XLEN ?= 32
DESTDIR ?= . DESTDIR ?= $(CURDIR)
RTL_DIR = ../../hw/rtl RTL_DIR = ../../hw/rtl
DPI_DIR = ../../hw/dpi DPI_DIR = ../../hw/dpi
THIRD_PARTY_DIR = ../../third_party THIRD_PARTY_DIR = ../../third_party
@@ -88,10 +88,10 @@ PROJECT = rtlsim
all: $(DESTDIR)/$(PROJECT) all: $(DESTDIR)/$(PROJECT)
$(DESTDIR)/$(PROJECT): $(SRCS) main.cpp $(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) $(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: clean:
rm -rf obj_dir $(DESTDIR)/$(PROJECT) $(DESTDIR)/lib$(PROJECT).so rm -rf obj_dir $(DESTDIR)/$(PROJECT) $(DESTDIR)/lib$(PROJECT).so

View File

@@ -1,5 +1,5 @@
XLEN ?= 32 XLEN ?= 32
DESTDIR ?= . DESTDIR ?= $(CURDIR)
RTL_DIR = ../hw/rtl RTL_DIR = ../hw/rtl
THIRD_PARTY_DIR = ../../third_party THIRD_PARTY_DIR = ../../third_party