OpenROAD icon indicating copy to clipboard operation
OpenROAD copied to clipboard

rsz: repair_design crashes druing global placement in hierarchical flow

Open jhkim-pii opened this issue 2 weeks ago • 2 comments

Describe the bug

In hierarchical flow (OPENROAD_HIERARCHICAL=1), nangate45/bp_multi_top crashes during global placement.

Problematic designs

  • nangate45/bp_multi_top
  • nangate45/black_parrot

bp_multi_top - crash log

/workspace/clean/OpenROAD-flow-scripts/flow/scripts/flow.sh 3_3_place_gp global_place
Running global_place.tcl, stage 3_3_place_gp
read_liberty ./platforms/nangate45/lib/NangateOpenCellLibrary_typical.lib
read_liberty ./platforms/nangate45/lib/fakeram45_512x64.lib
read_liberty ./platforms/nangate45/lib/fakeram45_256x96.lib
read_liberty ./platforms/nangate45/lib/fakeram45_32x64.lib
read_liberty ./platforms/nangate45/lib/fakeram45_64x7.lib
read_liberty ./platforms/nangate45/lib/fakeram45_64x15.lib
read_liberty ./platforms/nangate45/lib/fakeram45_64x96.lib
read_db -hier ./results/nangate45/bp_multi/base/3_2_place_iop.odb
[WARNING ORD-0012] Hierarchical flow (-hier) is currently in development and may cause multiple issues. Do not use in production environments.
[INFO RSZ-0026] Removed 10979 buffers.
Perform port buffering...
[INFO RSZ-0027] Inserted 701 BUF_X1 input buffers.
[INFO RSZ-0028] Inserted 612 BUF_X1 output buffers.
[INFO GPL-0022] Initialize gpl and calculate uniform density.
Placement density is 0.3260000011324883, computed from PLACE_DENSITY_LB_ADDON  0.05 and lower bound 0.2800000011920929
global_placement -density 0.3260000011324883 -pad_left 0 -pad_right 0 -routability_driven -timing_driven
[INFO GPL-0005] Execute conjugate gradient initial placement.
[INFO GPL-0002] DBU: 2000
[INFO GPL-0003] SiteSize: (  0.190  1.400 ) um
[INFO GPL-0004] CoreBBox: ( 10.070  9.800 ) ( 1089.840 1089.200 ) um
[INFO GPL-0032] Initializing region: Top-level
[INFO GPL-0006] Number of instances:            127720
[INFO GPL-0007] Movable instances:              113001
[INFO GPL-0008] Fixed instances:                  7646
[INFO GPL-0009] Dummy instances:                  7073
[INFO GPL-0010] Number of nets:                 132085
[INFO GPL-0011] Number of pins:                 397314
[INFO GPL-0012] Die BBox:  (  0.000  0.000 ) ( 1100.000 1100.000 ) um
[INFO GPL-0013] Core BBox: ( 10.070  9.800 ) ( 1089.840 1089.200 ) um
[INFO GPL-0016] Core area:                  1165503.738 um^2
[INFO GPL-0014] Region name: top-level.
[INFO GPL-0015] Region area:                1165503.738 um^2
[INFO GPL-0017] Fixed instances area:       459153.506 um^2
[INFO GPL-0018] Movable instances area:     191647.188 um^2
[INFO GPL-0019] Utilization:                    27.132 %
[INFO GPL-0020] Standard cells area:        191647.188 um^2
[INFO GPL-0021] Large instances area:            0.000 um^2
[InitialPlace]  Iter: 1 conjugate gradient residual: 0.00619493 HPWL: 9479702759
[InitialPlace]  Iter: 2 conjugate gradient residual: 0.00041897 HPWL: 8418299493
[InitialPlace]  Iter: 3 conjugate gradient residual: 0.00022328 HPWL: 7930775534
[InitialPlace]  Iter: 4 conjugate gradient residual: 0.00024691 HPWL: 7496715702
[InitialPlace]  Iter: 5 conjugate gradient residual: 0.00022908 HPWL: 7101344338
[InitialPlace]  Iter: 6 conjugate gradient residual: 0.00017295 HPWL: 6780012973
[InitialPlace]  Iter: 7 conjugate gradient residual: 0.00017400 HPWL: 6521345117
[InitialPlace]  Iter: 8 conjugate gradient residual: 0.00019038 HPWL: 6309649071
[InitialPlace]  Iter: 9 conjugate gradient residual: 0.00016743 HPWL: 6174716196
[InitialPlace]  Iter: 10 conjugate gradient residual: 0.00008973 HPWL: 6067799135
[InitialPlace]  Iter: 11 conjugate gradient residual: 0.00007481 HPWL: 5972712101
[InitialPlace]  Iter: 12 conjugate gradient residual: 0.00007841 HPWL: 5915727542
[InitialPlace]  Iter: 13 conjugate gradient residual: 0.00007113 HPWL: 5883610924
[InitialPlace]  Iter: 14 conjugate gradient residual: 0.00004952 HPWL: 5863416225
[InitialPlace]  Iter: 15 conjugate gradient residual: 0.00004361 HPWL: 5850936616
[InitialPlace]  Iter: 16 conjugate gradient residual: 0.00004605 HPWL: 5841581613
[InitialPlace]  Iter: 17 conjugate gradient residual: 0.00004091 HPWL: 5835553455
[InitialPlace]  Iter: 18 conjugate gradient residual: 0.00004210 HPWL: 5831230246
[InitialPlace]  Iter: 19 conjugate gradient residual: 0.00003354 HPWL: 5826447348
[InitialPlace]  Iter: 20 conjugate gradient residual: 0.00003056 HPWL: 5821613914
[INFO GPL-0033] Initializing Nesterov region: Top-level
[INFO GPL-0023] Placement target density:       0.3260
[INFO GPL-0024] Movable insts average area:      1.696 um^2
[INFO GPL-0025] Ideal bin area:                  5.202 um^2
[INFO GPL-0026] Ideal bin count:                224032
[INFO GPL-0027] Total bin area:             1165503.738 um^2
[INFO GPL-0028] Bin count (X, Y):         256 ,    256
[INFO GPL-0029] Bin size (W * H):       4.218 *  4.216 um
[INFO GPL-0030] Number of bins:                  65536
[INFO GPL-0007] Execute nesterov global placement.
[INFO GPL-0031] HPWL: Half-Perimeter Wirelength
Iteration | Overflow |     HPWL (um) |  HPWL(%) |   Penalty | Group
---------------------------------------------------------------
        0 |   0.9312 |  2.202136e+06 |   +0.00% |  7.68e-15 |      
       10 |   0.8682 |  2.778397e+06 |  +26.17% |  1.03e-14 |      
       20 |   0.8384 |  2.877640e+06 |   +3.57% |  1.64e-14 |      
       30 |   0.8245 |  2.921236e+06 |   +1.52% |  2.64e-14 |      
       40 |   0.8184 |  2.939500e+06 |   +0.63% |  4.28e-14 |      
       50 |   0.8188 |  2.939144e+06 |   -0.01% |  6.98e-14 |      
       60 |   0.8215 |  2.939618e+06 |   +0.02% |  1.14e-13 |      
       70 |   0.8224 |  2.943508e+06 |   +0.13% |  1.85e-13 |      
       80 |   0.8249 |  2.950075e+06 |   +0.22% |  3.01e-13 |      
       90 |   0.8257 |  2.955449e+06 |   +0.18% |  4.89e-13 |      
      100 |   0.8247 |  2.957504e+06 |   +0.07% |  7.97e-13 |      
      110 |   0.8242 |  2.956829e+06 |   -0.02% |  1.30e-12 |      
      120 |   0.8226 |  2.953977e+06 |   -0.10% |  2.11e-12 |      
      130 |   0.8212 |  2.949700e+06 |   -0.14% |  3.44e-12 |      
      140 |   0.8185 |  2.946673e+06 |   -0.10% |  5.61e-12 |      
      150 |   0.8153 |  2.946169e+06 |   -0.02% |  9.14e-12 |      
      160 |   0.8099 |  2.949267e+06 |   +0.11% |  1.49e-11 |      
      170 |   0.8016 |  2.956150e+06 |   +0.23% |  2.42e-11 |      
      180 |   0.7882 |  2.963884e+06 |   +0.26% |  3.93e-11 |      
      190 |   0.7696 |  2.970276e+06 |   +0.22% |  6.40e-11 |      
      200 |   0.7440 |  2.969277e+06 |   -0.03% |  1.04e-10 |      
      210 |   0.7130 |  2.950313e+06 |   -0.64% |  1.70e-10 |      
      220 |   0.6768 |  2.923744e+06 |   -0.90% |  2.76e-10 |      
      230 |   0.6351 |  2.907154e+06 |   -0.57% |  4.50e-10 |      
