The-OpenROAD-Project / OpenROAD

OpenROAD's unified application implementing an RTL-to-GDS Flow. Documentation at https://openroad.readthedocs.io/en/latest/
https://theopenroadproject.org/
BSD 3-Clause "New" or "Revised" License
1.51k stars 527 forks source link

Resizer Crash #3155

Open donn opened 1 year ago

donn commented 1 year ago

Describe the bug

OpenROAD crashes somewhere when attempting the resizer post-GRT.

Expected Behavior

OpenROAD should not crash.

Environment

Git commit: 76dc134307d935d6516eb6679dff72c6cfb13915
kernel: Linux 6.0.19
os: NixOS 22.11 (Raccoon)
cmake version 3.24.3
-- The CXX compiler identification is Clang 11.1.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/naqfglx95i283dwna1zzqfrq3zgyfg89-clang-wrapper-11.1.0/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- OpenROAD version: v2.0-7643-g76dc13430
-- System name: Linux
-- Compiler: Clang 11.1.0
-- Build type: RELEASE
-- Install prefix: /var/empty/local
-- C++ Standard: 17
-- C++ Standard Required: ON
-- C++ Extensions: OFF
-- Found GTest: /nix/store/4lmdm9a44cwa14jmwqi2wffxkjgl388a-gtest-1.12.1-dev/lib/cmake/GTest/GTestConfig.cmake (found version "1.12.1")  
-- The C compiler identification is Clang 11.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /nix/store/naqfglx95i283dwna1zzqfrq3zgyfg89-clang-wrapper-11.1.0/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Performing Test C_COMPILER_SUPPORTS__-Wall
-- Performing Test C_COMPILER_SUPPORTS__-Wall - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wall
-- Performing Test CXX_COMPILER_SUPPORTS__-Wall - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-array-bounds
-- Performing Test C_COMPILER_SUPPORTS__-Wno-array-bounds - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-array-bounds
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-array-bounds - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-nonnull
-- Performing Test C_COMPILER_SUPPORTS__-Wno-nonnull - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-nonnull
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-nonnull - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-maybe-uninitialized
-- Performing Test C_COMPILER_SUPPORTS__-Wno-maybe-uninitialized - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized - Failed
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow - Failed
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-variable
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-variable - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-variable
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-variable - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-function
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-function - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-function
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-function - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-write-strings
-- Performing Test C_COMPILER_SUPPORTS__-Wno-write-strings - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-write-strings
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-write-strings - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-sign-compare
-- Performing Test C_COMPILER_SUPPORTS__-Wno-sign-compare - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-sign-compare
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-sign-compare - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-deprecated
-- Performing Test C_COMPILER_SUPPORTS__-Wno-deprecated - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-deprecated
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-deprecated - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-c++11-narrowing
-- Performing Test C_COMPILER_SUPPORTS__-Wno-c++11-narrowing - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-register
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-register - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-CMake Warning at src/CMakeLists.txt:226 (message):
  spdlog: SPDLOG_FMT_EXTERNAL=ON

CMake Error at /nix/store/bjnxp0pm2xdgsmv4m8bb2y60bjd1irc2-boost-1.79.0-dev/lib/cmake/Boost-1.79.0/BoostConfig.cmake:141 (find_package):
  Found package configuration file:

    /nix/store/bjnxp0pm2xdgsmv4m8bb2y60bjd1irc2-boost-1.79.0-dev/lib/cmake/boost_serialization-1.79.0/boost_serialization-config.cmake

  but it set boost_serialization_FOUND to FALSE so package
  "boost_serialization" is considered to be NOT FOUND.  Reason given by
  package:

  No suitable build variant has been found.

  The following variants have been tried and rejected:

  * libboost_serialization.so.1.79.0 (shared, Boost_USE_STATIC_LIBS=ON)

Call Stack (most recent call first):
  /nix/store/bjnxp0pm2xdgsmv4m8bb2y60bjd1irc2-boost-1.79.0-dev/lib/cmake/Boost-1.79.0/BoostConfig.cmake:262 (boost_find_component)
  /nix/store/0257lz452871n4sp11afxfhm1g94dj4b-cmake-3.24.3/share/cmake-3.24/Modules/FindBoost.cmake:594 (find_package)
  src/drt/CMakeLists.txt:49 (find_package)

