icicle/Makefile

79 lines
1.7 KiB
Makefile
Raw Normal View History

2017-11-30 22:30:49 +00:00
QUIET = -q
2017-12-06 08:26:00 +00:00
PLL = pll.sv
SRC = $(sort $(wildcard *.sv) $(PLL))
2017-11-30 22:30:49 +00:00
TOP = top
2017-12-10 14:10:33 +00:00
SV = $(TOP).sv
2017-11-30 22:30:49 +00:00
YS = $(TOP).ys
YS_ICE40 = `yosys-config --datdir/ice40/cells_sim.v`
2017-11-30 22:30:49 +00:00
BLIF = $(TOP).blif
ASC_SYN = $(TOP)_syn.asc
2017-11-30 22:30:49 +00:00
ASC = $(TOP).asc
BIN = $(TOP).bin
TIME_RPT = $(TOP).rpt
STAT = $(TOP).stat
2017-11-30 22:30:49 +00:00
SPEED = hx
DEVICE = 8k
PACKAGE = ct256
PCF = ice40hx8k-b-evn.pcf
FREQ_OSC = 12
2017-12-06 08:26:00 +00:00
FREQ_PLL = 36
TARGET = riscv64-unknown-elf
AS = $(TARGET)-as
ASFLAGS = -march=rv32i -mabi=ilp32
2017-12-15 20:08:55 +00:00
LD = $(TARGET)-ld
LDFLAGS = -Tprogmem.lds -melf32lriscv
CC = $(TARGET)-gcc
CFLAGS = -march=rv32i -mabi=ilp32 -Wall -Wextra -pedantic
OBJCOPY = $(TARGET)-objcopy
2017-11-30 22:30:49 +00:00
.PHONY: all clean syntax time stat flash
2017-11-30 22:30:49 +00:00
2017-12-10 14:10:51 +00:00
all: $(BIN)
2017-11-30 22:30:49 +00:00
clean:
2017-12-15 20:08:55 +00:00
$(RM) $(BLIF) $(ASC_SYN) $(ASC) $(BIN) $(PLL) progmem_syn.hex progmem.hex progmem.o start.o progmem
2017-11-30 22:30:49 +00:00
2017-12-15 20:08:55 +00:00
progmem.hex: progmem
$(OBJCOPY) -O srec $< /dev/stdout \
| srec_cat - -byte-swap 4 -output - -binary \
| xxd -p -c 4 > $@
2017-12-15 20:08:55 +00:00
progmem: progmem.o start.o progmem.lds
$(LD) $(LDFLAGS) -o $@ progmem.o start.o
progmem_syn.hex:
icebram -g 32 256 > $@
2017-12-06 08:26:00 +00:00
$(PLL):
icepll $(QUIET) -i $(FREQ_OSC) -o $(FREQ_PLL) -m -f $@
$(BLIF): $(YS) $(SRC) progmem_syn.hex
2017-11-30 22:30:49 +00:00
yosys $(QUIET) -s $<
syntax: $(SRC) progmem_syn.hex
iverilog -Wall -t null -g2012 $(YS_ICE40) $(SV)
2017-12-09 21:33:51 +00:00
$(ASC_SYN): $(BLIF) $(PCF)
2017-11-30 22:30:49 +00:00
arachne-pnr $(QUIET) -d $(DEVICE) -P $(PACKAGE) -o $@ -p $(PCF) $<
$(TIME_RPT): $(ASC_SYN) $(PCF)
icetime -t -m -d $(SPEED)$(DEVICE) -P $(PACKAGE) -p $(PCF) -c $(FREQ_PLL) -r $@ $<
$(ASC): $(ASC_SYN) progmem_syn.hex progmem.hex
icebram progmem_syn.hex progmem.hex < $< > $@
$(BIN): $(ASC)
2017-11-30 22:30:49 +00:00
icepack $< $@
time: $(TIME_RPT)
cat $<
2017-11-30 22:30:49 +00:00
$(STAT): $(ASC_SYN)
icebox_stat $< > $@
stat: $(STAT)
cat $<
2017-11-30 22:30:49 +00:00
flash: $(BIN) $(TIME_RPT)
2017-11-30 22:30:49 +00:00
iceprog -S $<