scripts: add missing -exit flag to openroad -python call
Fixes #1387
Looking at the CI results, there doesn't seems to be a good way to pass the -exit flag for python script that consume arguments.
If placed after a -python SCRIPTNAME that takes arguments (https://github.com/The-OpenROAD-Project/OpenLane/actions/runs/3099512086/jobs/5018790378) it is processed by the python script itself:
Usage: lefutil.py get_metal_layers [OPTIONS] [LEFS]...
Try 'lefutil.py get_metal_layers --help' for help.
Error: No such option: -e
if placed before -python (https://github.com/The-OpenROAD-Project/OpenLane/actions/runs/3099596986/jobs/5018960704) is it not recognized as an valid option:
Unknown option: -e
usage: openroad [option] ... [-c cmd | -m mod | file | -] [arg] ...
Marking this PR as draft until we resolve all discussions on https://github.com/The-OpenROAD-Project/OpenROAD/pull/2288.
Pardon, but would you please take a look at regression test tests/1007?
@donn is there a way to pull the logs for the failing test from the CI? or does one need to run the same test locally?
Here is the failure I get when running the regression suite locally:
OpenLane 💀 cat ./regression_results/issue_regression_1007.log
OpenLane bf0e83e509d0810d50d5d3579af61ce8916a8504
All rights reserved. (c) 2020-2022 Efabless Corporation and contributors.
Available under the Apache License, version 2.0. See the LICENSE file for more details.
[INFO]: Using configuration in 'tests/1007/config.tcl'...
[INFO]: PDK Root: /usr/local/google/home/proppy/src/github.com/The-OpenROAD-Project/OpenLane/pdks
[INFO]: Process Design Kit: sky130A
[INFO]: Standard Cell Library: sky130_fd_sc_hd
[INFO]: Optimization Standard Cell Library: sky130_fd_sc_hd
[INFO]: Run Directory: /openlane/tests/1007/runs/RUN_2022.09.28_02.17.08
[INFO]: Preparing LEF files for the nom corner...
[INFO]: Preparing LEF files for the min corner...
[INFO]: Preparing LEF files for the max corner...
[ERROR]: during executing openroad script /openlane/scripts/openroad/insert_buffer.tcl
[ERROR]: Log: tests/1007/runs/RUN_2022.09.28_02.17.08/logs/routing/0-insert_buffer.log
[ERROR]: Last 10 lines:
OpenROAD 5e557eeb13dcbc19a167fb7c00d06006db9c9433
This program is licensed under the BSD-3 license. See the LICENSE file for details.
Components of this program may be licensed under more restrictive licenses which must be honored.
incompatible database schema revision
child process exited abnormally
incompatible database schema revision
seems to come from https://github.com/The-OpenROAD-Project/OpenROAD/blob/816cfe95a0c90dc7fe0395c000327b3aa6babf96/src/odb/src/db/dbDatabase.cpp#L308-L314
so I'd suspect that https://github.com/The-OpenROAD-Project/OpenLane/blob/master/tests/1007/in.odb has to be regenerated?
Looks that the failure is due to a recent schema version bump: https://github.com/The-OpenROAD-Project/OpenROAD/commit/6bea861cdb640856a643d8e7c42cb64feed3ab0a
That happened since the last time openroad_app got bumped https://github.com/The-OpenROAD-Project/OpenLane/commit/ae089d8da840644f77d60eeeae7695c3f1948d7f
I was able to migrate the .def file from version 56 to version 57 using the following methodology:
- install the most recent build of openroad preceding https://github.com/The-OpenROAD-Project/OpenROAD/pull/2267 (schema version
56) from https://anaconda.org/LiteX-Hub/openroad/files - read
in.odbusing theopenroad -python; write a def - install the first build of openroad following https://github.com/The-OpenROAD-Project/OpenROAD/pull/2288 (schema version
57) from https://anaconda.org/LiteX-Hub/openroad/files - read the def; write the updated
in.odbfile
see this notebook: https://colab.research.google.com/gist/proppy/a60669f58245da3dd55646c525850f52/migrate-opendb-versions.ipynb
After that the failing test now passes:
Running test case: 1007 (log: ./regression_results/issue_regression_1007.log)
1007 completed successfully.
@donn @maliberty @QuantamHD let me know if there is a better way to handle ODB schema conversion.
@maliberty @donn @QuantamHD relaunched the CI the arm64v8 which timeout'ed after 6h.
CI failure
Done.
@donn did you manage to work around the arm64 build timeout issue?
@proppy I just manually built and pushed the arm64 binaries for OpenROAD