format
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal
-- Performing Test C_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal - Success
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-fpermissive
-- Performing Test CXX_COMPILER_SUPPORTS__-fpermissive - Success
-- Performing Test C_COMPILER_SUPPORTS__-x
-- Performing Test C_COMPILER_SUPPORTS__-x - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-x
-- Performing Test CXX_COMPILER_SUPPORTS__-x - Failed
-- Performing Test C_COMPILER_SUPPORTS__c++
-- Performing Test C_COMPILER_SUPPORTS__c++ - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__c++
-- Performing Test CXX_COMPILER_SUPPORTS__c++ - Failed
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-but-set-variable
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-but-set-variable - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-but-set-variable
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-but-set-variable - Failed
-- TCL library: /nix/store/378rxqdx6lh4swhw49ifbilc6hbk7h2r-tcl-8.6.11/lib/libtcl.so
-- TCL header: /nix/store/378rxqdx6lh4swhw49ifbilc6hbk7h2r-tcl-8.6.11/include/tcl.h
-- TCL readline library: /nix/store/90fgbs1df2m2m7x0p40s35fviz1y3kj4-tclreadline-2.3.8/lib/libtclreadline.so
-- TCL readline header: /nix/store/90fgbs1df2m2m7x0p40s35fviz1y3kj4-tclreadline-2.3.8/include
-- Found SWIG: /nix/store/b31v2mp1mla6qbiwjlgixjnh5x426aw8-swig-3.0.12/bin/swig (found suitable version "3.0.12", minimum required is "3.0")  
-- Found Boost: /nix/store/bjnxp0pm2xdgsmv4m8bb2y60bjd1irc2-boost-1.79.0-dev/lib/cmake/Boost-1.79.0/BoostConfig.cmake (found version "1.79.0")  
-- boost: 1.79.0
-- Found Python3: /nix/store/65cp4izx3bllnwqn7c7dhrq9h9gmjkal-python3-3.10.9/include/python3.10 (found version "3.10.9") found components: Development Development.Module Development.Embed 
-- Found ZLIB: /nix/store/fblaj5ywkgphzpp5kx41av32kls9256y-zlib-1.2.13/lib/libz.so (found version "1.2.13") 
-- Found Threads: TRUE  
-- spdlog: 1.10.0
-- Found BISON: /nix/store/1gl7s2jiq3hfliz3giv7hwc6gwl8w5p2-bison-3.8.2/bin/bison (found version "3.8.2") 
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- STA version: 2.4.0
-- STA git sha: 882681a674e7089e5f02de4ba2050c6be32b6cd1
-- System name: Linux
-- Compiler: Clang 11.1.0
-- Build type: RELEASE
-- Build CXX_FLAGS: -O3 -DNDEBUG
-- Install prefix: /var/empty/local
-- Found FLEX: /nix/store/5lzf74h8ygk5y5r1cn8a6qc9567cwcw1-flex-2.6.4/bin/flex (found version "2.6.4") 
-- TCL library: /nix/store/378rxqdx6lh4swhw49ifbilc6hbk7h2r-tcl-8.6.11/lib/libtcl.so
-- TCL header: /nix/store/378rxqdx6lh4swhw49ifbilc6hbk7h2r-tcl-8.6.11/include/tcl.h
-- SSTA: 0
-- STA executable: /home/donn/efabless/openroad/src/sta/app/sta
-- GPU is not enabled
-- Found Protobuf: /nix/store/lyklcycj3jdbg6bp80n7pjivizzcfr0c-protobuf-3.21.8/lib/libprotobuf.so (found version "3.21.8") 
-- Found re2: /nix/store/7b2zq7xn1yayhxmrwgsxklfckxyzhfqv-re2-2022-06-01-dev/lib/cmake/re2/re2Config.cmake (found version "9.0.0") 
-- Found GLPK: /nix/store/ycwzcwxr4a3ldpa7b19ypp9zpcxx4gql-glpk-5.0/lib/libglpk.so  
-- Found Eigen3: /nix/store/gzbmbqgjgqm91syx80vn8lzj6gmljw5q-eigen-3.4.0/share/eigen3/cmake/Eigen3Config.cmake (found version "3.4.0") 
-- GUI is enabled

To Reproduce

repro.tar.gz

Relevant log output

