abstractaccelerator/uriscv/tb/makefile

63 lines
1.8 KiB
Makefile

###############################################################################
# Variables: Program ELF
###############################################################################
ELF_FILE ?= test.elf
OBJCOPY ?= /opt/riscv/bin/riscv32-unknown-elf-objcopy
ifeq ($(shell which $(OBJCOPY)),)
${error $(OBJCOPY) missing from PATH}
endif
ifeq ($(shell which iverilog),)
${error iverilog missing from PATH - Icarus Verilog required}
endif
###############################################################################
# Variables: Defaults
###############################################################################
TRACE ?= 1
SRC_V_DIR ?= ../src .
SRC_DIR ?= .
EXE ?= output.out
###############################################################################
# Variables: Verilog
###############################################################################
SRC_V ?= $(foreach src,$(SRC_V_DIR),$(wildcard $(src)/*.v))
VFLAGS += $(patsubst %,-I%,$(SRC_V_DIR))
VFLAGS += -DTRACE=$(TRACE)
VFLAGS += -Dverilog_sim
###############################################################################
# Variables: Lists of objects, source and deps
###############################################################################
BUILD_DIR ?= build/
###############################################################################
# Rules
###############################################################################
all: run
$(BUILD_DIR):
@mkdir -p $@
$(BUILD_DIR)/tcm.bin: $(ELF_FILE) | $(BUILD_DIR)
$(OBJCOPY) $< -O binary $@
$(BUILD_DIR)/$(EXE): $(SRC_V) | $(BUILD_DIR)
@echo "# Compiling verilog"
iverilog $(VFLAGS) -o $@ $(SRC_V)
run: $(BUILD_DIR)/$(EXE) $(BUILD_DIR)/tcm.bin
vvp $(BUILD_DIR)/$(EXE) -vcd
view:
gtkwave waveform.vcd gtksettings.sav
clean:
rm -rf $(BUILD_DIR) *.vcd