-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
56 lines (43 loc) · 1.36 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
HOME_DIR = /home/sdzz/project/XPU-diff
TOPNAME = top
INC_PATH ?= $(HOME_DIR)/include /home/sdzz/boost/ $(HOME_DIR)/app/include
VERILATOR = verilator
VERILATOR_CFLAGS += -Wall --trace -MMD --build -cc \
-I./vsrc \
-O3 --x-assign fast --x-initial fast --noassert
SPIKE = spike
SPIKE_FLAGS = -l --priv=m --isa=rv64im --log-commits --log=log.txt -m128
PYTHON = python3
BUILD_DIR = ./build
OBJ_DIR = $(BUILD_DIR)/obj_dir
BIN = $(BUILD_DIR)/$(TOPNAME)
ELF ?=
DIFF ?= yes
default: $(BIN)
$(shell mkdir -p $(BUILD_DIR))
# project source
VSRCS = $(shell find $(abspath ./vsrc) -name "*.v")
CSRCS = $(shell find $(abspath ./csrc) -name "*.c" -or -name "*.cc" -or -name "*.cpp")
# rules for verilator
INCFLAGS = $(addprefix -I, $(INC_PATH))
CFLAGS += -DTOP_NAME="\"V$(TOPNAME)\"" $(INCFLAGS)
LDFLAGS += -lSDL2
$(BIN): $(VSRCS) $(CSRCS)
$(VERILATOR) $(VERILATOR_CFLAGS) \
--top-module $(TOPNAME) $^ \
$(addprefix -CFLAGS , $(CFLAGS)) \
$(addprefix -LDFLAGS , $(LDFLAGS)) \
--Mdir $(OBJ_DIR) --exe -o $(abspath $(BIN))
all: default
run: $(BIN)
ifeq ($(DIFF),yes)
$(SPIKE) $(SPIKE_FLAGS) $(ELF)
$(PYTHON) genbin.py $(ELF) $(BUILD_DIR)/$(notdir $(ELF)).temp
@$^ $(BUILD_DIR)/$(notdir $(ELF)).temp
else
$(PYTHON) genbin.py $(ELF) $(BUILD_DIR)/$(notdir $(ELF)).temp
@$^ $(BUILD_DIR)/$(notdir $(ELF)).temp
endif
clean:
rm -rf $(BUILD_DIR)
.PHONY: default all clean run