nextpnr-ice40.mk (1933B)
1 ## Copyright 2018 Brian Swetland <swetland@frotz.net> 2 ## 3 ## Licensed under the Apache License, Version 2.0 4 ## http://www.apache.org/licenses/LICENSE-2.0 5 6 PROJECT_OBJDIR := out/-nextpnr-/$(PROJECT_NAME) 7 8 PROJECT_BIN := out/$(PROJECT_NAME).bin 9 PROJECT_ASC := $(PROJECT_OBJDIR)/$(PROJECT_NAME).asc 10 PROJECT_LINT := $(PROJECT_OBJDIR)/$(PROJECT_NAME).lint 11 PROJECT_JSON := $(PROJECT_OBJDIR)/$(PROJECT_NAME).json 12 PROJECT_YS := $(PROJECT_OBJDIR)/$(PROJECT_NAME).ys 13 14 PROJECT_VLG_SRCS := $(filter %.v %.sv,$(PROJECT_SRCS)) 15 PROJECT_PCF_SRCS := $(filter %.pcf,$(PROJECT_SRCS)) 16 17 $(PROJECT_YS): _SRCS := $(PROJECT_VLG_SRCS) 18 $(PROJECT_YS): _JSON := $(PROJECT_JSON) 19 $(PROJECT_YS): $(PROJECT_SRCS) $(PROJECT_DEF) build/nextpnr-ice40.mk 20 @mkdir -p $(dir $@) 21 @echo GENERATING: $@ 22 @echo verilog_defines -DHEX_PATHS -DYOSYS > $@ 23 @for src in $(_SRCS); do echo read_verilog -sv $$src; done >> $@ 24 @echo synth_ice40 -top top -json $(_JSON) >> $@ 25 26 $(PROJECT_LINT): _SRCS := $(PROJECT_VLG_SRCS) 27 $(PROJECT_LINT): $(PROJECT_SRCS) 28 @mkdir -p $(dir $@) 29 @echo LINTING: $@ 30 @$(VERILATOR) --top-module top --lint-only $(_SRCS) 31 @touch $@ 32 33 $(PROJECT_JSON): _LOG := $(PROJECT_OBJDIR)/$(PROJECT_NAME).yosys.log 34 $(PROJECT_JSON): $(PROJECT_YS) $(PROJECT_LINT) 35 @mkdir -p $(dir $@) 36 @echo SYNTHESIZING: $@ 37 @$(YOSYS) -s $< 2>&1 | tee $(_LOG) 38 39 $(PROJECT_ASC): _OPTS := $(PROJECT_NEXTPNR_OPTS) 40 $(PROJECT_ASC): _PCF := $(foreach pcf,$(PROJECT_PCF_SRCS),--pcf $(pcf)) 41 $(PROJECT_ASC): _LOG := $(PROJECT_OBJDIR)/$(PROJECT_NAME).nextpnr.log 42 $(PROJECT_ASC): $(PROJECT_JSON) $(PROJECT_PCF_SRCS) 43 @mkdir -p $(dir $@) 44 @echo PLACING-AND-ROUTING: $@ 45 @$(NEXTPNR_ICE40) --asc $@ --json $< $(_PCF) $(_OPTS) 2>&1 | tee $(_LOG) 46 47 $(PROJECT_BIN): $(PROJECT_ASC) 48 @mkdir -p $(dir $@) 49 @echo PACKING: $@ 50 @$(ICEPACK) $< $@ 51 52 $(PROJECT_NAME): $(PROJECT_BIN) 53 54 ALL_TARGETS += $(PROJECT_NAME) 55 ALL_BUILDS += $(PROJECT_NAME) 56 57 TARGET_$(PROJECT_NAME)_DESC := build ice40 bitfile: $(PROJECT_BIN) 58