[INFO GPL-0100] Timing-driven iteration 1/2, virtual: false.
[INFO GPL-0101]    Iter: 232, overflow: 0.631, keep resizer changes at: 1, HPWL: 5812637184
Iteration |   Area    | Resized | Buffers | Nets repaired | Remaining
---------------------------------------------------------------------
        0 |     +0.0% |       0 |       0 |             0 |    132085
Signal 11 received
Stack trace:
 0# 0x00005D2D01D3D1D3 in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
 1# 0x00007970B3645330 in /lib/x86_64-linux-gnu/libc.so.6
 2# std::_Rb_tree_increment(std::_Rb_tree_node_base const*) in /lib/x86_64-linux-gnu/libstdc++.so.6
 3# rsz::RepairDesign::repairDesign(double, double, double, bool, bool, int&, int&, int&, int&, int&) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
 4# rsz::Resizer::findResizeSlacks(bool) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
 5# gpl::TimingBase::executeTimingDriven(bool) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
 6# gpl::NesterovPlace::runTimingDriven(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int&, long&, bool) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
 7# gpl::NesterovPlace::doNesterovPlace(int) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
 8# gpl::Replace::doNesterovPlace(int, gpl::PlaceOptions const&, int) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
 9# replace_nesterov_place_cmd(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
