Attempt to parallelize 074 for additional parts.

Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
This commit is contained in:
Keith Rothman 2020-02-18 09:00:34 -08:00
parent 44b79e1e85
commit 9f839a7a08
16 changed files with 284 additions and 281 deletions

View File

@ -38,11 +38,9 @@ echo "========================================"
echo "Running Database build"
echo "----------------------------------------"
(
cd fuzzers
# Output which fuzzers we are going to run
echo "make --dry-run"
make --dry-run
make --dry-run db-${XRAY_SETTINGS}-all
echo "----------------------------------------"
# Run the fuzzers
@ -55,7 +53,7 @@ echo "----------------------------------------"
export MAX_VIVADO_PROCESS=$((CORES/2 < 20 ? CORES/2 : 20))
set -x +e
tmp=`mktemp`
script --return --flush --command "make -j $CORES MAX_VIVADO_PROCESS=$MAX_VIVADO_PROCESS" $tmp
script --return --flush --command "make -j $CORES MAX_VIVADO_PROCESS=$MAX_VIVADO_PROCESS db-${XRAY_SETTINGS}-all" $tmp
DATABASE_RET=$?
set +x -e
@ -86,26 +84,6 @@ echo "----------------------------------------"
)
echo "----------------------------------------"
# Generate extra harness files (additional part yaml's, harness).
set +e
# Attempt to generate extra harnesses here, but don't check until after diff reporting.
make db-extras-${XRAY_SETTINGS}-harness
EXTRAS_HARNESS_RET=$?
set -e
# Generate extra parts file (tilegrid, tileconn, part yaml, part json and package_pin)
set +e
(
export MAX_VIVADO_PROCESS=$((CORES/2 < 20 ? CORES/2 : 20))
# Use all the memory available on the system for generating the final
# grid and tileconn.
export MAX_GRID_CPU=${MAX_CPU_PER_GRID}
make db-extras-${XRAY_SETTINGS}-parts -j $CORES
)
EXTRAS_PARTS_RET=$?
set -e
# Format the database
make db-format-${XRAY_SETTINGS}
# Update the database/Info.md file

2
.gitignore vendored
View File

@ -1,11 +1,13 @@
env
build
build_*
logs
database
.Xil
**/specimen_*
**/output
run.ok
run.*.ok
__pycache__
*.pyc
*.swp

View File

@ -114,6 +114,9 @@ define database
# $(1) - Database name
db-$(1):
+source settings/$(1).sh && $$(MAKE) -C fuzzers
db-check-$(1):
@echo
@echo "Checking $(1) database"
@ -127,9 +130,15 @@ db-format-$(1):
@$(IN_ENV) cd database/$(1); python3 ../../utils/sort_db.py
@if [ -e database/Info.md ]; then $(IN_ENV) ./utils/info_md.py --keep; fi
.PHONY: db-check-$(1) db-format-$(1)
.PHONY: db-$(1) db-check-$(1) db-format-$(1) db-extras-$(1) db-extras-$(1)-parts db-extras-$(1)-harness
.NOTPARALLEL: db-check-$(1) db-format-$(1)
db-extras-$(1): db-extras-$(1)-parts db-extras-$(1)-harness
db-$(1)-all: db-$(1) db-extras-$(1)-parts
# Build harnesses after database is complete
$$(MAKE) db-extras-$(1)-harness
db-check: db-check-$(1)
db-format: db-format-$(1)
@ -137,8 +146,6 @@ endef
$(foreach DB,$(DATABASES),$(eval $(call database,$(DB))))
.PHONY: db-extras-artix7 db-extras-kintex7 db-extras-zynq7
# Targets related to Project X-Ray parts
# --------------------------------------
@ -159,9 +166,12 @@ endef
$(foreach PART,$(XRAY_PARTS),$(eval $(call multiple-parts,$(PART))))
db-extras-artix7-parts: $(addprefix db-part-only-,$(ARTIX_PARTS))
db-extras-artix7-harness:
+XRAY_PIN_00=J13 XRAY_PIN_01=J14 XRAY_PIN_02=K15 XRAY_PIN_03=K16 \
XRAY_PART=xc7a35tftg256-1 XRAY_EQUIV_PART=xc7a50tfgg484-1 $(MAKE) -C fuzzers roi_only
+source minitests/roi_harness/basys3-swbut.sh && $(MAKE) -C fuzzers roi_only
+source minitests/roi_harness/arty-uart.sh && $(MAKE) -C fuzzers roi_only
+source minitests/roi_harness/basys3-swbut.sh && \

View File

