-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
58 lines (44 loc) · 1.74 KB
/
Makefile
File metadata and controls
58 lines (44 loc) · 1.74 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
# leaf project
# VHDL simulator
GHDL = ghdl
GHDLFLAGS = --workdir=$(WORKDIR) --ieee=synopsys
GHDLXOPTS = --ieee-asserts=disable --max-stack-alloc=0
WORKDIR = work
WAVESDIR = waves
CPU_RTL = $(wildcard ./cpu/rtl/*.vhdl)
CPU_TBS = $(wildcard ./cpu/tbs/*.vhdl)
UART_RTL = $(wildcard ./uart/rtl/*.vhdl)
UART_TBS = $(wildcard ./uart/rtl/*.vhdl)
SOC_RTL = $(wildcard ./soc/rtl/*.vhdl)
SOC_TBS = $(wildcard ./soc/tbs/*.vhdl)
SIM_RTL = $(wildcard ./sim/rtl/*.vhdl)
SIM_TBS = $(wildcard ./sim/tbs/*.vhdl)
RTL_SRC = $(CPU_RTL) $(UART_RTL) $(SOC_RTL) $(SIM_RTL)
TBS_SRC = $(CPU_TBS) $(UART_TBS) $(SOC_TBS) $(SIM_TBS)
PROGRAM ?= ./sw/hello_world/hello_world.bin
$(WORKDIR):
mkdir $@
$(WAVESDIR):
mkdir $@
$(WORKDIR)/work-obj93.cf: $(RTL_SRC) $(TBS_SRC) $(WORKDIR)
$(GHDL) -i $(GHDLFLAGS) $(RTL_SRC) $(TBS_SRC)
$(WAVESDIR)/%.ghw: ./**/tbs/%.vhdl $(WORKDIR)/work-obj93.cf $(WAVESDIR)
$(GHDL) -m $(GHDLFLAGS) $*
$(GHDL) -r $(GHDLFLAGS) $* --ieee-asserts=disable --wave=$@
$(WAVESDIR)/leaf_soc_tb.ghw: ./soc/tbs/leaf_soc_tb.vhdl $(WORKDIR)/work-obj93.cf $(WAVESDIR)
$(GHDL) -m $(GHDLFLAGS) leaf_soc_tb
$(GHDL) -r $(GHDLFLAGS) leaf_soc_tb $(GHDLXOPTS) --stop-time=100us -gPROGRAM=$(PROGRAM) --wave=$@
$(WAVESDIR)/leaf_sim.ghw: $(WORKDIR)/work-obj93.cf $(WAVESDIR)
@$(GHDL) -m $(GHDLFLAGS) leaf_sim;
@$(GHDL) -r $(GHDLFLAGS) leaf_sim $(GHDLXOPTS) --stop-time=100us -gPROGRAM=$(PROGRAM) --wave=$@;
.PHONY: leaf_soc_tb
leaf_soc_tb: $(WORKDIR)/work-obj93.cf
$(GHDL) -m $(GHDLFLAGS) leaf_soc_tb
$(GHDL) -r $(GHDLFLAGS) leaf_soc_tb $(GHDLXOPTS) -gPROGRAM=$(PROGRAM)
.PHONY: leaf_sim
leaf_sim: $(WORKDIR)/work-obj93.cf
@$(GHDL) -m $(GHDLFLAGS) leaf_sim;
@$(GHDL) -r $(GHDLFLAGS) leaf_sim $(GHDLXOPTS) -gPROGRAM=$(PROGRAM);
.PHONY: clean
clean:
rm -rf $(WORKDIR) $(WAVESDIR)