| # Copyright (C) 2017-2020  The Project X-Ray Authors. | 
 | # | 
 | # Use of this source code is governed by a ISC-style | 
 | # license that can be found in the LICENSE file or at | 
 | # https://opensource.org/licenses/ISC | 
 | # | 
 | # SPDX-License-Identifier: ISC | 
 | SYNTH ?= vivado | 
 | YOSYS = $(XRAY_DIR)/third_party/yosys/yosys | 
 | PART = xc7a35tcsg324-1 | 
 | BIT2FASM_ARGS = --part "$(XRAY_DIR)/database/artix7/$(PART)" --verbose | 
 |  | 
 | VERILOG_FILES = $(wildcard *.v) | 
 | FASM_TARGETS = $(VERILOG_FILES:.v=.fasm) | 
 | SEGPRINT_TARGETS = $(VERILOG_FILES:.v=.segprint.log) | 
 |  | 
 | all: $(FASM_TARGETS) $(SEGPRINT_TARGETS) | 
 |  | 
 | clean: | 
 | 	@find . -name "build-par.*" | xargs rm -rf | 
 | 	@find . -name "build-syn.*" | xargs rm -rf | 
 | 	@rm -f *.edif | 
 | 	@rm -f *.bit | 
 | 	@rm -f *.bin | 
 | 	@rm -f *.bits | 
 | 	@rm -f *.fasm | 
 | 	@rm -f *.log | 
 | 	@rm -f *.dcp | 
 |  | 
 | help: | 
 | 	@echo "Usage: make all [SYNTH=<vivado/yosys>]" | 
 |  | 
 | .PHONY: all clean help | 
 |  | 
 | $(YOSYS): | 
 | 	cd $(XRAY_DIR)/third_party/yosys && make config-gcc && make -j$(shell nproc) | 
 |  | 
 | ifeq ($(SYNTH), yosys) | 
 | %.edif: %.v $(YOSYS) | 
 | 	$(YOSYS) -p "read_verilog $< ; synth_xilinx -flatten -nosrl; write_edif -pvector bra -attrprop $@"  -l $@.log | 
 |  | 
 | else ifeq ($(SYNTH), vivado) | 
 | %.edif: %.v $(YOSYS) | 
 | 	mkdir -p build-syn.$(basename $@) | 
 | 	cd build-syn.$(basename $@) && env PROJECT_NAME=$(basename $@) $(XRAY_VIVADO) -mode batch -source ../syn.tcl -nojournal -log ../$@.log | 
 | 	rm -rf *.backup.log | 
 |  | 
 | endif | 
 |  | 
 | %.bit: %.edif par.tcl | 
 | 	mkdir -p build-par.$(basename $@) | 
 | 	cd build-par.$(basename $@) && env PROJECT_NAME=$(basename $@) $(XRAY_VIVADO) -mode batch -source ../par.tcl -nojournal -log ../$@.log | 
 | 	rm -rf *.backup.log | 
 |  | 
 | %.fasm: %.bit | 
 | 	PYTHONPATH="$(XRAY_DIR):$(XRAY_DIR)/utils:$(XRAY_DIR)/third_party/fasm" \ | 
 |     PATH="$(XRAY_DIR)/build/tools:$(PATH)" \ | 
 |     $(XRAY_BIT2FASM) $(BIT2FASM_ARGS) \ | 
 |         $< >$@ \ | 
 |         || (rm -f $@ && exit 1) | 
 |  | 
 | %.unique.fasm: %.fasm | 
 | 	@sort -u $< >$@ | 
 |  | 
 | %.bits: %.bit | 
 | 	$(XRAY_BITREAD) -part_file $(XRAY_DIR)/database/artix7/$(PART).yaml -o $@ -z -y $< | 
 |  | 
 | %.segprint.log: %.bits | 
 | 	$(XRAY_SEGPRINT) -z -D -b $< > $@ |