79 lines
2.7 KiB
Plaintext
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
|