-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
93 lines (59 loc) · 2.07 KB
/
Makefile
File metadata and controls
93 lines (59 loc) · 2.07 KB
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
.PHONY: wavesim
VERSION = GP
CONSTR = $($(VERSION)_HOME)/constr
TOP_MODULE = top
TOP_MODULE_FILE = $($(VERSION)_HOME)/vfile/$(TOP_MODULE).v
VFILE += $(shell find $($(VERSION)_HOME)/vfile -type f -name "*.v")
SEARCH_PATH = $($(VERSION)_HOME)/vfile
INCLUDES = $(foreach dir, $(SEARCH_PATH), -I$(dir))
BOARDSIM_FILE = $($(VERSION)_HOME)/boardsim_file
WAVESIM_FILE = $($(VERSION)_HOME)/wavesim_file
VERILATOR_FLAGS += -MMD --build -cc -O3 --x-assign fast \
--x-initial fast --noassert
CFLAGS += -I$($(VERSION)_HOME)/wavesim_file
CFLAGS_BD += -I$(NVBOARD_HOME)/usr/include
LIBS += /lib/x86_64-linux-gnu/libreadline.so\
/lib/x86_64-linux-gnu/libSDL2.so\
/lib/x86_64-linux-gnu/libSDL2_image.so\
/lib/x86_64-linux-gnu/libSDL2_ttf.so\
$(NVBOARD_HOME)/build/nvboard.a
SRCS += $(shell find $(WAVESIM_FILE)/register -type f -name "*.cpp")\
$(shell find $(WAVESIM_FILE)/engine -type f -name "*.cpp")\
$(shell find $(WAVESIM_FILE)/sdb -type f -name "*.cpp")\
$(shell find $(WAVESIM_FILE)/memory -type f -name "*.cpp")\
$(WAVESIM_FILE)/wavesim.cpp
#需要在./software/src下存在相应文件
TEST ?= empty
BIN = ./bin/$(TEST).bin
ISWAVE = 0
include $($(VERSION)_HOME)/config/config.mk
TIMING = --timescale "1ns/1ns" --no-timing
# to convert .v/.sv files into .c files
convert:
@verilator --autoflush \
--top-module $(TOP_MODULE) \
-cc $(TOP_MODULE_FILE) \
$(VFILE) \
$(INCLUDES) \
$(TIMING)
wavesim:
@verilator --autoflush --trace \
--top-module $(TOP_MODULE) \
-cc $(TOP_MODULE_FILE) $(VFILE) $(INCLUDES) $(TIMING) \
--exe $(SRCS) -CFLAGS $(CFLAGS) -CFLAGS $(CFLAGS_BD) \
-D $(LIBS) -LDFLAGS -lSDL2 -LDFLAGS -lSDL2_image -LDFLAGS -lSDL2_ttf
@make -C obj_dir -f V$(TOP_MODULE).mk V$(TOP_MODULE)
@cp obj_dir/V$(TOP_MODULE) $(WAVESIM_FILE)/$(TOP_MODULE)_wave
#BIN传给了main函数
run:
@$(MAKE) -C ./software all TEST=$(TEST)
@$(WAVESIM_FILE)/$(TOP_MODULE)_wave $(BIN)
wave:
@$(WAVESIM_FILE)/$(TOP_MODULE)_wave $(BIN)
ifeq ($(ISWAVE), 1)
@gtkwave $(WAVESIM_FILE)/wave.vcd
endif
clean:
rm -f ./obj_dir/*
rm -f ./bin/*
rm -rf ./software/build/*