-
Notifications
You must be signed in to change notification settings - Fork 4
/
Makefile
107 lines (84 loc) · 3.39 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
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
###################################################################
# Project Configuration:
#
# Specify the name of the design (project) and the Quartus II
# Settings File (.qsf)
###################################################################
PROJECT = grid
TOP_LEVEL_ENTITY = top_level
ASSIGNMENT_FILES = $(PROJECT).qpf $(PROJECT).qsf
###################################################################
# Part, Family, Boardfile grid
FAMILY = "Cyclone IV E"
PART = EP4CE15F23C8
BOARDFILE = grid.qsf
###################################################################
###################################################################
# Setup your sources here
QSYS = frontier
SRCS = grid.v \
$(QSYS).qsys
###################################################################
# Main Targets
#
# all: build everything
# clean: remove output files and database
# program: program your device with the compiled design
###################################################################
all: smart.log $(PROJECT).qsys.rpt $(PROJECT).asm.rpt $(PROJECT).sta.rpt
qsys: smart.log $(PROJECT).qsys.rpt
synthsis: smart.log $(PROJECT).asm.rpt $(PROJECT).sta.rpt
clean:
rm -rf *.rpt *.chg smart.log *.htm *.eqn *.pin *.sof *.pof db incremental_db output
map: smart.log $(PROJECT).map.rpt
fit: smart.log $(PROJECT).fit.rpt
asm: smart.log $(PROJECT).asm.rpt
sta: smart.log $(PROJECT).sta.rpt
smart: smart.log
###################################################################
# Executable Configuration
###################################################################
MAP_ARGS = --read_settings_files=on $(addprefix --source=,$(SRCS))
FIT_ARGS = --part=$(PART) --read_settings_files=on
ASM_ARGS =
STA_ARGS =
###################################################################
# Target implementations
###################################################################
STAMP = echo done >
$(PROJECT).qsys.rpt: qsys.chg $(SOURCE_FILES)
ip-generate --project-directory=. --output-directory=./$(QSYS)/synthesis/ --file-set=QUARTUS_SYNTH --report-file=sopcinfo:frontier.sopcinfo --report-file=html:frontier.html --report-file=qip:$(QSYS).qip --report-file=cmp:$(QSYS).cmp --system-info=DEVICE_FAMILY=$(FAMILY) --system-info=DEVICE=$(PART) --system-info=DEVICE_SPEEDGRADE=8 --component-file=$(QSYS).qsys
$(PROJECT).map.rpt: map.chg $(SOURCE_FILES)
quartus_map $(MAP_ARGS) $(PROJECT)
$(STAMP) fit.chg
$(PROJECT).fit.rpt: fit.chg $(PROJECT).map.rpt
quartus_fit $(FIT_ARGS) $(PROJECT)
$(STAMP) asm.chg
$(STAMP) sta.chg
$(PROJECT).asm.rpt: asm.chg $(PROJECT).fit.rpt
quartus_asm $(ASM_ARGS) $(PROJECT)
$(PROJECT).sta.rpt: sta.chg $(PROJECT).fit.rpt
quartus_sta $(STA_ARGS) $(PROJECT)
smart.log: $(ASSIGNMENT_FILES)
quartus_sh --determine_smart_action $(PROJECT) > smart.log
###################################################################
# Project initialization
###################################################################
$(ASSIGNMENT_FILES):
quartus_sh --prepare -f $(FAMILY) -t $(TOP_LEVEL_ENTITY) $(PROJECT)
-cat $(BOARDFILE) >> $(PROJECT).qsf
qsys.chg:
$(STAMP) qsys.chg
map.chg:
$(STAMP) map.chg
fit.chg:
$(STAMP) fit.chg
sta.chg:
$(STAMP) sta.chg
asm.chg:
$(STAMP) asm.chg
###################################################################
# Programming the device
###################################################################
program: $(PROJECT).sof
quartus_pgm --no_banner --mode=jtag -o "P;$(PROJECT).sof"