-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathMakefile
57 lines (43 loc) · 1.17 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
BOARD ?= icebreaker
PROJ = iua_$(BOARD)_top
PIN_DEF = ../impl/iua_$(BOARD)_pins.pcf
DEVICE = up5k
PACKAGE = sg48
ARACHNE = arachne-pnr
ARACHNE_ARGS =
NEXTPNR = nextpnr-ice40
NEXTPNR_ARGS = --placer sa
ICEPACK = icepack
ICETIME = icetime
ICEPROG = iceprog
ICE40_LIBS=$(shell yosys-config --datdir/ice40/cells_sim.v)
OBJS=\
iua_core.v \
iua_fifo.v \
iua_phy.v \
iua_sysmgr.v \
iua_top.v \
uart_tx.v \
sim_spram.v
TESTBENCHES=\
iua_top_tb
all: $(PROJ).bin $(TESTBENCHES)
%_tb: %_tb.v $(ICE40_LIBS) $(OBJS)
iverilog -Wall -DSIM=1 -o $@ $(ICE40_LIBS) $(OBJS) $<
%.blif %.json: %.v $(OBJS)
yosys -p 'read_verilog $(VERILOG_DEFINES) $< $(OBJS); synth_ice40 -dffe_min_ce_use 4 -relut -top $(PROJ) -blif $*.blif -json $*.json'
%.asc: $(PIN_DEF) %.json
$(NEXTPNR) $(NEXTPNR_ARGS) --$(DEVICE) --package $(PACKAGE) --json $*.json --pcf $(PIN_DEF) --asc $@ --freq 50
%.bin: %.asc
$(ICEPACK) $< $@
%.rpt: %.asc
$(ICETIME) -d $(DEVICE) -mtr $@ $<
prog: $(PROJ).bin
$(ICEPROG) $<
sudo-prog: $(PROJ).bin
@echo 'Executing prog as root!!!'
sudo $(ICEPROG) $<
clean:
rm -f $(PROJ).blif $(PROJ).json $(PROJ).asc $(PROJ).rpt $(PROJ).bin $(TESTBENCHES) *.vcd
.SECONDARY:
.PHONY: all prog clean