93 lines
3.3 KiB
Makefile
93 lines
3.3 KiB
Makefile
#########################################################################################
|
|
# fpga prototype makefile
|
|
#########################################################################################
|
|
|
|
#########################################################################################
|
|
# general path variables
|
|
#########################################################################################
|
|
base_dir=$(abspath ..)
|
|
sim_dir=$(abspath .)
|
|
|
|
# do not generate simulation files
|
|
sim_name := none
|
|
|
|
#########################################################################################
|
|
# include shared variables
|
|
#########################################################################################
|
|
include $(base_dir)/variables.mk
|
|
|
|
# default variables to build the arty example
|
|
SUB_PROJECT := fpga
|
|
SBT_PROJECT := fpga_platforms
|
|
MODEL := VCU118FPGATestHarness
|
|
VLOG_MODEL := VCU118FPGATestHarness
|
|
MODEL_PACKAGE := chipyard.fpga.vcu118
|
|
CONFIG := FakeBringupConfig
|
|
CONFIG_PACKAGE := chipyard.fpga.vcu118
|
|
GENERATOR_PACKAGE := chipyard
|
|
TB := none # unused
|
|
TOP := VCU118Platform
|
|
|
|
# setup the board to use
|
|
BOARD ?= arty
|
|
|
|
.PHONY: default
|
|
default: $(mcs)
|
|
|
|
#########################################################################################
|
|
# misc. directories
|
|
#########################################################################################
|
|
fpga_dir := $(base_dir)/fpga/fpga-shells/xilinx
|
|
fpga_common_script_dir := $(fpga_dir)/common/tcl
|
|
|
|
#########################################################################################
|
|
# import other necessary rules and variables
|
|
#########################################################################################
|
|
include $(base_dir)/common.mk
|
|
|
|
#########################################################################################
|
|
# copy from other directory
|
|
#########################################################################################
|
|
all_vsrcs := \
|
|
$(sim_vsrcs) \
|
|
$(base_dir)/generators/sifive-blocks/vsrc/SRLatch.v \
|
|
$(fpga_dir)/common/vsrc/PowerOnResetFPGAOnly.v
|
|
|
|
#########################################################################################
|
|
# vivado rules
|
|
#########################################################################################
|
|
# combine all sources into single .f
|
|
synth_list_f := $(build_dir)/$(long_name).vsrcs.f
|
|
$(synth_list_f): $(sim_common_files) $(all_vsrcs)
|
|
$(foreach file,$(all_vsrcs),echo "$(file)" >> $@;)
|
|
cat $(sim_common_files) >> $@
|
|
|
|
BIT_FILE := $(build_dir)/obj/$(MODEL).bit
|
|
$(BIT_FILE): $(synth_list_f)
|
|
cd $(build_dir); vivado \
|
|
-nojournal -mode batch \
|
|
-source $(fpga_common_script_dir)/vivado.tcl \
|
|
-tclargs \
|
|
-top-module "$(MODEL)" \
|
|
-F "$(synth_list_f)" \
|
|
-ip-vivado-tcls "$(shell find '$(build_dir)' -name '*.vivado.tcl')" \
|
|
-board "$(BOARD)"
|
|
|
|
.PHONY: bit
|
|
bit: $(BIT_FILE)
|
|
|
|
# Build .mcs
|
|
MCS_FILE := $(build_dir)/obj/$(MODEL).mcs
|
|
$(MCS_FILE): $(BIT_FILE)
|
|
cd $(build_dir); vivado -nojournal -mode batch -source $(fpga_common_script_dir)/write_cfgmem.tcl -tclargs $(BOARD) $@ $<
|
|
|
|
.PHONY: mcs
|
|
mcs: $(MCS_FILE)
|
|
|
|
#########################################################################################
|
|
# general cleanup rules
|
|
#########################################################################################
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf $(gen_dir)
|