Skip to content

Commit f15ab63

Browse files
committed
rules: genRuleFile.py has a more explicit interface
There was a lot of implicit things going on with design dir. There's no change, but there's clearly an input rules and output rules file and there's an explicit metadata.json file Signed-off-by: Øyvind Harboe <[email protected]>
1 parent 4da217e commit f15ab63

File tree

2 files changed

+29
-27
lines changed

2 files changed

+29
-27
lines changed

flow/util/genRuleFile.py

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,36 +11,28 @@
1111

1212

1313
def gen_rule_file(
14-
design_dir,
14+
rules_file,
15+
new_rules_file,
1516
update,
1617
tighten,
1718
failing,
1819
variant,
19-
metrics=None,
20+
metrics_file=None,
2021
metrics_to_consider=[],
2122
):
2223

23-
golden_metrics = f"metadata-{variant}-ok.json"
24-
if isinstance(metrics, str) and isfile(metrics):
25-
with open(metrics, "r") as f:
26-
metrics = json.load(f)
27-
elif isfile(golden_metrics):
28-
with open(golden_metrics, "r") as f:
29-
metrics = json.load(f)
24+
with open(metrics_file, "r") as f:
25+
metrics = json.load(f)
3026
if not isinstance(metrics, dict):
31-
print(f"[ERROR] Invalid format for reference metrics {design_dir}")
27+
print(f"[ERROR] Invalid format for reference metrics {metrics_file}")
3228
sys.exit(1)
3329

34-
original_directory = getcwd()
35-
chdir(design_dir)
36-
rules_file = f"rules-{variant}.json"
3730
rules = dict()
38-
3931
if isfile(rules_file):
4032
with open(rules_file, "r") as f:
4133
OLD_RULES = json.load(f)
4234
else:
43-
print(f"[WARNING] Rules file not found {design_dir}")
35+
print(f"[WARNING] No old rules file found {rules_file}")
4436
OLD_RULES = None
4537

4638
# dict format
@@ -189,10 +181,7 @@ def gen_rule_file(
189181
change_str = ""
190182
for field, option in rules_dict.items():
191183
if field not in metrics.keys():
192-
print(
193-
f"[ERROR] Metric {field} not found in "
194-
f"metrics file: {metrics_file} or golden metrics."
195-
)
184+
print(f"[ERROR] Metric {field} not found")
196185
sys.exit(1)
197186

198187
if isinstance(metrics[field], str):
@@ -305,16 +294,13 @@ def gen_rule_file(
305294
rules[field] = dict(value=rule_value, compare=option["compare"])
306295

307296
if len(change_str) > 0:
308-
print(design_dir)
309297
print(format_str.format("Metric", "Old", "New", "Type"), end="")
310298
print(format_str.format("------", "---", "---", "----"), end="")
311299
print(change_str)
312300

313-
with open(rules_file, "w") as f:
301+
with open(new_rules_file, "w") as f:
314302
json.dump(rules, f, indent=4)
315303

316-
chdir(original_directory)
317-
318304

319305
def comma_separated_list(value):
320306
if value is None or value == "all":
@@ -326,7 +312,6 @@ def comma_separated_list(value):
326312
parser = argparse.ArgumentParser(
327313
description="Generates or updates rules file for CI."
328314
)
329-
parser.add_argument("dir", help="Path to the design directory.")
330315
parser.add_argument(
331316
"-v", "--variant", default="base", help='Flow variant [default="base"].'
332317
)
@@ -358,6 +343,18 @@ def comma_separated_list(value):
358343
default=None,
359344
help="Reference metadata file.",
360345
)
346+
parser.add_argument(
347+
"--rules",
348+
type=str,
349+
default=None,
350+
help="Rules input file.",
351+
)
352+
parser.add_argument(
353+
"--new-rules",
354+
type=str,
355+
default=None,
356+
help="Rules input file.",
357+
)
361358
parser.add_argument(
362359
"-m",
363360
"--metrics",
@@ -376,7 +373,8 @@ def comma_separated_list(value):
376373
sys.exit(1)
377374

378375
gen_rule_file(
379-
args.dir,
376+
args.rules,
377+
args.new_rules,
380378
args.update,
381379
args.tighten,
382380
args.failing,

flow/util/utils.mk

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,19 @@ update_metadata:
3535

3636
.PHONY: update_rules
3737
update_rules:
38-
$(UTILS_DIR)/genRuleFile.py $(DESIGN_DIR) \
38+
$(UTILS_DIR)/genRuleFile.py \
39+
--rules $(DESIGN_DIR)/rules-$(FLOW_VARIANT).json \
40+
--new-rules $(DESIGN_DIR)/rules-$(FLOW_VARIANT).json \
3941
--reference $(REPORTS_DIR)/metadata.json \
4042
--variant $(FLOW_VARIANT) \
4143
--failing \
4244
--tighten
4345

4446
.PHONY: update_rules_force
4547
update_rules_force:
46-
$(UTILS_DIR)/genRuleFile.py $(DESIGN_DIR) \
48+
$(UTILS_DIR)/genRuleFile.py \
49+
--rules $(DESIGN_DIR)/rules-$(FLOW_VARIANT).json \
50+
--new-rules $(DESIGN_DIR)/rules-$(FLOW_VARIANT).json \
4751
--reference $(REPORTS_DIR)/metadata.json \
4852
--variant $(FLOW_VARIANT) \
4953
--update

0 commit comments

Comments
 (0)