From a663df28ecff89a71bcdbcd6f71108fc3bb199c3 Mon Sep 17 00:00:00 2001 From: Mohamed Gaber Date: Wed, 6 Mar 2024 15:47:26 +0200 Subject: [PATCH] Update OpenROAD (#2093) ~ `openroad_app` -> `0889970` ~ `scripts/odbpy/reader.py`: Added workaround to continue to be able to use multiple DBs, See https://github.com/The-OpenROAD-Project/OpenROAD/discussions/4743 for more info --- dependencies/tool_metadata.yml | 2 +- scripts/odbpy/reader.py | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/dependencies/tool_metadata.yml b/dependencies/tool_metadata.yml index 525bb41f..f55e590a 100644 --- a/dependencies/tool_metadata.yml +++ b/dependencies/tool_metadata.yml @@ -56,7 +56,7 @@ in_install: false - name: openroad_app repo: https://github.com/The-OpenROAD-Project/OpenROAD - commit: 75f2f325b7a42e56a92404f33af8e96530d9b202 + commit: 0889970d1790a2617e69f253221b8bd7626e51dc in_install: false - name: git repo: https://github.com/git/git diff --git a/scripts/odbpy/reader.py b/scripts/odbpy/reader.py index a9105424..19fd0aee 100644 --- a/scripts/odbpy/reader.py +++ b/scripts/odbpy/reader.py @@ -11,19 +11,33 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -import odb - import os import sys import inspect import functools +from typing import Optional import click +import odb +from utl import Logger +from openroad import Tech, Design + class OdbReader(object): + logger: Optional[Logger] = None + def __init__(self, *args): - self.db = odb.dbDatabase.create() + if self.__class__.logger is None: + ord_tech = Tech() + design = Design(ord_tech) + + self.db = ord_tech.getDB() + self.__class__.logger = design.getLogger() + else: + self.db = odb.dbDatabase.create() + self.db.setLogger(self.__class__.logger) + if len(args) == 1: db_in = args[0] self.db = odb.read_db(self.db, db_in) @@ -77,6 +91,7 @@ def click_odb(function): if output_def is not None: odb.write_def(reader.block, output_def) + sys.stdout.flush() odb.write_db(reader.db, output) wrapper = click.option(