aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 8a4049e9d7d40342b434c76e832f90fd3b6f58a2 (plain)
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
PROJ_NAME = riscv_cpu
TOP_MODULE = top

SRC_DIR = src
CONSTRAINTS_DIR = constraints

SOURCES = $(wildcard $(SRC_DIR)/*.v)
CONSTRAINTS = $(CONSTRAINTS_DIR)/tangnano9k.cst

BUILD_DIR = build
BITSTREAM = $(BUILD_DIR)/$(PROJ_NAME).fs

YOSYS = yosys
NEXTPNR = nextpnr-gowin
GOWIN_PACK = gowin_pack
PROGRAMMER = openFPGALoader

FAMILY = GW1N-9C
DEVICE = GW1NR-LV9QN88PC6/I5
BOARD = tangnano9k

all: $(BITSTREAM)

$(BUILD_DIR)/$(PROJ_NAME).json: $(SOURCES)
	@echo "=================================================="
	@echo "Synthesizing"
	@echo "=================================================="
	
	@mkdir -p $(BUILD_DIR)
	$(YOSYS) -p "synth_gowin -top $(TOP_MODULE)" -o $(BUILD_DIR)/$(PROJ_NAME).json $(SOURCES)
	
$(BUILD_DIR)/$(PROJ_NAME)_pnr.json: $(BUILD_DIR)/$(PROJ_NAME).json $(CONSTRAINTS)
	@echo "=================================================="
	@echo "Routing"
	@echo "=================================================="

	$(NEXTPNR) --json $(BUILD_DIR)/$(PROJ_NAME).json --write $(BUILD_DIR)/$(PROJ_NAME)_pnr.json --device $(DEVICE) --family $(FAMILY) --cst $(CONSTRAINTS)

$(BITSTREAM): $(BUILD_DIR)/$(PROJ_NAME)_pnr.json
	@echo "=================================================="
	@echo "Generating Bitstream"
	@echo "=================================================="

	$(GOWIN_PACK) -d $(FAMILY) -o $(BITSTREAM) $(BUILD_DIR)/$(PROJ_NAME)_pnr.json
	
program: $(BITSTREAM)
	$(PROGRAMMER) -b $(BOARD) $(BITSTREAM)

flash: $(BITSTREAM)
	$(PROGRAMMER) -b $(BOARD) -f $(BITSTREAM)


clean:
	rm -rf $(BUILD_DIR)

.PHONY: all program clean