diff --git a/.travis.yml b/.travis.yml index f719ce86..236ed3b7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,7 +38,7 @@ jobs: - rm -rf $HOME/build32 && cp -r $PWD $HOME/build32 - rm -rf $HOME/build64 && cp -r $PWD $HOME/build64 - make -C $HOME/build32 - - XLEN=64 RISCV_TOOLCHAIN_PATH=$TOOLDIR/riscv64-gnu-toolchain make -C $HOME/build64 + - XLEN=64 make -C $HOME/build64 - stage: test name: unittest script: cp -r $HOME/build32 build && cd build && ./ci/travis_run.py ./ci/regression.sh --unittest @@ -47,13 +47,13 @@ jobs: script: cp -r $HOME/build32 build && cd build && ./ci/travis_run.py ./ci/regression.sh --isa - stage: test name: isa64 - script: cp -r $HOME/build64 build && cd build && XLEN=64 RISCV_TOOLCHAIN_PATH=$TOOLDIR/riscv64-gnu-toolchain ./ci/travis_run.py ./ci/regression.sh --isa + script: cp -r $HOME/build64 build && cd build && XLEN=64 ./ci/travis_run.py ./ci/regression.sh --isa - stage: test name: regression script: cp -r $HOME/build32 build && cd build && ./ci/travis_run.py ./ci/regression.sh --regression - stage: test name: regression64 - script: cp -r $HOME/build64 build && cd build && XLEN=64 RISCV_TOOLCHAIN_PATH=$TOOLDIR/riscv64-gnu-toolchain ./ci/travis_run.py ./ci/regression.sh --regression + script: cp -r $HOME/build64 build && cd build && XLEN=64 ./ci/travis_run.py ./ci/regression.sh --regression - stage: test name: opencl script: cp -r $HOME/build32 build && cd build && ./ci/travis_run.py ./ci/regression.sh --opencl diff --git a/ci/toolchain_env.sh b/ci/toolchain_env.sh index 4046a6a7..440a899e 100644 --- a/ci/toolchain_env.sh +++ b/ci/toolchain_env.sh @@ -16,14 +16,11 @@ TOOLDIR=${TOOLDIR:=/opt} -export RISCV_TOOLCHAIN_PATH=$TOOLDIR/riscv-gnu-toolchain -export LLVM_POCL=$TOOLDIR/llvm-pocl -export LLVM_VORTEX=$TOOLDIR/llvm-vortex export VERILATOR_ROOT=$TOOLDIR/verilator export PATH=$VERILATOR_ROOT/bin:$PATH + export SV2V_PATH=$TOOLDIR/sv2v export PATH=$SV2V_PATH/bin:$PATH + export YOSYS_PATH=$TOOLDIR/yosys export PATH=$YOSYS_PATH/bin:$PATH -export POCL_CC_PATH=$TOOLDIR/pocl/compiler -export POCL_RT_PATH=$TOOLDIR/pocl/runtime diff --git a/docs/fpga_setup.md b/docs/fpga_setup.md index 61ff481f..88e0c3c0 100644 --- a/docs/fpga_setup.md +++ b/docs/fpga_setup.md @@ -9,9 +9,6 @@ OPAE Environment Setup $ export C_INCLUDE_PATH=$OPAE_HOME/include:$C_INCLUDE_PATH $ export LIBRARY_PATH=$OPAE_HOME/lib:$LIBRARY_PATH $ export LD_LIBRARY_PATH=$OPAE_HOME/lib:$LD_LIBRARY_PATH - $ export RISCV_TOOLCHAIN_PATH=/opt/riscv-gnu-toolchain - $ export PATH=:/opt/verilator/bin:$PATH - $ export VERILATOR_ROOT=/opt/verilator OPAE Build ------------------ diff --git a/hw/syn/xilinx/test/kernel/Makefile b/hw/syn/xilinx/test/kernel/Makefile index 55c21aa2..11457ab4 100644 --- a/hw/syn/xilinx/test/kernel/Makefile +++ b/hw/syn/xilinx/test/kernel/Makefile @@ -1,10 +1,11 @@ XLEN ?= 32 +TOOLDIR ?= /opt ifeq ($(XLEN),64) -RISCV_TOOLCHAIN_PATH ?= /opt/riscv64-gnu-toolchain +RISCV_TOOLCHAIN_PATH ?= $(TOOLDIR)/riscv64-gnu-toolchain CFLAGS += -march=rv64imafd -mabi=lp64d else -RISCV_TOOLCHAIN_PATH ?= /opt/riscv-gnu-toolchain +RISCV_TOOLCHAIN_PATH ?= $(TOOLDIR)/riscv-gnu-toolchain CFLAGS += -march=rv32imaf -mabi=ilp32f endif diff --git a/kernel/Makefile b/kernel/Makefile index e4c975dc..07b8c97b 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -1,17 +1,18 @@ XLEN ?= 32 +TOOLDIR ?= /opt ifeq ($(XLEN),64) -RISCV_TOOLCHAIN_PATH ?= /opt/riscv64-gnu-toolchain +RISCV_TOOLCHAIN_PATH ?= $(TOOLDIR)/riscv64-gnu-toolchain CFLAGS += -march=rv64imafd -mabi=lp64d else -RISCV_TOOLCHAIN_PATH ?= /opt/riscv-gnu-toolchain +RISCV_TOOLCHAIN_PATH ?= $(TOOLDIR)/riscv-gnu-toolchain CFLAGS += -march=rv32imaf -mabi=ilp32f endif RISCV_PREFIX ?= riscv$(XLEN)-unknown-elf RISCV_SYSROOT ?= $(RISCV_TOOLCHAIN_PATH)/$(RISCV_PREFIX) -LLVM_VORTEX ?= /opt/llvm-vortex +LLVM_VORTEX ?= $(TOOLDIR)/llvm-vortex LLVM_CFLAGS += --sysroot=$(RISCV_SYSROOT) LLVM_CFLAGS += --gcc-toolchain=$(RISCV_TOOLCHAIN_PATH) diff --git a/tests/kernel/common.mk b/tests/kernel/common.mk new file mode 100644 index 00000000..7bf4b520 --- /dev/null +++ b/tests/kernel/common.mk @@ -0,0 +1,49 @@ +XLEN ?= 32 +TOOLDIR ?= /opt + +ifeq ($(XLEN),64) +RISCV_TOOLCHAIN_PATH ?= $(TOOLDIR)/riscv64-gnu-toolchain +CFLAGS += -march=rv64imafd -mabi=lp64d +else +RISCV_TOOLCHAIN_PATH ?= $(TOOLDIR)/riscv-gnu-toolchain +CFLAGS += -march=rv32imaf -mabi=ilp32f +endif + +RISCV_PREFIX ?= riscv$(XLEN)-unknown-elf + +VORTEX_KN_PATH ?= $(realpath ../../../kernel) + +CC = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-gcc +AR = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-gcc-ar +DP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-objdump +CP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-objcopy + +SIM_DIR = ../../../sim + +CFLAGS += -O3 -mcmodel=medany -fno-exceptions -nostartfiles -fdata-sections -ffunction-sections +CFLAGS += -I$(VORTEX_KN_PATH)/include -I$(VORTEX_KN_PATH)/../hw + +LDFLAGS += -lm -Wl,-Bstatic,--gc-sections,-T,$(VORTEX_KN_PATH)/linker/vx_link$(XLEN).ld,--defsym=STARTUP_ADDR=0x80000000 $(VORTEX_KN_PATH)/libvortexrt.a + +all: $(PROJECT).elf $(PROJECT).bin $(PROJECT).dump + +$(PROJECT).dump: $(PROJECT).elf + $(DP) -D $(PROJECT).elf > $(PROJECT).dump + +$(PROJECT).bin: $(PROJECT).elf + $(CP) -O binary $(PROJECT).elf $(PROJECT).bin + +$(PROJECT).elf: $(SRCS) + $(CC) $(CFLAGS) $(SRCS) $(LDFLAGS) -o $(PROJECT).elf + +run-rtlsim: $(PROJECT).bin + $(SIM_DIR)/rtlsim/rtlsim $(PROJECT).bin + +run-simx: $(PROJECT).bin + $(SIM_DIR)/simx/simx $(PROJECT).bin + +.depend: $(SRCS) + $(CC) $(CFLAGS) -MM $^ > .depend; + +clean: + rm -rf *.elf *.bin *.dump .depend diff --git a/tests/kernel/conform/Makefile b/tests/kernel/conform/Makefile index e9897125..ee96978f 100644 --- a/tests/kernel/conform/Makefile +++ b/tests/kernel/conform/Makefile @@ -1,52 +1,5 @@ -XLEN ?= 32 - -ifeq ($(XLEN),64) -RISCV_TOOLCHAIN_PATH ?= /opt/riscv64-gnu-toolchain -CFLAGS += -march=rv64imafd -mabi=lp64d -else -RISCV_TOOLCHAIN_PATH ?= /opt/riscv-gnu-toolchain -CFLAGS += -march=rv32imaf -mabi=ilp32f -endif - -RISCV_PREFIX ?= riscv$(XLEN)-unknown-elf - -VORTEX_KN_PATH ?= $(realpath ../../../kernel) - -CC = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-gcc -AR = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-gcc-ar -DP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-objdump -CP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-objcopy - -SIM_DIR = ../../../sim - -CFLAGS += -O3 -mcmodel=medany -fno-exceptions -nostartfiles -fdata-sections -ffunction-sections -CFLAGS += -I$(VORTEX_KN_PATH)/include -I$(VORTEX_KN_PATH)/../hw - -LDFLAGS += -lm -Wl,-Bstatic,--gc-sections,-T,$(VORTEX_KN_PATH)/linker/vx_link$(XLEN).ld,--defsym=STARTUP_ADDR=0x80000000 $(VORTEX_KN_PATH)/libvortexrt.a - PROJECT = conform SRCS = main.cpp tests.cpp -all: $(PROJECT).elf $(PROJECT).bin $(PROJECT).dump - -$(PROJECT).dump: $(PROJECT).elf - $(DP) -D $(PROJECT).elf > $(PROJECT).dump - -$(PROJECT).bin: $(PROJECT).elf - $(CP) -O binary $(PROJECT).elf $(PROJECT).bin - -$(PROJECT).elf: $(SRCS) - $(CC) $(CFLAGS) $(SRCS) $(LDFLAGS) -o $(PROJECT).elf - -run-rtlsim: $(PROJECT).bin - $(SIM_DIR)/rtlsim/rtlsim $(PROJECT).bin - -run-simx: $(PROJECT).bin - $(SIM_DIR)/simx/simx $(PROJECT).bin - -.depend: $(SRCS) - $(CC) $(CFLAGS) -MM $^ > .depend; - -clean: - rm -rf *.elf *.bin *.dump .depend +include ../common.mk diff --git a/tests/kernel/fibonacci/Makefile b/tests/kernel/fibonacci/Makefile index 1338b4ab..d4486c74 100644 --- a/tests/kernel/fibonacci/Makefile +++ b/tests/kernel/fibonacci/Makefile @@ -1,52 +1,5 @@ -XLEN ?= 32 - -ifeq ($(XLEN),64) -RISCV_TOOLCHAIN_PATH ?= /opt/riscv64-gnu-toolchain -CFLAGS += -march=rv64imafd -mabi=lp64d -else -RISCV_TOOLCHAIN_PATH ?= /opt/riscv-gnu-toolchain -CFLAGS += -march=rv32imaf -mabi=ilp32f -endif - -RISCV_PREFIX ?= riscv$(XLEN)-unknown-elf - -VORTEX_KN_PATH ?= $(realpath ../../../kernel) - -CC = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-gcc -AR = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-gcc-ar -DP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-objdump -CP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-objcopy - -SIM_DIR = ../../../sim - -CFLAGS += -O3 -mcmodel=medany -fno-exceptions -nostartfiles -fdata-sections -ffunction-sections -CFLAGS += -I$(VORTEX_KN_PATH)/include -I$(VORTEX_KN_PATH)/../hw - -LDFLAGS += -lm -Wl,-Bstatic,--gc-sections,-T,$(VORTEX_KN_PATH)/linker/vx_link$(XLEN).ld,--defsym=STARTUP_ADDR=0x80000000 $(VORTEX_KN_PATH)/libvortexrt.a - PROJECT = fibonacci SRCS = main.cpp -all: $(PROJECT).elf $(PROJECT).bin $(PROJECT).dump - -$(PROJECT).dump: $(PROJECT).elf - $(DP) -D $(PROJECT).elf > $(PROJECT).dump - -$(PROJECT).bin: $(PROJECT).elf - $(CP) -O binary $(PROJECT).elf $(PROJECT).bin - -$(PROJECT).elf: $(SRCS) - $(CC) $(CFLAGS) $(SRCS) $(LDFLAGS) -o $(PROJECT).elf - -run-rtlsim: $(PROJECT).bin - $(SIM_DIR)/rtlsim/rtlsim $(PROJECT).bin - -run-simx: $(PROJECT).bin - $(SIM_DIR)/simx/simx $(PROJECT).bin - -.depend: $(SRCS) - $(CC) $(CFLAGS) -MM $^ > .depend; - -clean: - rm -rf *.elf *.bin *.dump .depend +include ../common.mk diff --git a/tests/kernel/hello/Makefile b/tests/kernel/hello/Makefile index 42d95256..4cff6cbd 100644 --- a/tests/kernel/hello/Makefile +++ b/tests/kernel/hello/Makefile @@ -1,52 +1,5 @@ -XLEN ?= 32 - -ifeq ($(XLEN),64) -RISCV_TOOLCHAIN_PATH ?= /opt/riscv64-gnu-toolchain -CFLAGS += -march=rv64imafd -mabi=lp64d -else -RISCV_TOOLCHAIN_PATH ?= /opt/riscv-gnu-toolchain -CFLAGS += -march=rv32imaf -mabi=ilp32f -endif - -RISCV_PREFIX ?= riscv$(XLEN)-unknown-elf - -VORTEX_KN_PATH ?= $(realpath ../../../kernel) - -CC = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-gcc -AR = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-gcc-ar -DP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-objdump -CP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-objcopy - -SIM_DIR = ../../../sim - -CFLAGS += -O3 -v -mcmodel=medany -fno-exceptions -nostartfiles -fdata-sections -ffunction-sections -CFLAGS += -I$(VORTEX_KN_PATH)/include -I$(VORTEX_KN_PATH)/../hw - -LDFLAGS += -lm -Wl,-Bstatic,--gc-sections,-T,$(VORTEX_KN_PATH)/linker/vx_link$(XLEN).ld,--defsym=STARTUP_ADDR=0x80000000 $(VORTEX_KN_PATH)/libvortexrt.a - PROJECT = hello SRCS = main.cpp -all: $(PROJECT).elf $(PROJECT).bin $(PROJECT).dump - -$(PROJECT).dump: $(PROJECT).elf - $(DP) -D $(PROJECT).elf > $(PROJECT).dump - -$(PROJECT).bin: $(PROJECT).elf - $(CP) -O binary $(PROJECT).elf $(PROJECT).bin - -$(PROJECT).elf: $(SRCS) - $(CC) $(CFLAGS) $(SRCS) $(LDFLAGS) -o $(PROJECT).elf - -run-rtlsim: $(PROJECT).bin - $(SIM_DIR)/rtlsim/rtlsim $(PROJECT).bin - -run-simx: $(PROJECT).bin - $(SIM_DIR)/simx/simx $(PROJECT).bin - -.depend: $(SRCS) - $(CC) $(CFLAGS) -MM $^ > .depend; - -clean: - rm -rf *.elf *.bin *.dump .depend +include ../common.mk diff --git a/tests/opencl/common.mk b/tests/opencl/common.mk index fc55ee0a..ce82dac3 100644 --- a/tests/opencl/common.mk +++ b/tests/opencl/common.mk @@ -1,4 +1,5 @@ XLEN ?= 32 +TOOLDIR ?= /opt TARGET ?= opaesim @@ -6,12 +7,12 @@ XRT_SYN_DIR ?= ../../../hw/syn/xilinx/xrt XRT_DEVICE_INDEX ?= 0 ifeq ($(XLEN),64) -RISCV_TOOLCHAIN_PATH ?= /opt/riscv64-gnu-toolchain +RISCV_TOOLCHAIN_PATH ?= $(TOOLDIR)/riscv64-gnu-toolchain VX_CFLAGS += -march=rv64imafd -mabi=lp64d K_CFLAGS += -march=rv64imafd -mabi=ilp64d STARTUP_ADDR ?= 0x180000000 else -RISCV_TOOLCHAIN_PATH ?= /opt/riscv-gnu-toolchain +RISCV_TOOLCHAIN_PATH ?= $(TOOLDIR)/riscv-gnu-toolchain VX_CFLAGS += -march=rv32imaf -mabi=ilp32f K_CFLAGS += -march=rv32imaf -mabi=ilp32f STARTUP_ADDR ?= 0x80000000 @@ -20,16 +21,16 @@ endif RISCV_PREFIX ?= riscv$(XLEN)-unknown-elf RISCV_SYSROOT ?= $(RISCV_TOOLCHAIN_PATH)/$(RISCV_PREFIX) -POCL_CC_PATH ?= /opt/pocl/compiler -POCL_RT_PATH ?= /opt/pocl/runtime +POCL_CC_PATH ?= $(TOOLDIR)/pocl/compiler +POCL_RT_PATH ?= $(TOOLDIR)/pocl/runtime VORTEX_RT_PATH ?= $(realpath ../../../runtime) VORTEX_KN_PATH ?= $(realpath ../../../kernel) FPGA_BIN_DIR ?= $(VORTEX_RT_PATH)/opae -LLVM_VORTEX ?= /opt/llvm-vortex -LLVM_POCL ?= /opt/llvm-vortex +LLVM_VORTEX ?= $(TOOLDIR)/llvm-vortex +LLVM_POCL ?= $(TOOLDIR)/llvm-vortex K_CFLAGS += -v -O3 --sysroot=$(RISCV_SYSROOT) --gcc-toolchain=$(RISCV_TOOLCHAIN_PATH) -Xclang -target-feature -Xclang +vortex K_CFLAGS += -fno-rtti -fno-exceptions -nostartfiles -fdata-sections -ffunction-sections diff --git a/tests/regression/common.mk b/tests/regression/common.mk index 006d6668..6a858edc 100644 --- a/tests/regression/common.mk +++ b/tests/regression/common.mk @@ -1,16 +1,18 @@ XLEN ?= 32 +TOOLDIR ?= /opt + TARGET ?= opaesim XRT_SYN_DIR ?= ../../../hw/syn/xilinx/xrt XRT_DEVICE_INDEX ?= 0 ifeq ($(XLEN),64) -RISCV_TOOLCHAIN_PATH ?= /opt/riscv64-gnu-toolchain +RISCV_TOOLCHAIN_PATH ?= $(TOOLDIR)/riscv64-gnu-toolchain VX_CFLAGS += -march=rv64imafd -mabi=lp64d STARTUP_ADDR ?= 0x180000000 else -RISCV_TOOLCHAIN_PATH ?= /opt/riscv-gnu-toolchain +RISCV_TOOLCHAIN_PATH ?= $(TOOLDIR)/riscv-gnu-toolchain VX_CFLAGS += -march=rv32imaf -mabi=ilp32f STARTUP_ADDR ?= 0x80000000 endif @@ -23,7 +25,7 @@ VORTEX_KN_PATH ?= $(realpath ../../../kernel) FPGA_BIN_DIR ?= $(VORTEX_RT_PATH)/opae -LLVM_VORTEX ?= /opt/llvm-vortex +LLVM_VORTEX ?= $(TOOLDIR)/llvm-vortex LLVM_CFLAGS += --sysroot=$(RISCV_SYSROOT) LLVM_CFLAGS += --gcc-toolchain=$(RISCV_TOOLCHAIN_PATH) diff --git a/tests/unittest/common.mk b/tests/unittest/common.mk new file mode 100644 index 00000000..11add105 --- /dev/null +++ b/tests/unittest/common.mk @@ -0,0 +1,30 @@ +VORTEX_RT_PATH ?= $(realpath ../../../runtime) + +CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic -Wfatal-errors + +CXXFLAGS += -I$(VORTEX_RT_PATH)/common + +# Debugigng +ifdef DEBUG + CXXFLAGS += -g -O0 +else + CXXFLAGS += -O2 -DNDEBUG +endif + +all: $(PROJECT) + +$(PROJECT): $(SRCS) + $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@ + +run: + ./$(PROJECT) + +clean: + rm -rf $(PROJECT) *.o .depend + +clean-all: clean + rm -rf *.elf *.bin *.dump + +ifneq ($(MAKECMDGOALS),clean) + -include .depend +endif diff --git a/tests/unittest/vx_malloc/Makefile b/tests/unittest/vx_malloc/Makefile index 2d604620..2036fcde 100644 --- a/tests/unittest/vx_malloc/Makefile +++ b/tests/unittest/vx_malloc/Makefile @@ -1,34 +1,5 @@ -VORTEX_RT_PATH ?= $(realpath ../../../runtime) - -CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic -Wfatal-errors - -CXXFLAGS += -I$(VORTEX_RT_PATH)/common - -# Debugigng -ifdef DEBUG - CXXFLAGS += -g -O0 -else - CXXFLAGS += -O2 -DNDEBUG -endif - PROJECT = vx_malloc SRCS = main.cpp -all: $(PROJECT) - -$(PROJECT): $(SRCS) - $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@ - -run: - ./$(PROJECT) - -clean: - rm -rf $(PROJECT) *.o .depend - -clean-all: clean - rm -rf *.elf *.bin *.dump - -ifneq ($(MAKECMDGOALS),clean) - -include .depend -endif \ No newline at end of file +include ../common.mk