# 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 PART?=${XRAY_PART} VIVADO_PART?=$(PART) BIT2FASM_ARGS= --part "$(XRAY_DIR)/database/$(XRAY_DATABASE)/$(PART)" --verbose DESIGN_FILES=$(wildcard design*.v) CSV_FILES=$(subst .v,.csv,$(DESIGN_FILES)) FASM_FILES=$(subst .v,.fasm,$(DESIGN_FILES)) .PHONY: all clean designs analysis .PRECIOUS: %.bit %.fasm %.csv all: analysis clean: @rm -rf design_*.v @rm -rf design_*.tcl @rm -rf design_*.json @rm -rf design_*.csv @rm -rf design_*.fasm @rm -rf design_*.bit @rm -rf design_*.dcp @rm -rf designs.ok @rm -rf *.log @rm -rf *.jou @rm -rf *.xml @for f in build-*; \ do \ rm -rf $$f; \ done @rm -rf .Xil @rm -rf snippets @rm -rf features.csv @rm -rf results.json @rm -rf unknown_bits.jl @rm -rf iobs-$(PART).csv iobs-$(PART).csv: ../dump_iobs.tcl env PART=$(PART) $(XRAY_VIVADO) -mode batch -source ../dump_iobs.tcl -nojournal -log dump_iobs.log designs.ok: iobs-$(PART).csv generate.py env PART=$(PART) python3 ./generate.py touch designs.ok designs: designs.ok %.bit: %.v designs.ok ../syn+par.tcl mkdir -p build-$(basename $@) cd build-$(basename $@) && env PROJECT_NAME=$(basename $@) PART=${PART} $(XRAY_VIVADO) -mode batch -source ../../syn+par.tcl -nojournal -log ../$@.log rm -rf *.backup.log %.fasm: %.bit $(XRAY_BIT2FASM) $(BIT2FASM_ARGS) $< > $@ @sort -u -o $@ $@ %.csv: %.fasm python3 ./analyze.py --fasm $< --design $(basename $@).json -o $@ analysis: features.csv unknown_bits.jl features.csv: $(CSV_FILES) designs.ok @head -n 1 $(word 1,$(CSV_FILES)) >features.csv @rm -rf features.csv.tmp @for f in $(CSV_FILES); \ do \ tail -n +2 $$f >>features.csv.tmp; \ done @sort features.csv.tmp >>features.csv @rm -rf features.csv.tmp unknown_bits.jl: $(FASM_FILES) designs.ok @cat $(FASM_FILES) | grep unknown_bit | cut -d: -f 2 | sort -u >unknown_bits.jl snippets: features.csv mkdir -p snippets cd snippets && python3 ../snippets.py ../$<