# blinky for the virtual Gowin GW1NZ-1-trim10-s2 (the chip emulated on the Arty): yosys -> nextpnr -> gowin_pack
TOOLS  ?= $(HOME)/opt/gowin-tools
OUT    ?= out
FAMILY ?= GW1NZ-1-trim10-s2
DEVICE ?= GW1NZ-LV1QN48C6/I5
CST    ?= ../servant/servant_crop.cst
all: $(OUT)/blinky.fs
$(OUT)/blinky.json: blinky.v
	@mkdir -p $(OUT)
	$(TOOLS)/bin/yosys -q -l $(OUT)/synth.log -p "read_verilog blinky.v; synth_gowin -nolutram -top blinky -json $@"
$(OUT)/pnr.json: $(OUT)/blinky.json $(CST)
	LD_LIBRARY_PATH=$(TOOLS)/lib $(TOOLS)/bin/nextpnr-himbaechel --json $< --write $@ --device $(DEVICE) \
	  --vopt family=$(FAMILY) --vopt cst=$(CST) --freq 27 > $(OUT)/pnr.log 2>&1 || (tail -5 $(OUT)/pnr.log; false)
$(OUT)/blinky.fs: $(OUT)/pnr.json
	$(TOOLS)/venv/bin/gowin_pack -d $(FAMILY) -o $@ $<
	grep -E "LUT4:|ALU:|DFF:|Max freq" $(OUT)/pnr.log | tail -4
clean:
	rm -rf $(OUT)
.PHONY: all clean
