From 6fbbea4bce9643f08de062c92cd4ac9e50f01d86 Mon Sep 17 00:00:00 2001 From: htfab Date: Mon, 21 Oct 2024 12:34:07 +0200 Subject: [PATCH] fix(orfs): fail if violations remain after detailed routing --- project.py | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/project.py b/project.py index 16aee90..f4f70af 100644 --- a/project.py +++ b/project.py @@ -606,6 +606,32 @@ class Project: logging.error("harden failed") exit(1) + # Collect metrics + if self.args.orfs: + metrics = {} + metrics_inputs = glob.glob( + os.path.join( + self.local_dir, + "runs/wokwi/logs/ihp-sg13g2/tt-submission/base/*.json", + ) + ) + for metrics_input in metrics_inputs: + with open(metrics_input) as mf: + metrics.update(json.load(mf)) + metrics_output = ( + "runs/wokwi/results/ihp-sg13g2/tt-submission/base/metrics.csv" + ) + with open(metrics_output, "w") as mf: + wr = csv.writer(mf) + wr.writerow(("Metric", "Value")) + wr.writerows(metrics.items()) + + # Fail if violations remain after detailed routing + if self.args.orfs: + if metrics["detailedroute__route__drc_errors"] > 0: + logging.error("error: detailed routing couldn't resolve all violations") + exit(1) + # DRC & LVS aren't included in the default ORFS flow if self.args.orfs: self.run_drc() @@ -633,26 +659,6 @@ class Project: ) f.write("\n") - # Collect metrics - if self.args.orfs: - metrics = {} - metrics_inputs = glob.glob( - os.path.join( - self.local_dir, - "runs/wokwi/logs/ihp-sg13g2/tt-submission/base/*.json", - ) - ) - for metrics_input in metrics_inputs: - with open(metrics_input) as mf: - metrics.update(json.load(mf)) - metrics_output = ( - "runs/wokwi/results/ihp-sg13g2/tt-submission/base/metrics.csv" - ) - with open(metrics_output, "w") as mf: - wr = csv.writer(mf) - wr.writerow(("Metric", "Value")) - wr.writerows(metrics.items()) - if self.args.orfs: tool_queries = [ ("yosys", "shell", "yosys -V"),