-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
69 lines (52 loc) · 2.16 KB
/
Makefile
File metadata and controls
69 lines (52 loc) · 2.16 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
PROJ=mcs6530
BUILD_DIR=build
DRAW_DIR=draw
SRC_DIR=src
SRCS=top.v mcs6530.v ram.v rom.v io.v timer.v
SEED=1337
DEVICE=up5k
PACKAGE=sg48
BOARD=redip-rriot
MCS6530_002 ?= 1
MCS6530_003 ?= 0
ifeq "$(MCS6530_003)" "1"
FLG = -DMCS6530_003
ARTIFACT = $(BUILD_DIR)/mcs6530_003.bin
else ifeq "$(MCS6530_002)" "1"
FLG = -DMCS6530_002
ARTIFACT = $(BUILD_DIR)/mcs6530_002.bin
endif
all: ${BUILD_DIR}/${PROJ}.bin
@mv ${BUILD_DIR}/${PROJ}.bin $(ARTIFACT)
$(BUILD_DIR)/$(PROJ).json: $(addprefix $(SRC_DIR)/, $(SRCS))
@mkdir -p $(@D)
yosys -f verilog -l $(BUILD_DIR)/$(PROJ).yslog -p 'read_verilog -sv $(FLG) $^; synth_ice40 -json $@'
$(BUILD_DIR)/$(PROJ).asc: $(BUILD_DIR)/$(PROJ).json $(BOARD).pcf
@mkdir -p $(@D)
nextpnr-ice40 -l $(BUILD_DIR)/$(PROJ).nplog --$(DEVICE) --package $(PACKAGE) --asc $@ --pcf $(BOARD).pcf --seed $(SEED) --json $<
$(BUILD_DIR)/$(PROJ).bin: $(BUILD_DIR)/$(PROJ).asc
@mkdir -p $(@D)
icepack $< $@
$(BUILD_DIR)/$(PROJ).rpt: $(BUILD_DIR)/$(PROJ).asc
@mkdir -p $(@D)
$(DRAW_DIR)/%.svg: $(SRC_DIR)/%.v
@mkdir -p $(@D)
yosys -p 'read_verilog -sv $(FLG) $<; show -prefix $(addprefix $(DRAW_DIR)/,$*) -format svg $*'
obj_dir/Vverilator_top: $(addprefix $(SRC_DIR)/, $(SRCS)) sim/verilator_top.v sim/verilator_driver.cpp
verilator -cc --top-module verilator_top sim/verilator_top.v $(FLG) $(addprefix $(SRC_DIR)/, $(SRCS)) -I./src -exe sim/verilator_driver.cpp --trace -Wall
make -C obj_dir -f Vverilator_top.mk
sim: obj_dir/Vverilator_top
lint:
verible-verilog-lint $(addprefix $(SRC_DIR)/, $(SRCS)) $(FLG) sim/verilator_top.v --rules +explicit-parameter-storage-type=exempt_type:string
format:
verible-verilog-format $(addprefix $(SRC_DIR)/, $(SRCS)) sim/verilator_top.v --inplace
draw: $(addprefix $(DRAW_DIR)/,$(subst .v,.svg, $(SRCS)))
clean:
rm -rf $(BUILD_DIR)
rm -rf obj_dir
rm -rf $(DRAW_DIR)
# This invalidates any previous build and rebuilds everything every time
# Needed because otherwise `make MCS6530_003=1 && make MCS6530_002=1`
# would result in two copies of 003 being created, one of which would have the 002 name
# definitely not what we want
.PHONY: all clean ${BUILD_DIR}/${PROJ}.bin ${BUILD_DIR}/${PROJ}.asc ${BUILD_DIR}/${PROJ}.json