56 lines
1.5 KiB
Makefile
56 lines
1.5 KiB
Makefile
PROJ=orangecrab_ecp5_ddr3
|
|
EXTRA_VERILOG_FILES= uart_rx.v uart_tx.v clk_wiz_ecppll.v ../../rtl/ddr3_top.v ../../rtl/ddr3_controller.v ../../rtl/ecp5_phy/ddr3_phy_ecp5.v ../../rtl/ecp5_phy/iserdes_soft.v ../../rtl/ecp5_phy/oserdes_soft.v
|
|
# `r0.1` or `r0.2` or `r0.2.1`
|
|
VERSION:=r0.2.1
|
|
# `25F` or `85F`
|
|
DENSITY=85F
|
|
|
|
ifneq (,$(findstring 85,$(DENSITY)))
|
|
NEXTPNR_DENSITY:=--85k
|
|
else
|
|
NEXTPNR_DENSITY:=--25k
|
|
endif
|
|
|
|
# Add Windows and Unix support
|
|
RM = rm -rf
|
|
COPY = cp -a
|
|
PATH_SEP = /
|
|
ifeq ($(OS),Windows_NT)
|
|
# When SHELL=sh.exe and this actually exists, make will silently
|
|
# switch to using that instead of cmd.exe. Unfortunately, there's
|
|
# no way to tell which environment we're running under without either
|
|
# (1) printing out an error message, or (2) finding something that
|
|
# works everywhere.
|
|
# As a result, we force the shell to be cmd.exe, so it works both
|
|
# under cygwin and normal Windows.
|
|
SHELL = cmd.exe
|
|
COPY = copy
|
|
RM = del
|
|
PATH_SEP = \\
|
|
endif
|
|
|
|
|
|
all: ${PROJ}.dfu
|
|
|
|
dfu: ${PROJ}.dfu
|
|
dfu-util --alt 0 -D $<
|
|
|
|
|
|
%.json: %.v
|
|
yosys -p "read_verilog -D LATTICE_ECP5_PHY $< ${EXTRA_VERILOG_FILES} ; synth_ecp5 -json $@ -top ${PROJ}"
|
|
|
|
%_out.config: %.json
|
|
nextpnr-ecp5 --json $< --textcfg $@ $(NEXTPNR_DENSITY) --package CSFBGA285 --lpf ${PROJ}.pcf
|
|
|
|
%.bit: %_out.config
|
|
ecppack --compress --freq 38.8 --input $< --bit $@
|
|
|
|
%.dfu : %.bit
|
|
$(COPY) $< $@
|
|
dfu-suffix -v 1209 -p 5af0 -a $@
|
|
|
|
clean:
|
|
$(RM) -f ${PROJ}.bit ${PROJ}_out.config ${PROJ}.json ${PROJ}.dfu
|
|
|
|
.PHONY: prog clean
|