aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorFlavian Kaufmann <flavian@flaviankaufmann.ch>2024-04-27 13:30:34 +0200
committerFlavian Kaufmann <flavian@flaviankaufmann.ch>2024-04-27 13:30:34 +0200
commite69f80a4e6fb0a52f25d323d25187be0f328edf7 (patch)
tree3fde80ea4a68849667e72c87c96d769899491b46 /Makefile
downloadriscv_cpu-e69f80a4e6fb0a52f25d323d25187be0f328edf7.tar.gz
riscv_cpu-e69f80a4e6fb0a52f25d323d25187be0f328edf7.zip
initial commit
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile56
1 files changed, 56 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..8a4049e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,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