10# 0x00005D2D01E24717 in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
11# TclNRRunCallbacks in /lib/x86_64-linux-gnu/libtcl8.6.so
12# 0x00007970B87C46BC in /lib/x86_64-linux-gnu/libtcl8.6.so
13# Tcl_EvalEx in /lib/x86_64-linux-gnu/libtcl8.6.so
14# Tcl_Eval in /lib/x86_64-linux-gnu/libtcl8.6.so
15# sta::sourceTclFile(char const*, bool, bool, Tcl_Interp*) in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
16# 0x00005D2D01D3CAA1 in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
17# Tcl_MainEx in /lib/x86_64-linux-gnu/libtcl8.6.so
18# main in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
19# 0x00007970B362A1CA in /lib/x86_64-linux-gnu/libc.so.6
20# __libc_start_main in /lib/x86_64-linux-gnu/libc.so.6
21# _start in /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/bin/openroad
Command terminated by signal 11
Elapsed time: 3:09.43[h:]min:sec. CPU time: user 4402.18 sys 91.53 (2372%). Peak memory: 946160KB.
make[1]: *** [Makefile:457: do-3_3_place_gp] Error 1
make: *** [Makefile:457: results/nangate45/bp_multi/base/3_3_place_gp.odb] Error 2

Expected Behavior

No crash

Environment

