2019-02-01 03:24:33 +01:00
|
|
|
SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
|
|
|
|
|
|
2018-11-07 23:41:01 +01:00
|
|
|
N ?= 1
|
2018-12-10 06:08:49 +01:00
|
|
|
CLB_DBFIXUP ?=
|
2018-12-20 03:23:29 +01:00
|
|
|
# Fuzzer that can accept SLICEL data
|
|
|
|
|
# ie set to N if only for SLICEM
|
2018-12-10 06:08:49 +01:00
|
|
|
SLICEL ?= Y
|
2018-11-07 23:41:01 +01:00
|
|
|
|
2019-01-17 15:35:29 +01:00
|
|
|
# This set of variables are used to store the increment
|
|
|
|
|
# in the number of CLBs in case they are not enough and
|
|
|
|
|
# the generated database is inconsistent
|
|
|
|
|
CLBN ?= 0
|
|
|
|
|
INC ?= 50
|
|
|
|
|
VAR ?= "CLBN=$$(($(CLBN) + $(INC)))"
|
|
|
|
|
ENV_VAR ?= "CLBN=$(CLBN)"
|
2019-01-17 18:33:11 +01:00
|
|
|
ITER ?= 0
|
|
|
|
|
MAX_ITER ?= 10
|
|
|
|
|
FUZDIR = ${PWD}
|
2019-01-17 15:35:29 +01:00
|
|
|
|
2019-02-15 16:16:41 +01:00
|
|
|
SEGMATCH_ARGS ?=-m 2 -M 2
|
|
|
|
|
|
2019-02-01 03:24:33 +01:00
|
|
|
include $(SELF_DIR)/fuzzer.mk
|
2018-11-07 04:09:24 +01:00
|
|
|
|
2018-11-08 04:13:28 +01:00
|
|
|
database: build/segbits_clbx.db
|
|
|
|
|
|
2018-12-10 06:08:49 +01:00
|
|
|
ifeq ($(SLICEL),Y)
|
2018-12-20 03:23:29 +01:00
|
|
|
SEGDATAS=$(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS))
|
2018-12-10 06:08:49 +01:00
|
|
|
else
|
2018-12-20 03:23:29 +01:00
|
|
|
SEGDATAS=$(addsuffix /segdata_clblm_[lr].txt,$(SPECIMENS))
|
2018-12-10 06:08:49 +01:00
|
|
|
endif
|
2018-11-08 04:13:28 +01:00
|
|
|
|
2018-12-20 03:23:29 +01:00
|
|
|
|
|
|
|
|
build/segbits_clbx.rdb: $(SPECIMENS_OK)
|
2019-02-15 16:16:41 +01:00
|
|
|
${XRAY_SEGMATCH} $(SEGMATCH_ARGS) -o build/segbits_clbx.rdb $(SEGDATAS)
|
2018-12-20 03:23:29 +01:00
|
|
|
|
2018-11-08 04:13:28 +01:00
|
|
|
build/segbits_clbx.db: build/segbits_clbx.rdb
|
|
|
|
|
ifeq ($(CLB_DBFIXUP),Y)
|
2018-11-12 23:37:01 +01:00
|
|
|
${XRAY_DBFIXUP} --db-root build --zero-db bits.dbf --seg-fn-in $^ --seg-fn-out $@
|
2018-11-08 04:13:28 +01:00
|
|
|
else
|
|
|
|
|
cp $^ $@
|
|
|
|
|
endif
|
2018-12-20 03:23:29 +01:00
|
|
|
${XRAY_MASKMERGE} build/mask_clbx.db $(SEGDATAS)
|
2018-11-07 04:09:24 +01:00
|
|
|
|
2019-01-17 18:33:11 +01:00
|
|
|
checkdb:
|
|
|
|
|
# If the database presents errors or is incomplete, the fuzzer is rerun.
|
|
|
|
|
# When it reaches the maximum number of iterations it fails.
|
|
|
|
|
@if [ $(ITER) -gt $(MAX_ITER) ]; then \
|
|
|
|
|
echo "Max Iterations reached. Fuzzer unsolvable."; \
|
|
|
|
|
exit 1; \
|
|
|
|
|
fi
|
|
|
|
|
$(MAKE) parsedb || $(MAKE) $(VAR) ITER=$$(($(ITER) + 1)) run
|
|
|
|
|
|
|
|
|
|
parsedb:
|
|
|
|
|
${XRAY_PARSEDB} --strict build/segbits_clbx.db
|
|
|
|
|
|
|
|
|
|
pushdb: checkdb
|
2018-12-10 06:08:49 +01:00
|
|
|
ifeq ($(SLICEL),Y)
|
2018-11-12 19:42:48 +01:00
|
|
|
${XRAY_MERGEDB} clbll_l build/segbits_clbx.db
|
|
|
|
|
${XRAY_MERGEDB} clbll_r build/segbits_clbx.db
|
2018-12-20 03:23:29 +01:00
|
|
|
${XRAY_MERGEDB} mask_clbll_l build/mask_clbx.db
|
|
|
|
|
${XRAY_MERGEDB} mask_clbll_r build/mask_clbx.db
|
2018-12-10 06:08:49 +01:00
|
|
|
endif
|
2018-11-12 19:42:48 +01:00
|
|
|
${XRAY_MERGEDB} clblm_l build/segbits_clbx.db
|
|
|
|
|
${XRAY_MERGEDB} clblm_r build/segbits_clbx.db
|
2018-12-20 03:23:29 +01:00
|
|
|
${XRAY_MERGEDB} mask_clblm_l build/mask_clbx.db
|
|
|
|
|
${XRAY_MERGEDB} mask_clblm_r build/mask_clbx.db
|
2018-11-07 04:09:24 +01:00
|
|
|
|
2019-01-17 18:33:11 +01:00
|
|
|
.PHONY: database pushdb checkdb parsedb
|
2018-11-07 04:09:24 +01:00
|
|
|
|