PROJ = my_project_name_here
PCF = ice40hx1k-evb.pcf
FLASHROM = /usr/sbin/flashrom

all: sim sint

sim: $(PROJ)_tb.vcd

sint: $(PROJ).bin

%.blif: %.v
	yosys -p 'synth_ice40 -blif $@' $<

%.asc: $(PCF) %.blif
	arachne-pnr -d 1k -o $@ -p $^ -P vq100

%.bin: %.asc
	icepack $< $@

%.img: %.bin
	dd if=/dev/zero bs=2M count=1 | tr '\0' '\377' > $@
	dd if=$< conv=notrunc of=$@

flash: $(PROJ).img
	$(FLASHROM) -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=2M -w $<

%_tb.out: %.v %_tb.v
	iverilog -o $@ $+

%_tb.vcd: %_tb.out
	./$<

showsim: sim
	gtkwave $(PROJ)_tb.vcd $(PROJ)_tb.gtkw &


clean:
	rm -f *.bin *.txt *.blif *.out *.vcd *~ *.img

.PHONY: all clean sint sim flash showsim
