sugar-lissajous/Makefile
2021-02-28 18:59:56 +03:00

57 lines
1.3 KiB
Makefile

SOURCES = $(wildcard source/*.sv)
TOP = sugar_lissajous
PCF = icesugar.pcf
FAMILY = up5k
PACKAGE = sg48
FREQ = 30
#DOSVG = --placed-svg place.svg --routed-svg route.svg
# nextpnr --randomize-seed write_verilog $(TOP).v
BUILD_DIR ?= build
TOP_BIN = $(BUILD_DIR)/$(TOP).bin
TOP_ASC = $(BUILD_DIR)/$(TOP).asc
TOP_JSON = $(BUILD_DIR)/$(TOP).json
all: $(TOP_BIN)
# Make bitstream
$(TOP_BIN): $(TOP_ASC)
icepack $(TOP_ASC) $(TOP_BIN)
# Place and rouite
$(TOP_ASC): $(TOP_JSON) $(PCF)
nextpnr-ice40 -q -l $(BUILD_DIR)/nextpnr.log --$(FAMILY) --package $(PACKAGE) \
--freq $(FREQ) --top $(TOP) --pcf $(PCF) --asc $(TOP_ASC) --json $(TOP_JSON) \
$(DOSVG)
# Synthesys
$(TOP_JSON): $(SOURCES)
mkdir -p $(BUILD_DIR)
yosys -q -l $(BUILD_DIR)/yosys.log -p \
"proc; alumacc; share -fast; opt -full; synth_ice40 -top $(TOP) -json $(TOP_JSON) -abc2" \
$(SOURCES)
# Timing analysis
timing: $(TOP_ASC)
icetime -d $(FAMILY) -t -c $(FREQ) -r $(BUILD_DIR)/timing.log $(TOP_ASC)
# Program
prog: $(TOP_BIN)
icesprog -w $(TOP_BIN)
# Clean
clean:
rm -rf $(BUILD_DIR)
# Convert SVG to PNG
png: route.png place.png
route.png: route.svg
inkscape --export-type=png -o route.png -D -d 100 route.svg
place.png: place.svg
inkscape --export-type=png -o place.png -D -d 150 place.svg