| # 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 ../$< |