|  | PROJ = example | 
|  |  | 
|  | PIN_DEF = icebreaker.pcf | 
|  | DEVICE = up5k | 
|  |  | 
|  | all: $(PROJ).rpt $(PROJ).bin | 
|  |  | 
|  | %.blif: %.v | 
|  | yosys -p 'synth_ice40 -top top -blif $@' $< | 
|  |  | 
|  | %.asc: $(PIN_DEF) %.blif | 
|  | arachne-pnr -d $(subst up,,$(subst hx,,$(subst lp,,$(DEVICE)))) -o $@ -p $^ | 
|  |  | 
|  | %.bin: %.asc | 
|  | icepack $< $@ | 
|  |  | 
|  | %.rpt: %.asc | 
|  | icetime -d $(DEVICE) -mtr $@ $< | 
|  |  | 
|  | %_tb: %_tb.v %.v | 
|  | iverilog -o $@ $^ | 
|  |  | 
|  | %_tb.vcd: %_tb | 
|  | vvp -N $< +vcd=$@ | 
|  |  | 
|  | %_syn.v: %.blif | 
|  | yosys -p 'read_blif -wideports $^; write_verilog $@' | 
|  |  | 
|  | %_syntb: %_tb.v %_syn.v | 
|  | iverilog -o $@ $^ `yosys-config --datdir/ice40/cells_sim.v` | 
|  |  | 
|  | %_syntb.vcd: %_syntb | 
|  | vvp -N $< +vcd=$@ | 
|  |  | 
|  | prog: $(PROJ).bin | 
|  | iceprog $< | 
|  |  | 
|  | sudo-prog: $(PROJ).bin | 
|  | @echo 'Executing prog as root!!!' | 
|  | sudo iceprog $< | 
|  |  | 
|  | clean: | 
|  | rm -f $(PROJ).blif $(PROJ).asc $(PROJ).rpt $(PROJ).bin | 
|  |  | 
|  | .SECONDARY: | 
|  | .PHONY: all prog clean |