fpga-pynq/common/Makefrag

79 lines
2.7 KiB
Plaintext

# This makefrag is sourced by each board's subdirectory
base_dir = $(abspath ..)
ifneq ($(BOARD_MODEL),)
insert_board = s/\# REPLACE FOR OFFICIAL BOARD NAME/set_property "board" "$(BOARD_MODEL)"/g
endif
verilog_srcs = \
src/verilog/clocking.vh \
src/verilog/rocketchip_wrapper.v \
src/verilog/Top.DefaultFPGAConfig.v \
default: project
# Specialize sources for board
src/verilog/rocketchip_wrapper.v: $(base_dir)/common/rocketchip_wrapper.v
cp $(base_dir)/common/rocketchip_wrapper.v src/verilog/
src/tcl/$(BOARD)_rocketchip.tcl: $(base_dir)/common/zynq_rocketchip.tcl
sed 's/BOARD_NAME_HERE/$(BOARD)/g;s/PART_NUMBER_HERE/$(PART)/g;$(insert_board)' $(base_dir)/common/zynq_rocketchip.tcl > src/tcl/$(BOARD)_rocketchip.tcl
src/tcl/make_bitstream.tcl: $(base_dir)/common/make_bitstream.tcl
sed 's/BOARD_NAME_HERE/$(BOARD)/g' $(base_dir)/common/make_bitstream.tcl > src/tcl/make_bitstream.tcl
# Project generation
$(BOARD)_rocketchip/$(BOARD)_rocketchip.xpr: src/verilog/rocketchip_wrapper.v src/tcl/$(BOARD)_rocketchip.tcl
vivado -mode tcl -source src/tcl/$(BOARD)_rocketchip.tcl
$(BOARD)_rocketchip/$(BOARD)_rocketchip.runs/impl_1/rocketchip_wrapper.bit: $(BOARD)_rocketchip/$(BOARD)_rocketchip.xpr src/tcl/make_bitstream.tcl $(verilog_srcs) src/constrs/base.xdc
vivado -mode tcl -source src/tcl/make_bitstream.tcl
project: $(BOARD)_rocketchip/$(BOARD)_rocketchip.xpr
vivado: $(BOARD)_rocketchip/$(BOARD)_rocketchip.xpr
vivado $(BOARD)_rocketchip/$(BOARD)_rocketchip.xpr &
bitstream: $(BOARD)_rocketchip/$(BOARD)_rocketchip.runs/impl_1/rocketchip_wrapper.bit
# Handle images and git submodule for prebuilt modules
fpga-images-$(BOARD)/boot.bif:
git submodule update --init --depth=1 fpga-images-$(BOARD)
fpga-images-$(BOARD)/boot.bin: fpga-images-$(BOARD)/boot.bif $(BOARD)_rocketchip/$(BOARD)_rocketchip.runs/impl_1/rocketchip_wrapper.bit
cd fpga-images-$(BOARD); bootgen -image boot.bif -w -o boot.bin
fetch-images: fpga-images-$(BOARD)/boot.bif
load-sd: fpga-images-$(BOARD)/boot.bin
$(base_dir)/common/load_card.sh $(SD)
ramdisk-open: fpga-images-$(BOARD)/boot.bif
mkdir ramdisk
dd if=fpga-images-$(BOARD)/uramdisk.image.gz bs=64 skip=1 | \
gunzip -c | sudo sh -c 'cd ramdisk/ && cpio -i'
ramdisk-close:
@if [ ! -d "ramdisk" ]; then \
echo "No ramdisk to close (use make ramdisk-open first)"; \
exit 1; \
fi
sh -c 'cd ramdisk/ && sudo find . | sudo cpio -H newc -o' | gzip -9 > uramdisk.cpio.gz
mkimage -A arm -O linux -T ramdisk -d uramdisk.cpio.gz fpga-images-$(BOARD)/uramdisk.image.gz
rm uramdisk.cpio.gz
@echo "Don't forget to remove ramdisk before opening it again (sudo rm -rf ramdisk)"
clean:
rm -f *.log *.jou
.PHONY: project vivado bitstream fetch-images load-sd clean ramdisk-open ramdisk-close