vivado.mk (1678B)
1 ## Copyright 2020 Brian Swetland <swetland@frotz.net> 2 ## 3 ## Licensed under the Apache License, Version 2.0 4 ## http://www.apache.org/licenses/LICENSE-2.0 5 6 PROJECT_OBJDIR := out/-vivado-/$(PROJECT_NAME) 7 8 PROJECT_BIT := out/$(PROJECT_NAME).bit 9 PROJECT_CFG := $(PROJECT_OBJDIR)/config.tcl 10 PROJECT_VLG_SRCS := $(filter %.v %.sv,$(PROJECT_SRCS)) 11 PROJECT_XDC_SRCS := $(filter %.xdc,$(PROJECT_SRCS)) 12 13 $(PROJECT_CFG): _SV := $(PROJECT_VLG_SRCS) 14 $(PROJECT_CFG): _XDC := $(PROJECT_XDC_SRCS) 15 $(PROJECT_CFG): _DIR := $(PROJECT_OBJDIR) 16 $(PROJECT_CFG): _PART := $(PROJECT_PART) 17 $(PROJECT_CFG): _NAME := $(PROJECT_NAME) 18 $(PROJECT_CFG): _OPTS := -I$(VIVADOPATH)/data/verilog/src/xeclib 19 $(PROJECT_CFG): $(PROJECT_SRCS) build/vivado.mk 20 @echo "LINT (verilator): $(_NAME)" 21 @$(VERILATOR) --top-module top --lint-only $(_OPTS) $(_SV) $(_V) 22 @mkdir -p $(_DIR) 23 @echo "# auto-generated file" > $@ 24 @echo "set PART {$(_PART)}" >> $@ 25 @echo "set BITFILE {../../$(_NAME).bit}" >> $@ 26 @for x in $(_SV) ; do echo "read_verilog -sv {../../../$$x}" ; done >> $@ 27 @for x in $(_XDC) ; do echo "read_xdc {../../../$$x}" ; done >> $@ 28 29 $(PROJECT_BIT): _HEX := $(PROJECT_HEX_SRCS) 30 $(PROJECT_BIT): _DIR := $(PROJECT_OBJDIR) 31 $(PROJECT_BIT): _NAME := $(PROJECT_NAME) 32 $(PROJECT_BIT): $(PROJECT_HEX_SRCS) $(PROJECT_CFG) 33 @echo "SYNTH (vivado): $(_NAME)" 34 @mkdir -p $(_DIR) 35 @rm -f $(_DIR)/log.txt 36 @for hex in $(_HEX) ; do cp $$hex $(_DIR) ; done 37 @(cd $(_DIR) && $(VIVADO) -mode batch -log log.txt -nojournal -source ../../../build/build-bitfile.tcl) 38 39 $(PROJECT_NAME): $(PROJECT_BIT) 40 41 ALL_TARGETS += $(PROJECT_NAME) 42 ALL_BUILDS += $(PROJECT_NAME) 43 44 TARGET_$(PROJECT_NAME)_DESC := build xilinx bitfile: $(PROJECT_BIT) 45