diff options
author | Flavian Kaufmann <flavian@flaviankaufmann.ch> | 2024-04-27 13:30:34 +0200 |
---|---|---|
committer | Flavian Kaufmann <flavian@flaviankaufmann.ch> | 2024-04-27 13:30:34 +0200 |
commit | e69f80a4e6fb0a52f25d323d25187be0f328edf7 (patch) | |
tree | 3fde80ea4a68849667e72c87c96d769899491b46 /Makefile | |
download | riscv_cpu-e69f80a4e6fb0a52f25d323d25187be0f328edf7.tar.gz riscv_cpu-e69f80a4e6fb0a52f25d323d25187be0f328edf7.zip |
initial commit
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 56 |
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 |