abstractaccelerator/Cores-SweRV/demo/helloworld/Makefile

73 lines
2.4 KiB
Makefile
Raw Normal View History

2021-12-16 20:07:50 +08:00
export RV_ROOT = ${PWD}/../..
2021-12-17 21:29:59 +08:00
LLVMINSTALL = /home/colin/develop/llvm-build/install
2022-01-27 16:42:31 +08:00
GCC_PREFIX = /opt/riscv/bin/riscv32-unknown-elf
2021-12-17 21:29:59 +08:00
2022-01-17 20:18:33 +08:00
DEMODIR = ${PWD}
BUILD_DIR = ${DEMODIR}/build
2021-12-17 21:29:59 +08:00
RV_DESIGN = ${RV_ROOT}/design
2022-01-17 19:53:50 +08:00
RV_SOC = ${RV_ROOT}/soc
2021-12-16 20:07:50 +08:00
TEST = hello_world
ifdef debug
DEBUG_PLUS = +dumpon
VERILATOR_DEBUG = --trace
endif
2022-01-17 20:18:33 +08:00
LINK = $(DEMODIR)/link.ld
2021-12-16 20:07:50 +08:00
# CFLAGS for verilator generated Makefiles. Without -std=c++11 it complains for `auto` variables
CFLAGS += "-std=c++11"
# Optimization for better performance; alternative is nothing for slower runtime (faster compiles)
# -O2 for faster runtime (slower compiles), or -O for balance.
VERILATOR_MAKE_FLAGS = OPT_FAST="-Os"
# Targets
all: clean verilator
clean:
rm -rf build obj_dir
2022-01-19 17:57:37 +08:00
swerv_define :
BUILD_PATH=${BUILD_DIR} PERLLIB=${RV_SOC} ${RV_SOC}/swerv.config -target=default_ahb -set iccm_enable
2021-12-16 20:07:50 +08:00
##################### Verilog Builds #####################################
2022-01-19 17:57:37 +08:00
verilator-build: swerv_define
2021-12-16 20:07:50 +08:00
echo '`undef ASSERT_ON' >> ${BUILD_DIR}/common_defines.vh
2022-01-19 17:57:37 +08:00
verilator --cc -CFLAGS ${CFLAGS} \
2022-01-19 20:32:39 +08:00
$(BUILD_DIR)/common_defines.vh \
-I${BUILD_DIR} \
2021-12-16 20:07:50 +08:00
-Wno-UNOPTFLAT \
2022-01-19 20:32:39 +08:00
-F ${RV_SOC}/soc.mk \
2022-01-19 17:57:37 +08:00
$(RV_SOC)/soc_top.sv \
2022-01-17 19:53:50 +08:00
--top-module soc_top -exe test_soc_top.cpp --autoflush $(VERILATOR_DEBUG)
2022-01-17 20:18:33 +08:00
cp ${DEMODIR}/test_soc_top.cpp obj_dir
2022-01-17 19:53:50 +08:00
$(MAKE) -j -C obj_dir/ -f Vsoc_top.mk $(VERILATOR_MAKE_FLAGS)
2021-12-16 20:07:50 +08:00
##################### Simulation Runs #####################################
verilator: program.hex verilator-build
2022-01-17 19:53:50 +08:00
cd build && ../obj_dir/Vsoc_top ${DEBUG_PLUS}
2021-12-16 20:07:50 +08:00
2022-01-19 17:57:37 +08:00
##################### Test hex Build #####################################
2021-12-16 20:07:50 +08:00
2022-01-20 11:44:59 +08:00
program.hex: $(TEST).out
2022-01-04 20:39:14 +08:00
@echo Building $(TEST)
$(GCC_PREFIX)-objcopy -O verilog $(BUILD_DIR)/$(TEST).out $(BUILD_DIR)/program.hex
$(GCC_PREFIX)-objdump -S $(BUILD_DIR)/$(TEST).out > $(BUILD_DIR)/$(TEST).dis
2021-12-16 20:07:50 +08:00
2022-01-20 11:44:59 +08:00
build: $(TEST).out
2022-01-04 20:39:14 +08:00
@echo Completed building $(TEST)
2022-01-19 17:57:37 +08:00
%.out : %.c swerv_define
2022-01-04 20:39:14 +08:00
$(LLVMINSTALL)/bin/clang --target=riscv32 -march=rv32gc $*.c -S -o $(BUILD_DIR)/$*.s -mno-relax
2021-12-17 21:29:59 +08:00
$(LLVMINSTALL)/bin/clang --target=riscv32 -march=rv32gc $*.c -c -o $(BUILD_DIR)/$*.o -mno-relax
2022-01-04 20:39:14 +08:00
$(LLVMINSTALL)/bin/ld.lld $(BUILD_DIR)/$*.o -Map=$(BUILD_DIR)/$(TEST).map -T$(LINK) -o $(BUILD_DIR)/$*.out
@echo Completed building $(TEST)
2021-12-16 20:07:50 +08:00
help:
@echo Possible targets: verilator help clean all verilator-build program.hex
2022-01-27 16:42:31 +08:00
.PHONY: help clean verilator