From a46c811be7698e9dc3bbfe10bea12384c115b1d0 Mon Sep 17 00:00:00 2001 From: John McMaster Date: Tue, 11 Dec 2018 16:05:08 -0800 Subject: [PATCH] intpips: iterative solve Signed-off-by: John McMaster --- fuzzers/050-intpips/.gitignore | 7 +++-- fuzzers/050-intpips/Makefile | 44 ++++++++++++++++++++++---------- fuzzers/050-intpips/generate.sh | 2 ++ fuzzers/050-intpips/generate.tcl | 4 +-- 4 files changed, 38 insertions(+), 19 deletions(-) diff --git a/fuzzers/050-intpips/.gitignore b/fuzzers/050-intpips/.gitignore index c9065554..a747a2b4 100644 --- a/fuzzers/050-intpips/.gitignore +++ b/fuzzers/050-intpips/.gitignore @@ -1,4 +1,3 @@ -/specimen_[0-9][0-9][0-9]/ -/seg_int_[lr].segbits -/mask_clbl[lm]_[lr].segbits -/run.ok +build +run.ok +todo diff --git a/fuzzers/050-intpips/Makefile b/fuzzers/050-intpips/Makefile index 6e5bc50a..2ae4ca97 100644 --- a/fuzzers/050-intpips/Makefile +++ b/fuzzers/050-intpips/Makefile @@ -1,11 +1,16 @@ -ifeq ($(QUICK),Y) -N := 10 -else -N := 200 -endif - -SPECIMENS := $(addprefix build/specimen_,$(shell seq -f '%03.0f' $(N))) +# Do relatively large batch to keep parallelism high +# LCM between 12 (CPUs on my system) and 16, a common CPU count +# WARNING: N must be relatively high (say 10) or segmatch -m/M will fail +N := 48 +# Driven by int_loop.sh +ITER := 1 +# See int_loop_check.py +# Original did 200 specimins open loop +CHECK_ARGS := --max-iters 6 --stable-iters 3 +SPECIMENS := $(addprefix build/$(ITER)/specimen_,$(shell seq -f '%03.0f' $(N))) SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) +# Individual fuzzer directory, such as ~/prjxray/fuzzers/010-lutinit +export FUZDIR=$(shell pwd) database: $(SPECIMENS_OK) ${XRAY_SEGMATCH} -m 5 -M 15 -o build/segbits_int_l.db $(addsuffix /segdata_int_l.txt,$(SPECIMENS)) @@ -24,19 +29,32 @@ pushdb: ${XRAY_MERGEDB} mask_clblm_l build/mask_clblm_l.db ${XRAY_MERGEDB} mask_clblm_r build/mask_clblm_r.db -$(SPECIMENS_OK): - mkdir -p build +$(SPECIMENS_OK): build/todo.txt + mkdir -p build/$(ITER) bash generate.sh $(subst /OK,,$@) touch $@ +build/pips_int_l.txt: $(XRAY_DIR)/fuzzers/piplist.tcl + mkdir -p build/$(ITER) + cd build/$(ITER) && vivado -mode batch -source $(XRAY_DIR)/fuzzers/piplist.tcl + +build/todo.txt: build/pips_int_l.txt maketodo.py + python3 maketodo.py --build-dir build/$(ITER) >build/todo_all.txt + cat build/todo_all.txt | sort -R > build/todo.txt.tmp + mv build/todo.txt.tmp build/todo.txt + +# XXX: conider moving to script run: $(MAKE) clean - $(MAKE) database - $(MAKE) pushdb + XRAY_DIR=${XRAY_DIR} MAKE="$(MAKE)" MAKEFLAGS="$(MAKEFLAGS)" QUICK=$(QUICK) $(XRAY_DIR)/fuzzers/int_loop.sh --check-args "$(CHECK_ARGS)" touch run.ok clean: - rm -rf build run.ok + rm -rf build run.ok todo -.PHONY: database pushdb run clean +# Remove iteration specific files, but keep piplist.tcl output +cleanprj: + rm -rf build/$(ITER) + +.PHONY: database pushdb run clean cleanprj diff --git a/fuzzers/050-intpips/generate.sh b/fuzzers/050-intpips/generate.sh index a51b54f3..1f6a06d4 100644 --- a/fuzzers/050-intpips/generate.sh +++ b/fuzzers/050-intpips/generate.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -ex + FUZDIR=$PWD source ${XRAY_GENHEADER} diff --git a/fuzzers/050-intpips/generate.tcl b/fuzzers/050-intpips/generate.tcl index 37c2d1d5..cd3e31ca 100644 --- a/fuzzers/050-intpips/generate.tcl +++ b/fuzzers/050-intpips/generate.tcl @@ -1,7 +1,7 @@ create_project -force -part $::env(XRAY_PART) design design -read_verilog ../../top.v -read_verilog ../../picorv32.v +read_verilog $::env(FUZDIR)/top.v +read_verilog $::env(FUZDIR)/picorv32.v synth_design -top top set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_00) IOSTANDARD LVCMOS33" [get_ports clk]