OpenLane is an automated RTL to GDSII flow based on several components including OpenROAD, Yosys, Magic, Netgen and custom methodology scripts for design exploration and optimization.
/// The parameter full=False was added during the tag that the report generation stopped working
def get_config_for_run(Self, run_path, design, tag, full=False) -> Dict[str, str]:
if run_path is None:
run_path = get_run_path(design=design, tag=tag)
config_path = os.path.join(os.getcwd(), run_path, "config.tcl")
config = read_tcl_env(config_path)
Simply make your -design and -run_path 2 different directories and provide them as options to specify to the flow.tcl.
Relevant log output
[STEP 34]
[INFO]: Running OpenROAD Antenna Rule Checker (log: ../work/runs/wokwi/logs/signoff/34-antenna.log)...
[STEP 35]
[INFO]: Running Circuit Validity Checker ERC (log: ../work/runs/wokwi/logs/signoff/35-erc_screen.log)...
[INFO]: Saving current set of views in '../work/runs/wokwi/results/final'...
[INFO]: Saving runtime environment...
[INFO]: Generating final set of reports...
Error: : Failed to create manufacturability and metric reports:
Error: : Traceback (most recent call last):
File "/openlane/scripts/generate_reports.py", line 184, in <module>
cli()
File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1128, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1053, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.6/site-packages/click/core.py", line 754, in invoke
return __callback(*args, **kwargs)
File "/openlane/scripts/generate_reports.py", line 51, in cli
report = Report(design, tag, design_name, params, run_path).get_report()
File "/openlane/scripts/report/report.py", line 141, in __init__
None, design_path, tag, full=True
File "/openlane/scripts/config/config.py", line 94, in get_config_for_run
config = read_tcl_env(config_path)
File "/openlane/scripts/config/tcl.py", line 339, in read_tcl_env
string_data = open(config_path).read()
FileNotFoundError: [Errno 2] No such file or directory: '/work/src/runs/wokwi/config.tcl'
[SUCCESS]: Flow complete.
[INFO]: Note that the following warnings have been generated:
Description
First tag it started breaking: 2023.03.28 Last tag it worked as expected: 2023.03.24
Command line given: /bin/bash -c "./flow.tcl -overwrite -design /work/src -run_path /work/runs -tag wokwi
$ find -name "*.tcl" ./runs/wokwi/config.tcl ./runs/wokwi/config_in.tcl ./runs/wokwi/reports/signoff/drc.tcl ./src/config.tcl ./src/user_config.tcl
It started to try and lookup the path: /work/src/runs/wokwi/config.tcl
But that does not exist.
$ grep config.tcl ./src/user_config.tcl $ grep config.tcl ./src/config.tcl source $::env(DESIGN_DIR)/user_config.tcl $ grep config.tcl runs/wokwi/config.tcl set ::env(DESIGN_CONFIG) {/work/src/config.tcl} set ::env(GLB_CFG_FILE) {/work/runs/wokwi/config.tcl} set ::env(DESIGN_CONFIG) {/work/src/config.tcl} set ::env(GLB_CFG_FILE) {/work/runs/wokwi/config.tcl}
./runs/wokwi/config.tcl:154:set ::env(LOGS_DIR) {/work/runs/wokwi/logs} ./runs/wokwi/config.tcl:235:set ::env(REPORTS_DIR) {/work/runs/wokwi/reports} ./runs/wokwi/config.tcl:236:set ::env(RESULTS_DIR) {/work/runs/wokwi/results} ./runs/wokwi/config.tcl:247:set ::env(RUN_DIR) {/work/runs/wokwi} ./runs/wokwi/config.tcl:302:set ::env(TMP_DIR) {/work/runs/wokwi/tmp} ./runs/wokwi/config.tcl:385:set ::env(CURRENT_DIR) {/work/runs/wokwi/tmp/routing} ./runs/wokwi/config.tcl:403:set ::env(DESIGN_DIR) {/work/src} ./runs/wokwi/config.tcl:537:set ::env(LOGS_DIR) {/work/runs/wokwi/logs} ./runs/wokwi/config.tcl:641:set ::env(REPORTS_DIR) {/work/runs/wokwi/reports} ./runs/wokwi/config.tcl:642:set ::env(RESULTS_DIR) {/work/runs/wokwi/results} ./runs/wokwi/config.tcl:655:set ::env(RUN_DIR) {/work/runs/wokwi} ./runs/wokwi/config.tcl:670:set ::env(SCRIPTS_DIR) {/openlane/scripts} ./runs/wokwi/config.tcl:717:set ::env(TMP_DIR) {/work/runs/wokwi/tmp}
This line here has not been changed recently, but appears to be looking up the DESIGN_CONFIG path ?
https://github.com/The-OpenROAD-Project/OpenLane/blob/master/scripts/report/report.py#L119
This section here is where the file open fails:
https://github.com/The-OpenROAD-Project/OpenLane/blob/master/scripts/config/config.py#L93
Expected Behavior
For the error in log not to occur and metrics.csv to be generated.
Environment report
Reproduction material
Simply make your -design and -run_path 2 different directories and provide them as options to specify to the flow.tcl.
Relevant log output