-- The CXX compiler identification is GNU 13.3.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- OpenROAD version: v2.0-26758-g6db0147224
-- System name: Linux
-- Compiler: GNU 13.3.0
-- Build type: RELEASE
-- Install prefix: /usr/local
-- C++ Standard: 20
-- C++ Standard Required: ON
-- C++ Extensions: OFF
-- The C compiler identification is GNU 13.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/gcc - 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 - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow - Success
-- 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 - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing - Failed
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-register
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-register - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-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 - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal - Failed
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive - Failed
-- 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 - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-but-set-variable
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-but-set-variable - Success
-- Performing Test C_COMPILER_SUPPORTS__-std=c++17
-- Performing Test C_COMPILER_SUPPORTS__-std=c++17 - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-std=c++17
-- Performing Test CXX_COMPILER_SUPPORTS__-std=c++17 - Success
-- Performing Test C_COMPILER_SUPPORTS__-fno-exceptions
-- Performing Test C_COMPILER_SUPPORTS__-fno-exceptions - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-fno-exceptions
-- Performing Test CXX_COMPILER_SUPPORTS__-fno-exceptions - Success
-- TCL library: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- TCL readline library: /usr/lib/x86_64-linux-gnu/libtclreadline.so
-- TCL readline header: /usr/include/x86_64-linux-gnu
-- Found SWIG: /usr/local/bin/swig (found suitable version "4.3.0", minimum required is "4.0")
-- Using SWIG >= 4.3.0 -flatstaticmethod flag for python
-- boost: 1.86.0
-- Found GTest: /usr/local/lib/cmake/GTest/GTestConfig.cmake (found version "1.13.0")
-- GTest: 1.13.0
-- Found Python3: /usr/include/python3.12 (found version "3.12.3") found components: Development Development.Module Development.Embed
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.3")
-- Found Threads: TRUE
-- spdlog: 1.15.0
-- Found BISON: /usr/bin/bison (found version "3.8.2")
-- Found Doxygen: /usr/bin/doxygen (found version "1.9.8") found components: doxygen dot
-- STA version: 2.7.0
-- STA git sha: 9c9b5659d6a7ecbe02ea1204aa89079a77db1d3e
-- System name: Linux
-- Compiler: GNU 13.3.0
-- Build type: RELEASE
-- Build CXX_FLAGS: -O3 -DNDEBUG
-- Install prefix: /usr/local
-- Found FLEX: /usr/bin/flex (found version "2.6.4")
-- TCL library: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- TCL readline library: /usr/lib/x86_64-linux-gnu/libtclreadline.so
-- TCL readline header: /usr/include/x86_64-linux-gnu/tclreadline.h
-- CUDD library: /usr/local/lib/libcudd.a
-- CUDD header: /usr/local/include/cudd.h
-- SSTA: 0
-- Found SWIG: /usr/local/bin/swig (found suitable version "4.3.0", minimum required is "3.0")
-- STA library: /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/libOpenSTA.a
-- STA executable: /workspace/clean/OpenROAD-flow-scripts/tools/OpenROAD/build/sta
-- Found re2: /opt/or-tools/lib/cmake/re2/re2Config.cmake (found version "11.0.0")
-- Found Clp: /opt/or-tools/lib/cmake/Clp/ClpConfig.cmake (found version "1.17.7")
-- Found Cbc: /opt/or-tools/lib/cmake/Cbc/CbcConfig.cmake (found version "2.10.7")
-- Found SCIP: /opt/or-tools/lib/cmake/scip/scip-config.cmake (found version "9.0.0")
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- Found OR-Tools: /opt/or-tools/lib/cmake/ortools (version: 9.11.4210)
-- TCL library: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- Found OpenMP_C: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- GUI is enabled
-- Could NOT find VTune (missing: VTune_LIBRARIES VTune_INCLUDE_DIRS) 
-- TCL library: /usr/lib/x86_64-linux-gnu/libtcl.so
-- TCL header: /usr/include/tcl/tcl.h
-- Found Eigen3: /usr/local/share/eigen3/cmake/Eigen3Config.cmake (found version "3.4.1")
-- TCL readline enabled
-- Tcl Extended disabled
-- Python3 enabled
-- Configuring done (4.0s)
-- Generating done (0.8s)

To Reproduce

OR (Dec 8): 6db01472242a52422a54d0f47c15ffb21011fd4d ORFS (Dec 8): edfa2befffccc1d987cfdc9df7bd2ebaf1911c37

make DESIGN_CONFIG=./designs/nangate45/bp_multi_top/config.mk OPENROAD_HIERARCHICAL=1

Relevant log output


Screenshots

No response

Additional Context

Image Image

It looks like a memory corruption.

  • Segmentation fault during std::_Rb_tree_const_iterator access.
  • Weird pointer addresses in the _M_node data structure.

jhkim-pii avatar Dec 09 '25 01:12 jhkim-pii

When I ran TSAN, no such issue occurred (global place stage finished successfully). No error report by TSAN.

jhkim-pii avatar Dec 10 '25 08:12 jhkim-pii

ASAN & UBSAN couldn't reproduce the issue (finished successfully without crash). No ASAN/UBSAN error report.

jhkim-pii avatar Dec 10 '25 13:12 jhkim-pii

network_->drivers() returns a cached PinSet*. But the cache can be invalidated by the repairDriver() call in the loop, which can delete the drivers memory. Thus, the drivers should be copied before the iteration.

jhkim-pii avatar Dec 16 '25 07:12 jhkim-pii