blob: 4c23c972c5c3cc83d4c7e0e44bac83b9ca4e39ff [file] [log] [blame]
# 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 ../$<