OpenROAD 76dc134307d935d6516eb6679dff72c6cfb13915 
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.
[INFO] Setting RC values…
/nix/store/s652h8znmysdbxcmwlzzcwrj6bb1xyln-gcc-11.3.0/include/c++/11.3.0/bits/stl_vector.h:1045: std::vector::reference std::vector<grt::StTree, std::allocator<grt::StTree>>::operator[](std::vector::size_type) [_Tp = grt::StTree, _Alloc = std::allocator<grt::StTree>]: Assertion '__n < this->size()' failed.
Signal 6 received
Stack trace:
 0# 0x0000000000C00BFE in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
 1# 0x00007F3F49C3DBF0 in /nix/store/9xfad3b5z4y00mzmk2wnn4900q0qmxns-glibc-2.35-224/lib/libc.so.6
 2# 0x00007F3F49C8ABC7 in /nix/store/9xfad3b5z4y00mzmk2wnn4900q0qmxns-glibc-2.35-224/lib/libc.so.6
 3# raise in /nix/store/9xfad3b5z4y00mzmk2wnn4900q0qmxns-glibc-2.35-224/lib/libc.so.6
 4# abort in /nix/store/9xfad3b5z4y00mzmk2wnn4900q0qmxns-glibc-2.35-224/lib/libc.so.6
 5# 0x0000000000BEF54F in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
 6# grt::FastRouteCore::releaseNetResources(int) in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
 7# grt::FastRouteCore::clearNetRoute(int) in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
 8# grt::FastRouteCore::addNet(odb::dbNet*, bool, int, int, int, int, float, std::vector<int, std::allocator<int> >*) in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
 9# grt::GlobalRouter::makeFastrouteNet(grt::Net*) in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
10# grt::GlobalRouter::initNets(std::vector<grt::Net*, std::allocator<grt::Net*> >&) in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
11# grt::GlobalRouter::updateDirtyRoutes() in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
12# rsz::Resizer::updateParasitics() in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
13# rsz::RepairSetup::repairSetup(float, double, int) in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
14# 0x0000000000D6BA5A in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
15# TclNRRunCallbacks in /nix/store/378rxqdx6lh4swhw49ifbilc6hbk7h2r-tcl-8.6.11/lib/libtcl.so
16# 0x00007F3F4CF6EBC6 in /nix/store/378rxqdx6lh4swhw49ifbilc6hbk7h2r-tcl-8.6.11/lib/libtcl.so
17# Tcl_EvalEx in /nix/store/378rxqdx6lh4swhw49ifbilc6hbk7h2r-tcl-8.6.11/lib/libtcl.so
18# Tcl_Eval in /nix/store/378rxqdx6lh4swhw49ifbilc6hbk7h2r-tcl-8.6.11/lib/libtcl.so
19# sta::sourceTclFile(char const*, bool, bool, Tcl_Interp*) in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
20# ord::tclAppInit(Tcl_Interp*) in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
21# Tcl_MainEx in /nix/store/378rxqdx6lh4swhw49ifbilc6hbk7h2r-tcl-8.6.11/lib/libtcl.so
22# main in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
23# 0x00007F3F49C2924E in /nix/store/9xfad3b5z4y00mzmk2wnn4900q0qmxns-glibc-2.35-224/lib/libc.so.6
24# __libc_start_main in /nix/store/9xfad3b5z4y00mzmk2wnn4900q0qmxns-glibc-2.35-224/lib/libc.so.6
25# _start in /nix/store/a61av2sd6wqzqdkf5x2ifbcvjql14wmc-openroad/bin/openroad
./run.sh: line 67: 1263189 Aborted                 (core dumped) openroad -exit -metrics or_metrics_out.json $PACKAGED_SCRIPT_0

Screenshots

No response

Additional Context

No response

openroadie commented 1 year ago

@maliberty This looks like an issue in the router and not the resizer code.

luis201420 commented 1 year ago

I found the problem, this happens because GRT is not executed before. The GRT information is read from the db file but some data is not being updated. I'm going to update that.

maliberty commented 1 year ago

@donn repair_timing is going to need incremental global routing which is not available when reloading from a db today. When I look at scripts/openroad/resizer_routing_timing.tcl I see you are calling them both in one run. Is there a need for it to work on reload?

I'm inclined to make this an error unless there is a strong case for it.

donn commented 1 year ago

The thing is this works for sky130, it has only been when I tried this specific design for GF180 that this issue happened. Do you have more specifics as to when this is needed?

I'm not opposed to just re-running GRT.

maliberty commented 1 year ago

I don't see why it would be pdk dependent. I would have thought it is always needed.

I don't see where in OL this actually required though.