@ -55,17 +55,19 @@ BLOCK_RAM_EXTRA_DB_FILES=\
DB_FILES=$(sort $(addsuffix .origin_info.db,$(DB_SIMPLE)) $(addsuffix .db,$(DB_SIMPLE)) $(BLOCK_RAM_EXTRA_DB_FILES))
DB_FILES_PATH=$(addprefix $(XRAY_DATABASE_DIR)/$(XRAY_DATABASE)/,$(DB_FILES))
BUILD_DIR = build_${XRAY_PART}
check:
@mkdir -p build
@rm -f build/existing.txt
@mkdir -p build_
@rm -f $(BUILD_DIR)/existing.txt
@for DB_FILE in $(sort $(notdir $(wildcard $(XRAY_DATABASE_DIR)/$(XRAY_DATABASE)/*.db))); do \
echo $$DB_FILE >> build/existing.txt; \
echo $$DB_FILE >> $(BUILD_DIR)/existing.txt; \
done
@rm -f build/tocreate.txt
@rm -f $(BUILD_DIR)/tocreate.txt
@for DB_FILE in $(sort $(DB_FILES)); do \
echo $$DB_FILE >> build/tocreate.txt; \
echo $$DB_FILE >> $(BUILD_DIR)/tocreate.txt; \
done
diff -u build/existing.txt build/tocreate.txt
diff -u $(BUILD_DIR)/existing.txt $(BUILD_DIR)/tocreate.txt
status:
@echo $(DB_FILES_PATH)
@ -82,15 +84,18 @@ status:
$(DB_FILES_PATH):
touch $@
pushdb: $(DB_FILES_PATH)
${XRAY_FAMILY_DIR}/${XRAY_PART}:
mkdir -p ${XRAY_FAMILY_DIR}/${XRAY_PART}
pushdb: $(DB_FILES_PATH) ${XRAY_FAMILY_DIR}/${XRAY_PART}
@true
run:
$(MAKE) clean
$(MAKE) pushdb
touch run.ok
touch run.${XRAY_PART}.ok
clean:
rm -rf build run.ok
rm -rf build_* run.*.ok
.PHONY: pushdb clean run

View File

@ -1,12 +1,14 @@
N := 1
SPECIMENS := $(addprefix build/specimen_,$(shell seq -f '%03.0f' $(N)))
SPECIMENS := $(addprefix build_${XRAY_PART}/specimen_,$(shell seq -f '%03.0f' $(N)))
BUILD_DIR = build_${XRAY_PART}
database: $(SPECIMENS)
mkdir -p build
cp build/specimen_001/part.yaml build/part.yaml
python3 -m utils.xyaml build/part.yaml > build/part_no_iobanks.json
python3 add_iobanks.py --part_json build/part_no_iobanks.json --iobanks_info build/specimen_001/iobanks.txt > build/part.json
cp ${XRAY_PART}_required_features.fasm build/ 2>/dev/null || true
mkdir -p $(BUILD_DIR)
cp $(BUILD_DIR)/specimen_001/part.yaml $(BUILD_DIR)/part.yaml
python3 -m utils.xyaml $(BUILD_DIR)/part.yaml > $(BUILD_DIR)/part_no_iobanks.json
python3 add_iobanks.py --part_json $(BUILD_DIR)/part_no_iobanks.json --iobanks_info $(BUILD_DIR)/specimen_001/iobanks.txt > $(BUILD_DIR)/part.json
cp ${XRAY_PART}_required_features.fasm $(BUILD_DIR)/ 2>/dev/null || true
$(SPECIMENS): Makefile.specimen
mkdir -p $@
@ -14,17 +16,17 @@ $(SPECIMENS): Makefile.specimen
pushdb:
mkdir -p ${XRAY_FAMILY_DIR}/${XRAY_PART}
cp build/part.json $(XRAY_FAMILY_DIR)/${XRAY_PART}/part.json
cp build/part.yaml $(XRAY_FAMILY_DIR)/${XRAY_PART}/part.yaml
cp build/${XRAY_PART}_required_features.fasm ${XRAY_FAMILY_DIR}/${XRAY_PART}/required_features.fasm 2>/dev/null || true
cp $(BUILD_DIR)/part.json $(XRAY_FAMILY_DIR)/${XRAY_PART}/part.json
cp $(BUILD_DIR)/part.yaml $(XRAY_FAMILY_DIR)/${XRAY_PART}/part.yaml
cp $(BUILD_DIR)/${XRAY_PART}_required_features.fasm ${XRAY_FAMILY_DIR}/${XRAY_PART}/required_features.fasm 2>/dev/null || true
run:
$(MAKE) clean
$(MAKE) database
$(MAKE) pushdb
touch run.ok
touch run.${XRAY_PART}.ok
clean:
rm -rf build run.ok
rm -rf build_* run.*.ok
.PHONY: database pushdb clean run $(SPECIMENS)

View File

@ -1,144 +1,145 @@
FUZDIR=$(shell pwd)
BUILD_DIR=$(FUZDIR)/build
BUILD_FOLDER=build_${XRAY_PART}
BUILD_DIR=$(FUZDIR)/$(BUILD_FOLDER)
TILEGRID_TDB_DEPENDENCIES=
TILEGRID_TDB_DEPENDENCIES += iob/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += iob_int/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += ioi/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += monitor/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += bram/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += bram_block/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += bram_int/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += clb/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += clb_int/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += cfg/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += dsp/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += fifo_int/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += cfg_int/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += monitor_int/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += clk_hrow/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += clk_bufg/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += hclk_cmt/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += pll/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += hclk_ioi/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += iob/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += iob_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += ioi/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += monitor/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += bram/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += bram_block/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += bram_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += clb/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += clb_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += cfg/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += dsp/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += fifo_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += cfg_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += monitor_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += clk_hrow/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += clk_bufg/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += hclk_cmt/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += pll/$(BUILD_FOLDER)/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += hclk_ioi/$(BUILD_FOLDER)/segbits_tilegrid.tdb
GENERATE_FULL_ARGS=
ifeq (${XRAY_DATABASE}, zynq7)
# Zynq7 only
TILEGRID_TDB_DEPENDENCIES += ps7_int/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += ps7_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb
else
# Artix7/Kintex7 only
TILEGRID_TDB_DEPENDENCIES += mmcm/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += mmcm/$(BUILD_FOLDER)/segbits_tilegrid.tdb
endif
ifeq (${XRAY_DATABASE}, kintex7)
TILEGRID_TDB_DEPENDENCIES += orphan_int_column/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += orphan_int_column/$(BUILD_FOLDER)/segbits_tilegrid.tdb
else
# Disable DSP INT fuzzer on kintex7. It doesn't work, and isn't required.
TILEGRID_TDB_DEPENDENCIES += dsp_int/build/segbits_tilegrid.tdb
TILEGRID_TDB_DEPENDENCIES += dsp_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb
endif
BASICDB_TILEGRID=build/basicdb/${XRAY_PART}/tilegrid.json
BASICDB_TILEGRID=$(BUILD_FOLDER)/basicdb/${XRAY_PART}/tilegrid.json
database: build/tilegrid.json
database: $(BUILD_FOLDER)/tilegrid.json
pushdb: build/tilegrid.json
cp build/tilegrid.json ${XRAY_FAMILY_DIR}/${XRAY_PART}/tilegrid.json
pushdb: $(BUILD_FOLDER)/tilegrid.json
cp $(BUILD_FOLDER)/tilegrid.json ${XRAY_FAMILY_DIR}/${XRAY_PART}/tilegrid.json
build/tiles/tiles.txt:
bash generate.sh build/tiles tiles
$(BUILD_FOLDER)/tiles/tiles.txt:
bash generate.sh $(BUILD_FOLDER)/tiles tiles
${BASICDB_TILEGRID}: generate.py build/tiles/tiles.txt
mkdir -p build/basicdb/${XRAY_PART}
cd build && python3 ${FUZDIR}/generate.py \
--tiles $(FUZDIR)/build/tiles/tiles.txt \
--pin_func $(FUZDIR)/build/tiles/pin_func.txt \
${BASICDB_TILEGRID}: generate.py $(BUILD_FOLDER)/tiles/tiles.txt
mkdir -p $(BUILD_FOLDER)/basicdb/${XRAY_PART}
cd $(BUILD_FOLDER) && python3 ${FUZDIR}/generate.py \
--tiles $(BUILD_DIR)/tiles/tiles.txt \
--pin_func $(BUILD_DIR)/tiles/pin_func.txt \
--out ${BUILD_DIR}/basicdb/${XRAY_PART}/tilegrid.json
clb/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
clb/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd clb && $(MAKE)
clb_int/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
clb_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd clb_int && $(MAKE)
cfg/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cfg/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd cfg && $(MAKE)
iob/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
iob/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd iob && $(MAKE)
iob_int/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
iob_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd iob_int && $(MAKE)
ioi/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
ioi/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd ioi && $(MAKE)
mmcm/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
mmcm/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd mmcm && $(MAKE)
pll/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
pll/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd pll && $(MAKE)
ps7_int/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
ps7_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd ps7_int && $(MAKE)
monitor/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
monitor/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd monitor && $(MAKE)
monitor_int/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
monitor_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd monitor_int && $(MAKE)
bram/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
bram/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd bram && $(MAKE)
bram_block/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
bram_block/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd bram_block && $(MAKE)
bram_int/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
bram_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd bram_int && $(MAKE)
dsp/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
dsp/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd dsp && $(MAKE)
dsp_int/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
dsp_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd dsp_int && $(MAKE)
fifo_int/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
fifo_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd fifo_int && $(MAKE)
cfg_int/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cfg_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd cfg_int && $(MAKE)
orphan_int_column/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
orphan_int_column/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd orphan_int_column && $(MAKE)
clk_hrow/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
clk_hrow/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd clk_hrow && $(MAKE)
clk_bufg/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
clk_bufg/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd clk_bufg && $(MAKE)
hclk_cmt/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
hclk_cmt/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd hclk_cmt && $(MAKE)
hclk_ioi/build/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
hclk_ioi/$(BUILD_FOLDER)/segbits_tilegrid.tdb: ${BASICDB_TILEGRID}
cd hclk_ioi && $(MAKE)
build/tilegrid_tdb.json: add_tdb.py $(TILEGRID_TDB_DEPENDENCIES)
$(BUILD_FOLDER)/tilegrid_tdb.json: add_tdb.py $(TILEGRID_TDB_DEPENDENCIES)
python3 add_tdb.py \
--fn-in ${BASICDB_TILEGRID} \
--fn-out build/tilegrid_tdb.json
--fn-out $(BUILD_FOLDER)/tilegrid_tdb.json
build/tilegrid.json: generate_full.py build/tilegrid_tdb.json
cd build && python3 ${FUZDIR}/generate_full.py \
$(BUILD_FOLDER)/tilegrid.json: generate_full.py $(BUILD_FOLDER)/tilegrid_tdb.json
cd $(BUILD_FOLDER) && python3 ${FUZDIR}/generate_full.py \
--json-in tilegrid_tdb.json --json-out ${BUILD_DIR}/tilegrid.json
run:
$(MAKE) clean
$(MAKE) database
$(MAKE) pushdb
touch run.ok
touch run.${XRAY_PART}.ok
clean:
rm -rf build run.ok
rm -rf build_* run.*.ok
cd clb && $(MAKE) clean
cd clb_int && $(MAKE) clean
cd cfg && $(MAKE) clean

View File

@ -76,34 +76,35 @@ def run(fn_in, fn_out, verbose=False):
# FIXME: generate words from pitch
int_frames, int_words = localutil.get_int_params()
tdb_fns = [
("iob/build/segbits_tilegrid.tdb", 42, 4),
("ioi/build/segbits_tilegrid.tdb", 42, 4),
("mmcm/build/segbits_tilegrid.tdb", 30, 101),
("pll/build/segbits_tilegrid.tdb", 30, 26),
("monitor/build/segbits_tilegrid.tdb", 30, 101),
("bram/build/segbits_tilegrid.tdb", 28, 10),
("bram_block/build/segbits_tilegrid.tdb", 128, 10),
("clb/build/segbits_tilegrid.tdb", 36, 2),
("cfg/build/segbits_tilegrid.tdb", 30, 101),
("dsp/build/segbits_tilegrid.tdb", 28, 10),
("clk_hrow/build/segbits_tilegrid.tdb", 30, 18),
("clk_bufg/build/segbits_tilegrid.tdb", 30, 8),
("hclk_cmt/build/segbits_tilegrid.tdb", 30, 10),
("hclk_ioi/build/segbits_tilegrid.tdb", 42, 1),
("clb_int/build/segbits_tilegrid.tdb", int_frames, int_words),
("iob_int/build/segbits_tilegrid.tdb", int_frames, int_words),
("bram_int/build/segbits_tilegrid.tdb", int_frames, int_words),
("dsp_int/build/segbits_tilegrid.tdb", int_frames, int_words),
("fifo_int/build/segbits_tilegrid.tdb", int_frames, int_words),
("ps7_int/build/segbits_tilegrid.tdb", int_frames, int_words),
("cfg_int/build/segbits_tilegrid.tdb", int_frames, int_words),
("monitor_int/build/segbits_tilegrid.tdb", int_frames, int_words),
(
"orphan_int_column/build/segbits_tilegrid.tdb", int_frames,
int_words),
("iob", 42, 4),
("ioi", 42, 4),
("mmcm", 30, 101),
("pll", 30, 26),
("monitor", 30, 101),
("bram", 28, 10),
("bram_block", 128, 10),
("clb", 36, 2),
("cfg", 30, 101),
("dsp", 28, 10),
("clk_hrow", 30, 18),
("clk_bufg", 30, 8),
("hclk_cmt", 30, 10),
("hclk_ioi", 42, 1),
("clb_int", int_frames, int_words),
("iob_int", int_frames, int_words),
("bram_int", int_frames, int_words),
("dsp_int", int_frames, int_words),
("fifo_int", int_frames, int_words),
("ps7_int", int_frames, int_words),
("cfg_int", int_frames, int_words),
("monitor_int", int_frames, int_words),
("orphan_int_column", int_frames, int_words),
]
for (tdb_fn, frames, words) in tdb_fns:
for (subdir, frames, words) in tdb_fns:
tdb_fn = os.path.join(
subdir, 'build_{}'.format(os.environ['XRAY_PART']),
'segbits_tilegrid.tdb')
if not os.path.exists(tdb_fn):
verbose and print('Skipping {}, file not found!'.format(tdb_fn))
continue

View File

@ -1,12 +1,13 @@
N ?= 10
BUILD_DIR = build_$(XRAY_PART)
GENERATE_ARGS ?=
SPECIMENS := $(addprefix build/specimen_,$(shell seq -f '%03.0f' $(N)))
SPECIMENS := $(addprefix $(BUILD_DIR)/specimen_,$(shell seq -f '%03.0f' $(N)))
SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS))
database: build/segbits_tilegrid.tdb
database: $(BUILD_DIR)/segbits_tilegrid.tdb
build/segbits_tilegrid.tdb: $(SPECIMENS_OK)
${XRAY_SEGMATCH} -o build/segbits_tilegrid.tdb $$(find build -name "segdata_tilegrid.txt")
$(BUILD_DIR)/segbits_tilegrid.tdb: $(SPECIMENS_OK)
${XRAY_SEGMATCH} -o $(BUILD_DIR)/segbits_tilegrid.tdb $$(find $(BUILD_DIR) -name "segdata_tilegrid.txt")
$(SPECIMENS_OK):
GENERATE_ARGS=${GENERATE_ARGS} bash ../fuzzaddr/generate.sh $(subst /OK,,$@)
@ -16,10 +17,10 @@ run:
$(MAKE) clean
$(MAKE) database
$(MAKE) pushdb
touch run.ok
touch run.${XRAY_PART}.ok
clean:
rm -rf build
rm -rf build_* run.*.ok
.PHONY: database pushdb run clean

View File

@ -7,7 +7,7 @@ source ${XRAY_GENHEADER}
# Some projects have hard coded top.v, others are generated
if [ -f $FUZDIR/top.py ] ; then
XRAY_DATABASE_ROOT=$FUZDIR/../build/basicdb python3 $FUZDIR/top.py >top.v
XRAY_DATABASE_ROOT=$FUZDIR/../build_${XRAY_PART}/basicdb python3 $FUZDIR/top.py >top.v
fi
${XRAY_VIVADO} -mode batch -source $FUZDIR/generate.tcl

View File

@ -1,6 +1,6 @@
N := 1
SPECIMENS := $(addprefix build/specimen_,$(shell seq -f '%03.0f' $(N)))
SPECIMENS := $(addprefix build_${XRAY_PART}/specimen_,$(shell seq -f '%03.0f' $(N)))
SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS))
MAX_VIVADO_PROCESS ?= 4
MAX_PIPS_INSTANCE ?= 340000
@ -19,10 +19,10 @@ run:
$(MAKE) clean
$(MAKE) database
$(MAKE) pushdb
touch run.ok
touch run.${XRAY_PART}.ok
clean:
rm -rf build run.ok
rm -rf build_* run.*.ok
.PHONY: database pushdb run clean

View File

@ -1,13 +1,14 @@
N := 1
SPECIMENS := $(addprefix build/specimen_,$(shell seq -f '%03.0f' $(N)))
BUILD_DIR = build_${XRAY_PART}
SPECIMENS := $(addprefix $(BUILD_DIR)/specimen_,$(shell seq -f '%03.0f' $(N)))
SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS))
database: $(SPECIMENS_OK)
true
pushdb:
cp build/specimen_001/*.csv ${XRAY_DATABASE_DIR}/$(XRAY_DATABASE)/
cp $(BUILD_DIR)/specimen_001/*.csv ${XRAY_DATABASE_DIR}/$(XRAY_DATABASE)/
$(SPECIMENS_OK):
bash generate.sh $(subst /OK,,$@)
@ -17,10 +18,10 @@ run:
$(MAKE) clean
$(MAKE) database
$(MAKE) pushdb
touch run.ok
touch run.${XRAY_PART}.ok
clean:
rm -rf build run.ok
rm -rf build_* run.${XRAY_PART}.ok
.PHONY: database pushdb run clean

View File

@ -1,6 +1,7 @@
N := 1
SPECIMENS := $(addprefix build/specimen_,$(shell seq -f '%03.0f' $(N)))
BUILD_DIR = build_${XRAY_PART}
SPECIMENS := $(addprefix $(BUILD_DIR)/specimen_,$(shell seq -f '%03.0f' $(N)))
SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS))
MAX_VIVADO_PROCESS ?= 4
MAX_TILES_INSTANCE ?= 300
@ -10,10 +11,10 @@ database: $(SPECIMENS_OK)
true
pushdb:
cp build/output/tile_type_*.json ${XRAY_FAMILY_DIR}/
cp $(BUILD_DIR)/output/tile_type_*.json ${XRAY_FAMILY_DIR}/
rm ${XRAY_FAMILY_DIR}/tile_type_*_site_type_*.json
cp build/output/site_type_*.json ${XRAY_FAMILY_DIR}/
cp build/output/tileconn.json ${XRAY_FAMILY_DIR}/$(XRAY_PART)/
cp $(BUILD_DIR)/output/site_type_*.json ${XRAY_FAMILY_DIR}/
cp $(BUILD_DIR)/output/tileconn.json ${XRAY_FAMILY_DIR}/$(XRAY_PART)/
$(SPECIMENS_OK):
bash generate.sh $(subst /OK,,$@) -p=$(MAX_VIVADO_PROCESS) -t=$(MAX_TILES_INSTANCE) -n=$(MAX_NODES_INSTANCE)
@ -24,11 +25,11 @@ run:
$(MAKE) database
$(MAKE) pushdb
# Clean up intermediate files after successful pushdb.
find build -name "*.json5" -delete
touch run.ok
find $(BUILD_DIR) -name "*.json5" -delete
touch run.${XRAY_PART}.ok
clean:
rm -rf build run.ok
rm -rf build_* run.*.ok
.PHONY: database pushdb run clean

View File

@ -3,16 +3,19 @@
# By default use ~50 GiB for generate_grid.py, but allow override.
export DEFAULT_MAX_GRID_CPU=10
rm -rf build/output
mkdir -p build/output
export BUILD_DIR=build_${XRAY_PART}
rm -rf ${BUILD_DIR}/output
mkdir -p ${BUILD_DIR}/output
python3 reduce_tile_types.py \
--root_dir build/specimen_001/ \
--output_dir build/output
--root_dir ${BUILD_DIR}/specimen_001/ \
--output_dir ${BUILD_DIR}/output
python3 create_node_tree.py \
--dump_all_root_dir build/specimen_001/ \
--ordered_wires_root_dir ../072-ordered_wires/build/specimen_001/ \
--output_dir build/output
python3 reduce_site_types.py --output_dir build/output
python3 generate_grid.py --root_dir build/specimen_001/ --output_dir build/output \
--dump_all_root_dir ${BUILD_DIR}/specimen_001/ \
--ordered_wires_root_dir ../072-ordered_wires/${BUILD_DIR}/specimen_001/ \
--output_dir ${BUILD_DIR}/output
python3 reduce_site_types.py --output_dir ${BUILD_DIR}/output
python3 generate_grid.py \
--root_dir ${BUILD_DIR}/specimen_001/ \
--output_dir ${BUILD_DIR}/output \
--ignored_wires ignored_wires/${XRAY_DATABASE}/${XRAY_PART}_ignored_wires.txt \
--max_cpu=${MAX_GRID_CPU:-${DEFAULT_MAX_GRID_CPU}}

View File

@ -1,12 +1,13 @@
N := 1
SPECIMENS := $(addprefix build/specimen_,$(shell seq -f '%03.0f' $(N)))
BUILD_DIR = build_${XRAY_PART}
SPECIMENS := $(addprefix $(BUILD_DIR)/specimen_,$(shell seq -f '%03.0f' $(N)))
SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS))
database: $(SPECIMENS_OK)
pushdb:
mkdir -p ${XRAY_FAMILY_DIR}/${XRAY_PART}/
cp build/specimen_001/*_package_pins.csv ${XRAY_FAMILY_DIR}/${XRAY_PART}/package_pins.csv
cp $(BUILD_DIR)/specimen_001/*_package_pins.csv ${XRAY_FAMILY_DIR}/${XRAY_PART}/package_pins.csv
$(SPECIMENS_OK):
bash generate.sh $(subst /OK,,$@)
@ -16,9 +17,9 @@ run:
$(MAKE) clean
$(MAKE) database
$(MAKE) pushdb
touch run.ok
touch run.$(XRAY_PART).ok
clean:
rm -rf build run.ok
rm -rf build_* run.*.ok
.PHONY: database pushdb run clean

View File

@ -23,9 +23,15 @@ define fuzzer
# $(1) - Fuzzer name/directory
# $(2) - Space seperated list of dependencies for the fuzzer.
# $(3) - Is this fuzzer setting specific?
# Make the all target depend on the run.ok file for the fuzzer.
ifeq ($(3),Y)
all: $(1)/run.$(XRAY_PART).ok
part_only: $(1)/run.$(XRAY_PART).ok
else
all: $(1)/run.ok
endif
# Make the clean target run `make clean` in the fuzzer's directory.
clean_fuzzers::
@ -40,92 +46,123 @@ clean_logs::
ifeq ($(VERBOSE),Y)
# When verbose we just call make directory
$(1)/run.ok: $(addsuffix /run.ok,$(2))
ifeq ($(3),Y)
$(1)/run.$(XRAY_PART).ok: $(addprefix fuzzer_, $(2))
$$(MAKE) -C $(1) run
else
$(1)/run.ok: $(addprefix fuzzer_, $(2))
$$(MAKE) -C $(1) run
endif
else
# When not verbose, we use the run_fuzzer wrapper which will save the results
# to log files.
$(1)/run.ok: $(addsuffix /run.ok,$(2))
ifeq ($(3),Y)
$(1)/run.$(XRAY_PART).ok: $(addprefix fuzzer_, $(2))
+@$(SELF_DIR)/run_fuzzer.py $(1)
else
$(1)/run.ok: $(addprefix fuzzer_, $(2))
+@$(SELF_DIR)/run_fuzzer.py $(1)
endif
endif
.PHONY:: fuzzer_$(1)
ifeq ($(3),Y)
fuzzer_$(1): $(1)/run.$(XRAY_PART).ok
else
fuzzer_$(1): $(1)/run.ok
endif
endef
$(eval $(call fuzzer,000-init-db,))
$(eval $(call fuzzer,000-init-db,,Y))
ifneq ($(FUZZONLY),Y)
$(eval $(call fuzzer,001-part-yaml,000-init-db))
$(eval $(call fuzzer,005-tilegrid,001-part-yaml))
$(eval $(call fuzzer,001-part-yaml,000-init-db,Y))
$(eval $(call fuzzer,005-tilegrid,001-part-yaml,Y))
else
all:: 005-tilegrid/run.ok
touch 005-tilegrid/run.ok
endif
ifneq ($(XRAY_DATABASE),kintex7)
$(eval $(call fuzzer,007-timing,005-tilegrid))
$(eval $(call fuzzer,007-timing,005-tilegrid,N))
endif
$(eval $(call fuzzer,010-clb-lutinit,005-tilegrid))
$(eval $(call fuzzer,011-clb-ffconfig,005-tilegrid))
$(eval $(call fuzzer,012-clb-n5ffmux,005-tilegrid))
$(eval $(call fuzzer,013-clb-ncy0,005-tilegrid))
$(eval $(call fuzzer,014-clb-ffsrcemux,005-tilegrid))
$(eval $(call fuzzer,015-clb-nffmux,005-tilegrid))
$(eval $(call fuzzer,016-clb-noutmux,005-tilegrid))
$(eval $(call fuzzer,017-clb-precyinit,005-tilegrid))
$(eval $(call fuzzer,018-clb-ram,005-tilegrid))
$(eval $(call fuzzer,019-clb-ndi1mux,005-tilegrid))
$(eval $(call fuzzer,025-bram-config,005-tilegrid))
$(eval $(call fuzzer,026-bram-data,005-tilegrid))
$(eval $(call fuzzer,027-bram36-config,005-tilegrid))
$(eval $(call fuzzer,028-fifo-config,005-tilegrid))
$(eval $(call fuzzer,029-bram-fifo-config,005-tilegrid))
$(eval $(call fuzzer,030-iob,005-tilegrid))
$(eval $(call fuzzer,032-cmt-pll,005-tilegrid))
$(eval $(call fuzzer,034-cmt-pll-pips,005-tilegrid 071-ppips))
$(eval $(call fuzzer,035-iob-ilogic,005-tilegrid))
$(eval $(call fuzzer,035a-iob-idelay,005-tilegrid))
$(eval $(call fuzzer,036-iob-ologic,005-tilegrid))
$(eval $(call fuzzer,037-iob-pips,005-tilegrid))
$(eval $(call fuzzer,038-cfg,005-tilegrid))
$(eval $(call fuzzer,039-hclk-config,005-tilegrid))
$(eval $(call fuzzer,040-clk-hrow-config,005-tilegrid))
$(eval $(call fuzzer,041-clk-hrow-pips,005-tilegrid))
$(eval $(call fuzzer,042-clk-bufg-config,005-tilegrid))
$(eval $(call fuzzer,043-clk-rebuf-pips,005-tilegrid))
$(eval $(call fuzzer,044-clk-bufg-pips,046-clk-bufg-muxed-pips))
$(eval $(call fuzzer,045-hclk-cmt-pips,005-tilegrid))
$(eval $(call fuzzer,046-clk-bufg-muxed-pips,005-tilegrid))
$(eval $(call fuzzer,047-hclk-ioi-pips,005-tilegrid))
$(eval $(call fuzzer,047a-hclk-idelayctrl-pips,047-hclk-ioi-pips))
$(eval $(call fuzzer,048-int-piplist,005-tilegrid))
$(eval $(call fuzzer,049-int-imux-gfan,048-int-piplist))
$(eval $(call fuzzer,050-pip-seed,048-int-piplist))
$(eval $(call fuzzer,051-pip-imuxlout-bypalts,048-int-piplist))
$(eval $(call fuzzer,052-pip-clkin,048-int-piplist))
$(eval $(call fuzzer,053-pip-ctrlin,048-int-piplist))
$(eval $(call fuzzer,054-pip-fan-alt,048-int-piplist))
$(eval $(call fuzzer,055-pip-gnd,048-int-piplist))
$(eval $(call fuzzer,056-pip-rem,049-int-imux-gfan 050-pip-seed 051-pip-imuxlout-bypalts 052-pip-clkin 053-pip-ctrlin 054-pip-fan-alt 055-pip-gnd 059-pip-byp-bounce))
$(eval $(call fuzzer,057-pip-bi,056-pip-rem))
$(eval $(call fuzzer,010-clb-lutinit,005-tilegrid,N))
$(eval $(call fuzzer,011-clb-ffconfig,005-tilegrid,N))
$(eval $(call fuzzer,012-clb-n5ffmux,005-tilegrid,N))
$(eval $(call fuzzer,013-clb-ncy0,005-tilegrid,N))
$(eval $(call fuzzer,014-clb-ffsrcemux,005-tilegrid,N))
$(eval $(call fuzzer,015-clb-nffmux,005-tilegrid,N))
$(eval $(call fuzzer,016-clb-noutmux,005-tilegrid,N))
$(eval $(call fuzzer,017-clb-precyinit,005-tilegrid,N))
$(eval $(call fuzzer,018-clb-ram,005-tilegrid,N))
$(eval $(call fuzzer,019-clb-ndi1mux,005-tilegrid,N))
$(eval $(call fuzzer,025-bram-config,005-tilegrid,N))
$(eval $(call fuzzer,026-bram-data,005-tilegrid,N))
$(eval $(call fuzzer,027-bram36-config,005-tilegrid,N))
$(eval $(call fuzzer,028-fifo-config,005-tilegrid,N))
$(eval $(call fuzzer,029-bram-fifo-config,005-tilegrid,N))
$(eval $(call fuzzer,030-iob,005-tilegrid,N))
$(eval $(call fuzzer,032-cmt-pll,005-tilegrid,N))
$(eval $(call fuzzer,034-cmt-pll-pips,005-tilegrid 071-ppips,N))
$(eval $(call fuzzer,035-iob-ilogic,005-tilegrid,N))
$(eval $(call fuzzer,035a-iob-idelay,005-tilegrid,N))
$(eval $(call fuzzer,036-iob-ologic,005-tilegrid,N))
$(eval $(call fuzzer,037-iob-pips,005-tilegrid,N))
$(eval $(call fuzzer,038-cfg,005-tilegrid,N))
$(eval $(call fuzzer,039-hclk-config,005-tilegrid,N))
$(eval $(call fuzzer,040-clk-hrow-config,005-tilegrid,N))
$(eval $(call fuzzer,041-clk-hrow-pips,005-tilegrid,N))
$(eval $(call fuzzer,042-clk-bufg-config,005-tilegrid,N))
$(eval $(call fuzzer,043-clk-rebuf-pips,005-tilegrid,N))
$(eval $(call fuzzer,044-clk-bufg-pips,046-clk-bufg-muxed-pips,N))
$(eval $(call fuzzer,045-hclk-cmt-pips,005-tilegrid,N))
$(eval $(call fuzzer,046-clk-bufg-muxed-pips,005-tilegrid,N))
$(eval $(call fuzzer,047-hclk-ioi-pips,005-tilegrid,N))
$(eval $(call fuzzer,047a-hclk-idelayctrl-pips,047-hclk-ioi-pips,N))
$(eval $(call fuzzer,048-int-piplist,005-tilegrid,N))
$(eval $(call fuzzer,049-int-imux-gfan,048-int-piplist,N))
$(eval $(call fuzzer,050-pip-seed,048-int-piplist,N))
$(eval $(call fuzzer,051-pip-imuxlout-bypalts,048-int-piplist,N))
$(eval $(call fuzzer,052-pip-clkin,048-int-piplist,N))
$(eval $(call fuzzer,053-pip-ctrlin,048-int-piplist,N))
$(eval $(call fuzzer,054-pip-fan-alt,048-int-piplist,N))
$(eval $(call fuzzer,055-pip-gnd,048-int-piplist,N))
$(eval $(call fuzzer,056-pip-rem,049-int-imux-gfan 050-pip-seed 051-pip-imuxlout-bypalts 052-pip-clkin 053-pip-ctrlin 054-pip-fan-alt 055-pip-gnd 059-pip-byp-bounce,N))
$(eval $(call fuzzer,057-pip-bi,056-pip-rem,N))
ifneq ($(QUICK),Y)
$(eval $(call fuzzer,058-pip-hclk,005-tilegrid))
$(eval $(call fuzzer,059-pip-byp-bounce,048-int-piplist))
$(eval $(call fuzzer,060-bram-cascades,005-tilegrid))
$(eval $(call fuzzer,071-ppips,057-pip-bi 058-pip-hclk 060-bram-cascades))
$(eval $(call fuzzer,058-pip-hclk,005-tilegrid,N))
$(eval $(call fuzzer,059-pip-byp-bounce,048-int-piplist,N))
$(eval $(call fuzzer,060-bram-cascades,005-tilegrid,N))
$(eval $(call fuzzer,071-ppips,057-pip-bi 058-pip-hclk 060-bram-cascades,N))
ifneq ($(BITONLY),Y)
$(eval $(call fuzzer,072-ordered_wires,))
$(eval $(call fuzzer,073-get_counts,))
$(eval $(call fuzzer,074-dump_all,005-tilegrid 072-ordered_wires))
$(eval $(call fuzzer,075-pins,))
$(eval $(call fuzzer,072-ordered_wires,,Y))
$(eval $(call fuzzer,073-get_counts,,Y))
$(eval $(call fuzzer,074-dump_all,005-tilegrid 072-ordered_wires,Y))
$(eval $(call fuzzer,075-pins,,Y))
ifeq ($(XRAY_DATABASE),zynq7)
$(eval $(call fuzzer,076-ps7,))
$(eval $(call fuzzer,076-ps7,,N))
endif
endif
endif
$(eval $(call fuzzer,100-dsp-mskpat,005-tilegrid))
$(eval $(call fuzzer,100-dsp-mskpat,005-tilegrid,N))
quick:
$(MAKE) QUICK=Y
@ -133,51 +170,11 @@ quick:
# Part only targets
# -----------------
$(addprefix ${XRAY_FAMILY_DIR}/${XRAY_PART}/part.,yaml json):
$(MAKE) 001-part-yaml/run.ok
${XRAY_FAMILY_DIR}/${XRAY_PART}/package_pins.csv:
$(MAKE) 075-pins/run.ok
${XRAY_FAMILY_DIR}/${XRAY_PART}/tilegrid.json:
$(MAKE) 005-tilegrid/run.ok
${XRAY_FAMILY_DIR}/${XRAY_PART}/tileconn.json:
$(MAKE) 072-ordered_wires/run.ok
$(MAKE) 073-get_counts/run.ok
$(MAKE) 074-dump_all/run.ok
part_only_yaml: ${XRAY_FAMILY_DIR}/${XRAY_PART}/part.yaml
part_only_tilegrid: ${XRAY_FAMILY_DIR}/${XRAY_PART}/tilegrid.json
part_only_tileconn: ${XRAY_FAMILY_DIR}/${XRAY_PART}/tileconn.json
part_only_pins: ${XRAY_FAMILY_DIR}/${XRAY_PART}/package_pins.csv
# part_only runs the fuzzers required to support additional parts
part_only:
+$(MAKE) clean_fuzzers
# Create PART-specific directory
mkdir -p ${XRAY_FAMILY_DIR}/${XRAY_PART}
# Generate YAML
+$(MAKE) part_only_yaml
# Generate Tile grid
+$(MAKE) part_only_tilegrid
# Generate Tile connections
+$(MAKE) part_only_tileconn
# Generate package pins
+$(MAKE) part_only_pins
# roi_only runs the fuzzers required for supporting additional parts when building
# a roi harness.
roi_only:
+$(MAKE) clean_fuzzers
# Create PART-specific directory
mkdir -p ${XRAY_FAMILY_DIR}/${XRAY_PART}
# Generate YAML
+$(MAKE) part_only_yaml
# Generate package pins
+$(MAKE) part_only_pins
roi_only: 000-init-db/run.${XRAY_PART}.ok 001-part-yaml/run.${XRAY_PART}.ok 075-pins/run.${XRAY_PART}.ok
# Copy tilegrid and tileconn
cp ${XRAY_FAMILY_DIR}/${XRAY_EQUIV_PART}/tilegrid.json ${XRAY_FAMILY_DIR}/${XRAY_PART}/tilegrid.json
cp ${XRAY_FAMILY_DIR}/${XRAY_EQUIV_PART}/tileconn.json ${XRAY_FAMILY_DIR}/${XRAY_PART}/tileconn.json
.PHONY: all clean clean_fuzzers clean_logs quick part_only roi_only
.PHONY:: all clean clean_fuzzers clean_logs quick part_only roi_only

View File

@ -1,28 +1,28 @@
BUILD_DIR=build
HARNESS_DIR ?= harness
export BUILD_DIR
XRAY_PINCFG ?= BASYS3-SWBUT
export XRAY_PINCFG
BUILD_DIR=build_$(XRAY_PINCFG)
HARNESS_DIR ?= harness_$(XRAY_PINCFG)
export BUILD_DIR
HARNESS_FILES=$(BUILD_DIR)/design.bit $(BUILD_DIR)/design.txt $(BUILD_DIR)/design.json $(BUILD_DIR)/design.dcp
# official demo configuration
all: $(HARNESS_FILES)
all: $(BUILD_DIR)/run.ok
$(HARNESS_FILES): runme.sh runme.tcl
$(BUILD_DIR)/run.ok: runme.sh runme.tcl
./runme.sh
touch $(BUILD_DIR)/run.ok
copy: $(HARNESS_FILES)
copy: $(BUILD_DIR)/run.ok
mkdir -p $(HARNESS_DIR)
cp $(HARNESS_FILES) $(HARNESS_DIR)
clean:
rm -rf $(BUILD_DIR) $(HARNESS_DIR)
rm -rf build_* harness_*
run:
make clean
make copy
.PHONY: all clean copy run