From 2ad0bf82fc9ca382136232a26e5775777c8bfff9 Mon Sep 17 00:00:00 2001 From: John McMaster Date: Wed, 12 Sep 2018 14:03:33 -0700 Subject: [PATCH] timfuz: ALLOW_ZERO_EQN Signed-off-by: John McMaster --- fuzzers/007-timing/projects/corner.mk | 6 +++++- fuzzers/007-timing/projects/oneblinkw/Makefile | 2 ++ fuzzers/007-timing/projects/project.mk | 1 + fuzzers/007-timing/timfuz_solve.py | 2 ++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/fuzzers/007-timing/projects/corner.mk b/fuzzers/007-timing/projects/corner.mk index c4ac2d23..5ae80ca8 100644 --- a/fuzzers/007-timing/projects/corner.mk +++ b/fuzzers/007-timing/projects/corner.mk @@ -2,6 +2,7 @@ TIMFUZ_DIR=$(XRAY_DIR)/fuzzers/007-timing CORNER=slow_max +ALLOW_ZERO_EQN?=N all: build/$(CORNER)/tilea.json @@ -20,6 +21,9 @@ clean: build/$(CORNER): mkdir build/$(CORNER) +build/checksub: + false + build/$(CORNER)/leastsq.csv: build/sub.json build/grouped.csv build/checksub build/$(CORNER) # Create a rough timing model that approximately fits the given paths python3 $(TIMFUZ_DIR)/solve_leastsq.py --sub-json build/sub.json build/grouped.csv --corner $(CORNER) --out build/$(CORNER)/leastsq.csv.tmp @@ -27,7 +31,7 @@ build/$(CORNER)/leastsq.csv: build/sub.json build/grouped.csv build/checksub bui build/$(CORNER)/linprog.csv: build/$(CORNER)/leastsq.csv build/grouped.csv # Tweak rough timing model, making sure all constraints are satisfied - python3 $(TIMFUZ_DIR)/solve_linprog.py --sub-json build/sub.json --sub-csv build/$(CORNER)/leastsq.csv --massage build/grouped.csv --corner $(CORNER) --out build/$(CORNER)/linprog.csv.tmp + ALLOW_ZERO_EQN=$(ALLOW_ZERO_EQN) python3 $(TIMFUZ_DIR)/solve_linprog.py --sub-json build/sub.json --sub-csv build/$(CORNER)/leastsq.csv --massage build/grouped.csv --corner $(CORNER) --out build/$(CORNER)/linprog.csv.tmp mv build/$(CORNER)/linprog.csv.tmp build/$(CORNER)/linprog.csv build/$(CORNER)/flat.csv: build/$(CORNER)/linprog.csv diff --git a/fuzzers/007-timing/projects/oneblinkw/Makefile b/fuzzers/007-timing/projects/oneblinkw/Makefile index 9c8b1947..5e5721b7 100644 --- a/fuzzers/007-timing/projects/oneblinkw/Makefile +++ b/fuzzers/007-timing/projects/oneblinkw/Makefile @@ -1,2 +1,4 @@ +# so simple that likely no linprog adjustments will be needed +ALLOW_ZERO_EQN?=Y include ../project.mk diff --git a/fuzzers/007-timing/projects/project.mk b/fuzzers/007-timing/projects/project.mk index c0b3d1a3..daa79aeb 100644 --- a/fuzzers/007-timing/projects/project.mk +++ b/fuzzers/007-timing/projects/project.mk @@ -7,6 +7,7 @@ SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) CSVS := $(addsuffix /timing3.csv,$(SPECIMENS)) TIMFUZ_DIR=$(XRAY_DIR)/fuzzers/007-timing RREF_CORNER=slow_max +ALLOW_ZERO_EQN?=N TILEA_JSONS=build/fast_max/tilea.json build/fast_min/tilea.json build/slow_max/tilea.json build/slow_min/tilea.json diff --git a/fuzzers/007-timing/timfuz_solve.py b/fuzzers/007-timing/timfuz_solve.py index 47373411..ccd2b738 100644 --- a/fuzzers/007-timing/timfuz_solve.py +++ b/fuzzers/007-timing/timfuz_solve.py @@ -142,6 +142,8 @@ def run(fns_in, corner, run_corner, sub_json=None, sub_csv=None, dedup=True, mas try: Ads, b = massage_equations(Ads, b, corner=corner) except SimplifiedToZero: + if os.getenv('ALLOW_ZERO_EQN', 'N') != 'Y': + raise print('WARNING: simplified to zero equations') Ads = [] b = []