Hi, I have an issue with Openlane. But I don't kno...
# openlane
b
Hi, I have an issue with Openlane. But I don't know if it is worth opening an 'Issue' on the github repo. When I run
make -j8 user_proj_example
, I get this:
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
Why does it say
[INFO]: Version: N/A
? I recently updated my
caravel_user_project
,
OpenLANE
,
skywater-pdk
and
open-pdks
to the latest required versions. I also don't understand why it says
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
. When I check manually, the file is there. For your information, when I run
python3 ./env.py issue-survey
, this is what it gives:
Copy code
0 1
2 3
4 5
Python: v3.8.10
Kernel: Linux v5.11.0-37-generic
Distribution: ubuntu 20.04
Container Engine: docker v20.10.8
OpenLane Git Version: 2021.10.25_20.35.00
---
PDK Version Verification Status: OK

---
Git Log (Last 5 Commits)

commit e8f4a88f668b366f126bba40861153bf478a33c1
Author: Donn <me@donn.website>
Date:   Mon Oct 25 20:32:41 2021 +0200

    Last Minute Fixes for MPW3 (#675)

commit 003992ec399fded0eca7bdc88c54f6a86938c7be
Author: Manar <manarabdelatty@aucegypt.edu>
Date:   Mon Oct 25 09:44:59 2021 -0500

    Update timing signoff methodology (#674)
    
    - Removed the `-min/-max` options from read_liberty since they shouldn't be used for modeling different process corners (<https://github.com/The-OpenROAD-Project/OpenLane/issues/671>).
    - Updated the base SDC file to include information about clock uncertainty, clock transition, and timing derate.
    - Updated the timing/design optimizations to be done at the typical corner.
    - Updated the STA script to generate the SDF file after the routing is concluded.
    - Updated the STA script to report more information like clock skew, worst slack, power, area.
    - Added some fixes to the report generation to retain the log file index so that we can easily keep track of when the reports are generated.

commit 6d85a85eac1a1b97a7f07f4992d162054690cbda
Author: Donn <me@donn.website>
Date:   Mon Oct 25 14:45:52 2021 +0200

    Docker Overhaul (#673)
    
    This makes a number of internal improvements to the docker build process.
    
    * A common build base
    
    This common build base utilizes the dependency list outlined in `/dependencies` for both yum and pip, with the exception of cu-gr and dr-cu which use an... interesting (read: obtuse) build system. Speaking of...
    
    * A pre-compile dependency list
    
    This allows for the installing of dependencies that may need to be needed to compile *other* dependencies, incl. wheel, pyinstaller, devtoolset, etc.
    
    * Builds now use tarballs
    
    Git is no longer used, saving us the time needed to check out the *entire commit history every single time we build.* To handle submodules, I wrote a special script. Only OpenROAD uses submodules anyhow.
    
    * Rewrote final image
    
    The final image's Dockerfile was a mess. The new one also uses the dependency list and is better organized.
    
    * OpenLane is now mounted to `/openlane` instead of `/openLANE_flow`
    
    We don't really use `openLANE`, branding was settled on `OpenLane`, except I think it's better for everyone's sanity if I avoid capital letters altogether.

commit 678cf7c901bf79a589f2eede4b425e7487bde51c
Author: Donn <me@donn.website>
Date:   Mon Oct 25 13:32:02 2021 +0200

    Clarify whether the issue template is a suggestion or not (#672)
    
    (its not) [skip ci]

commit 2e6f34032f673d22b3ccac0e208882d1b542e6d3
Author: Donn <me@donn.website>
Date:   Fri Oct 22 16:17:54 2021 +0200

    Fix RTD link [skip ci] (#668)
Thanks.
v
have you set right path to export OPENLANE_ROOT= " path to openlane installation"
export PDK_ROOT="PDK path"
N/A is not available. not sourced openlane properly
b
Yes, I have set them in my
.bashrc
file and when I echo those variables, I get the right path.
m
@User There appear to be two files that are being treated as one.
/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
. I don't know if it's a problem on your end or with the
hvl
library setup.
b
Yes, in the folder
/sky130_fd_sc_hvl/lib
the two named files are there. But how do you say they are being treated as one?
m
@User What are your
LIB_SYNTH
and
LIB_SYNTH_COMPLETE
set to?
b
@User Where I do find them? in my
config.tcl
file, I don't find them. I have only set this:
Copy code
set ::env(STD_CELL_LIBRARY) "sky130_fd_sc_hvl"
As far as I know, a
config.tcl
file is generated when the flow starts with all the configuration variables set. But that is not being generated in my case because the run stops immediately after it starts.
m
Thanks for the info. I'll dig a little deeper.
Looks like this is a new bug. I'll log an issue.
b
@User When I run the flow using
sky130_fd_sc_hd
, I get the GDS and flow is complete with zero violations. So, I think it is the issue with the library. Do you suggest I open an issue on the github repo? Because Manar Abdelatty told me to do so earlier. But I did not have an updated version of Openlane. So, I updated and tried it now.
Oh, okay. Thank you very much. Our team is very much in need of high voltage logic. We would be grateful if this could be resolved as soon as possible.
m
@User I just logged it. You can check to see if it is ok. As you can see from the issue, the problem appears to be 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)
            }
        }
First
LIB_RESIZER_OPT
is set to an empty file name
resizer.lib
. Then an attempt to copy
LIB_SYNTH_COMPLETE
to this empty file is made. However, with the
hvl
library, it looks like
LIB_SYNTH_COMPLETE
is a list (this is what causes your error). Later, it looks like
LIB_RESIZER_OPT
is treated as a list when
LIB_SYNTH_OPT
is appended. You might try this
Copy code
# trim resizer library
        if { ! [info exists ::env(LIB_RESIZER_OPT) ] } {
            set ::env(LIB_RESIZER_OPT) $::env(LIB_SYNTH_COMPLETE)  # change this
            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)
            }
        }
No guarantees.