<#683 flow.tcl no longer handles multiple simulati...
# openlane
g
#683 flow.tcl no longer handles multiple simulation libraries. New issue created by d-m-bailey Description An attempt to copy
LIB_SYNTH_COMPLETE
as a file fails because it may be a list of files. In
scripts/tcl_commands/all.tcl
Copy code
# trim resizer library
        if { ! [info exists ::env(LIB_RESIZER_OPT) ] } {
            set ::env(LIB_RESIZER_OPT) $::env(TMP_DIR)/resizer.lib
            file copy -force $::env(LIB_SYNTH_COMPLETE) $::env(LIB_RESIZER_OPT)       <- Attempt to copy list of files
            if { $::env(STD_CELL_LIBRARY_OPT) != $::env(STD_CELL_LIBRARY) } {
                set opt_lib $::env(TMP_DIR)/resizer_optlib.lib
                file copy -force $::env(LIB_SYNTH_OPT) $opt_lib
                lappend $::env(LIB_RESIZER_OPT) $::env(LIB_SYNTH_OPT)
            }
        }
For reference, here is how
SYNTH_LIB_COMPLETE
is handled in
scripts/tcl_commands/synthesis.tcl
Copy code
set ::env(LIB_SYNTH_COMPLETE_NO_PG) [list]
        foreach lib $::env(LIB_SYNTH_COMPLETE) {
                set fbasename [file rootname [file tail $lib]]
                convert_pg_pins $lib $::env(TMP_DIR)/$fbasename.no_pg.lib
                lappend ::env(LIB_SYNTH_COMPLETE_NO_PG) $::env(TMP_DIR)/$fbasename.no_pg.lib
        }
From slack thread started by Sribooshan Srinivasan https://skywater-pdk.slack.com/archives/C016H8WJMBR/p1635575865070700 Environment The actual error occurred on someone's EWS. However, I can verify the problem in the following installation.
Copy code
Python: v3.7.3
Kernel: Linux v4.19.0-17-cloud-amd64
Distribution: debian 10
Container Engine: docker v20.10.7
OpenLane Git Version: 2021.10.25_20.35.00

Alert: Click is not installed.
---
PDK Version Verification Status: FAILED

Failed to compare PDKS
Environment variable PDK_ROOT is not set.
Traceback (most recent call last):
  File "/home/kanobailey/pull-requests/openlane/dependencies/verify_versions.py", line 55, in verify_versions
    raise Exception("Environment variable PDK_ROOT is not set.")
Exception: Environment variable PDK_ROOT is not set.

Failed to compare PDKs: Failed to compare PDKs.---
Git Log (Last 5 Commits)

