######################################################################################### # fpga prototype makefile ######################################################################################### ######################################################################################### # general path variables ######################################################################################### base_dir=$(abspath ..) sim_dir=$(abspath .) # do not generate simulation files sim_name := none ######################################################################################### # include shared variables ######################################################################################### SUB_PROJECT ?= vcu118 ifeq ($(SUB_PROJECT),vcu118) SBT_PROJECT ?= fpga_platforms MODEL ?= VCU118FPGATestHarness VLOG_MODEL ?= VCU118FPGATestHarness MODEL_PACKAGE ?= chipyard.fpga.vcu118 CONFIG ?= RocketVCU118Config CONFIG_PACKAGE ?= chipyard.fpga.vcu118 GENERATOR_PACKAGE ?= chipyard TB ?= none # unused TOP ?= ChipTop BOARD ?= vcu118 FPGA_BRAND ?= xilinx endif ifeq ($(SUB_PROJECT),bringup) SBT_PROJECT ?= fpga_platforms MODEL ?= BringupVCU118FPGATestHarness VLOG_MODEL ?= BringupVCU118FPGATestHarness MODEL_PACKAGE ?= chipyard.fpga.vcu118.bringup CONFIG ?= RocketBringupConfig CONFIG_PACKAGE ?= chipyard.fpga.vcu118.bringup GENERATOR_PACKAGE ?= chipyard TB ?= none # unused TOP ?= ChipTop BOARD ?= vcu118 FPGA_BRAND ?= xilinx endif ifeq ($(SUB_PROJECT),arty) # TODO: Fix with Arty SBT_PROJECT ?= fpga_platforms MODEL ?= ArtyFPGATestHarness VLOG_MODEL ?= ArtyFPGATestHarness MODEL_PACKAGE ?= chipyard.fpga.arty CONFIG ?= TinyRocketArtyConfig CONFIG_PACKAGE ?= chipyard.fpga.arty GENERATOR_PACKAGE ?= chipyard TB ?= none # unused TOP ?= ChipTop BOARD ?= arty FPGA_BRAND ?= xilinx endif include $(base_dir)/variables.mk # default variables to build the arty example # setup the board to use .PHONY: default default: $(mcs) ######################################################################################### # misc. directories ######################################################################################### fpga_dir := $(base_dir)/fpga/fpga-shells/$(FPGA_BRAND) fpga_common_script_dir := $(fpga_dir)/common/tcl ######################################################################################### # setup misc. sim files ######################################################################################### SIM_FILE_REQS += \ $(ROCKETCHIP_RSRCS_DIR)/vsrc/EICG_wrapper.v # copy files but ignore *.h files in *.f (match vcs) $(sim_files): $(SIM_FILE_REQS) | $(build_dir) cp -f $^ $(build_dir) $(foreach file,\ $^,\ $(if $(filter %.h,$(file)),\ ,\ echo "$(addprefix $(build_dir)/, $(notdir $(file)))" >> $@;)) ######################################################################################### # 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: bitstream bitstream: $(BIT_FILE) .PHONY: debug-bitstream debug-bitstream: $(build_dir)/obj/post_synth.dcp cd $(build_dir); vivado \ -nojournal -mode batch \ -source $(sim_dir)/scripts/run_impl_bitstream.tcl \ -tclargs \ $(build_dir)/obj/post_synth.dcp \ $(BOARD) \ $(build_dir)/debug_obj \ $(fpga_common_script_dir) ######################################################################################### # general cleanup rules ######################################################################################### .PHONY: clean clean: rm -rf $(gen_dir)