commit ff6eec246a18d007bf450e94f289a460425a2883
Author: Manar <manarabdelatty@aucegypt.edu>
Date:   Thu Oct 28 11:06:49 2021 -0500

    Unify the way we are running STA  (#681)
    
    * Fix genericfir timing vios
    
    * Run sta inside the step script

commit 8d686c081c2c9aefa16dbbd8ccf5bc8f4dcabc4b
Author: Manar <manarabdelatty@aucegypt.edu>
Date:   Wed Oct 27 08:12:35 2021 -0500

    Update openroad + add multi-corner timing analysis (#680)
    
    * Update OR App
    
    * Fix overflow iterations
    
    * Fix repair_tie_fanout command
    
    * Update design config
    
    * Add multi-corner analysis

commit 683151cc9e601c2f2d774fbcc53cf23060787a41
Author: Vitor Bandeira <vvbandeira@users.noreply.github.com>
Date:   Wed Oct 27 09:36:07 2021 -0300

    Make sure docker logs dir exists (#679)
    
    Signed-off-by: Vitor Bandeira <vitor.vbandeira@gmail.com>
    
    [skip ci]

commit 354a25f7743fe68fa02f6337a922594ac41b7cee
Author: Manar <manarabdelatty@aucegypt.edu>
Date:   Tue Oct 26 09:57:47 2021 -0500

    Update resizer options (#678)
    
    * Update design configuration to address timing violations
    
    * update resizer scripts
    
    - added repair_tie_fanout command
    - added catch to the repair_timing commands to prevent exiting when the utilization limit is reached
    
    * Reset routing_cores to 2

commit c0b75f5f37717201f90396efe835e1978e32dbe6
Author: Anton Blanchard <anton@ozlabs.org>
Date:   Wed Oct 27 00:11:33 2021 +1100

    Fix typo in python exit call (#677)
    
    In commit 4e158a77ef7a ("Quit on timing violations at the typical
    corner (#659)"), os.EX_DATA should have been os.EX_DATAERR.
Reproduction Material Any design with the
sky130_fd_sc_hvl
libraries will probably give the same error. Expected behavior Should be able to handle multiple simulation libraries, I assume. Logs From the slack conversation.
Copy code
###############################################
[INFO]: 
	 ___   ____   ___  ____   _       ____  ____     ___
	/   \ |    \ /  _]|    \ | |     /    ||    \   /  _]
	|   | |  o  )  [_ |  _  || |    |  o  ||  _  | /  [_
	| O | |   _/    _]|  |  || |___ |     ||  |  ||    _]
	|   | |  | |   [_ |  |  ||     ||  _  ||  |  ||   [_
	\___/ |__| |_____||__|__||_____||__|__||__|__||_____|


[INFO]: Version: N/A
[INFO]: Running non-interactively
[INFO]: Using design configuration at /project/openlane/user_proj_example/config.tcl
[INFO]: Sourcing Configurations from /project/openlane/user_proj_example/config.tcl
[INFO]: PDKs root directory: /home/booshan/OpenEDA
[INFO]: PDK: sky130A
[INFO]: Setting PDKPATH to /home/booshan/OpenEDA/sky130A
[INFO]: Standard Cell Library: sky130_fd_sc_hvl
[INFO]: Optimization Standard Cell Library is set to: sky130_fd_sc_hvl
[INFO]: Sourcing Configurations from /project/openlane/user_proj_example/config.tcl
[WARNING]: Removing exisiting run /project/openlane/user_proj_example/runs/user_proj_example
[INFO]: Current run directory is /project/openlane/user_proj_example/runs/user_proj_example
[INFO]: Preparing LEF Files
[INFO]: Extracting the number of available metal layers from /home/booshan/OpenEDA/sky130A/libs.ref/sky130_fd_sc_hvl/techlef/sky130_fd_sc_hvl.tlef
[INFO]: The number of available metal layers is 6
[INFO]: The available metal layers are li1 met1 met2 met3 met4 met5
[INFO]: Merging LEF Files...
mergeLef.py : Merging LEFs
sky130_fd_sc_hvl.lef: SITEs matched found: 0
sky130_fd_sc_hvl.lef: MACROs matched found: 69
mergeLef.py : Merging LEFs complete
[INFO]: Trimming Liberty...
[INFO]: Generating Exclude List...
error copying " /home/booshan/OpenEDA/sky130A/libs.ref/sky130_fd_sc_hvl/lib/sky130_fd_sc_hvl__tt_025C_3v30.lib /home/booshan/OpenEDA/sky130A/libs.ref/sky130_fd_sc_hvl/lib/sky130_fd_sc_hvl__tt_025C_3v30_lv1v80.lib ": no such file or directory
    while executing
"file copy -force $::env(LIB_SYNTH_COMPLETE) $::env(LIB_RESIZER_OPT)"
    (procedure "prep" line 202)
    invoked from within
"prep {*}$args"
    (procedure "run_non_interactive_mode" line 14)
    invoked from within
"run_non_interactive_mode {*}$argv"
    invoked from within
"if { [info exists flags_map(-interactive)] || [info exists flags_map(-it)] } {
	puts_info "Running interactively"
	if { [info exists arg_values(-file)..."
    (file "/openlane/flow.tcl" line 356)
make: *** [Makefile:43: user_proj_example] Error 1
The-OpenROAD-Project/OpenLane