The-OpenROAD-Project / OpenLane

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.
https://openlane.readthedocs.io/
Apache License 2.0
1.25k stars 365 forks source link

Segmentation violation (SIGSEGV) at Global Routing Resizer Timing Optimizations (gfmpw-1c) #2061

Closed algofoogle closed 6 months ago

algofoogle commented 7 months ago

Description

Hi there! This may be exactly the same as #2035 and already fixed (but awaiting deployment?). In any case I'm including this bug report in case it helps provide another test case.

I'm using caravel_user_project tag gfmpw-1c to harden a user project macro, and I have frequently had it crash on step 20 (Global Routing Resizer Timing Optimizations). This seems to be unpredictable, but can be worked around for any given iteration of my design if I fiddle marginally with things like FP_CORE_UTIL.

Reported error:

[STEP 20]
[INFO]: Running Global Routing Resizer Timing Optimizations (log: ../home/zerotoasic/anton/algofoogle-multi-caravel/openlane/top_ew_algofoogle/runs/23_12_03_15_56/logs/routing/20-resizer_timing.log)...
[ERROR]: during executing openroad script /openlane/scripts/openroad/resizer_routing_timing.tcl
[ERROR]: Log: ../home/zerotoasic/anton/algofoogle-multi-caravel/openlane/top_ew_algofoogle/runs/23_12_03_15_56/logs/routing/20-resizer_timing.log
[ERROR]: Last 10 lines:
36# 0x00007FC4A3C9FF1E in /lib64/libtcl8.5.so
37# Tcl_EvalEx in /lib64/libtcl8.5.so
38# Tcl_Eval in /lib64/libtcl8.5.so
39# sta::sourceTclFile(char const*, bool, bool, Tcl_Interp*) in openroad
40# ord::tclAppInit(Tcl_Interp*) in openroad
41# Tcl_Main in /lib64/libtcl8.5.so
42# main in openroad
43# __libc_start_main in /lib64/libc.so.6
44# 0x0000000000D3DC77 in openroad
child killed: segmentation violation

[ERROR]: Creating issue reproducible...

Expected Behavior

Flow should complete normally.

Environment report

open_pdks e0f692f46654d6c7c99fc70a0c94a080dab53571
Kernel: Linux v6.2.0-37-generic
Distribution: ubuntu 22.04
Python: v3.10.12 (OK)
Container Engine: docker v24.0.5 (OK)
OpenLane Git Version: 7ea7a2aeef4bea5445d133c26ca2b3e9f0d0c78f
pip: INSTALLED
python-venv: INSTALLED
---
PDK Version Verification Status: MISMATCH
The version of open_pdks used in building the PDK does not match the version OpenLane was tested on (installed: e0f692f46654d6c7c99fc70a0c94a080dab53571, tested: dd7771c384ed36b91a25e9f8b314355fc26561be)
This may introduce some issues. You may want to re-install the PDK by invoking `make pdk`.
---
Git Log (Last 3 Commits)

7ea7a2a 2023-10-15T17:01:59+03:00 Fix `FP_PIN_ORDER_CFG` being overriden (#2017) - Kareem Farid -  (grafted, HEAD, tag: 2023.10.16)
---
Git Remotes

origin  https://github.com/The-OpenROAD-Project/OpenLane (fetch)
origin  https://github.com/The-OpenROAD-Project/OpenLane (push)

Reproduction material

issue_reproducible.tar.gz

Relevant log output

...
[INFO GRT-0018] Total wirelength: 1110572 um
[INFO GRT-0014] Routed nets: 16288
[INFO]: Setting RC values...
[INFO RSZ-0094] Found 44 endpoints with setup violations.
Signal 11 received
Stack trace:
 0# 0x0000000000D44DF7 in openroad
 1# 0x00007FC49F16A400 in /lib64/libc.so.6
 2# grt::MakeWireParasitics::estimateParasitcs(odb::dbNet*, std::vector<grt::GSegment, std::allocator<grt::GSegment> >&) const in openroad
 3# grt::FastRouteCore::CalculatePartialSlack() in openroad
 4# grt::FastRouteCore::mazeRouteMSMD(int, int, float, int, int, bool, int, float, int, int, int, float&) in openroad
 5# grt::FastRouteCore::run() in openroad
 6# grt::GlobalRouter::findRouting(std::vector<grt::Net*, std::allocator<grt::Net*> >&, int, int) in openroad
 7# grt::GlobalRouter::updateDirtyRoutes() in openroad
 8# rsz::Resizer::updateParasitics() in openroad
 9# rsz::RepairSetup::repairSetup(float, double, int, bool, bool, bool) in openroad
10# 0x0000000000E85CE5 in openroad
11# 0x00007FC4A3C9EEB2 in /lib64/libtcl8.5.so
12# 0x00007FC4A3CE336C in /lib64/libtcl8.5.so
13# TclObjInterpProcCore in /lib64/libtcl8.5.so
14# 0x00007FC4A3C9EEB2 in /lib64/libtcl8.5.so
15# 0x00007FC4A3CE336C in /lib64/libtcl8.5.so
16# 0x00007FC4A3CEB647 in /lib64/libtcl8.5.so
17# TclEvalObjEx in /lib64/libtcl8.5.so
18# 0x00007FC4A3D2627F in /lib64/libtcl8.5.so
19# 0x00007FC4A3C9EEB2 in /lib64/libtcl8.5.so
20# 0x00007FC4A3CE336C in /lib64/libtcl8.5.so
21# 0x00007FC4A3CEB647 in /lib64/libtcl8.5.so
22# TclEvalObjEx in /lib64/libtcl8.5.so
23# 0x00007FC4A3CA61D0 in /lib64/libtcl8.5.so
24# 0x00007FC4A3C9EEB2 in /lib64/libtcl8.5.so
25# 0x00007FC4A3CE336C in /lib64/libtcl8.5.so
26# 0x00007FC4A3CEB647 in /lib64/libtcl8.5.so
27# TclEvalObjEx in /lib64/libtcl8.5.so
28# 0x00007FC4A3CA9F00 in /lib64/libtcl8.5.so
29# 0x00007FC4A3C9EEB2 in /lib64/libtcl8.5.so
30# 0x00007FC4A3CE336C in /lib64/libtcl8.5.so
31# TclObjInterpProcCore in /lib64/libtcl8.5.so
32# 0x00007FC4A3C9EEB2 in /lib64/libtcl8.5.so
33# 0x00007FC4A3CE336C in /lib64/libtcl8.5.so
34# TclObjInterpProcCore in /lib64/libtcl8.5.so
35# 0x00007FC4A3C9EEB2 in /lib64/libtcl8.5.so
36# 0x00007FC4A3C9FF1E in /lib64/libtcl8.5.so
37# Tcl_EvalEx in /lib64/libtcl8.5.so
38# Tcl_Eval in /lib64/libtcl8.5.so
39# sta::sourceTclFile(char const*, bool, bool, Tcl_Interp*) in openroad
40# ord::tclAppInit(Tcl_Interp*) in openroad
41# Tcl_Main in /lib64/libtcl8.5.so
42# main in openroad
43# __libc_start_main in /lib64/libc.so.6
44# 0x0000000000D3DC77 in openroad
vijayank88 commented 6 months ago

With latest OpenROAD head, the crash not reproducible. So you can update OpenROAD commit and run again. @algofoogle

kareefardi commented 6 months ago

@algofoogle OpenLane head (which doesn't necessarily follows OpenROAD head) doesn't reproduce the crash. Can you update OpenLane and try again ?

algofoogle commented 6 months ago

I will give it a try! I don’t have a failing case right now but I will try the update after the next time I hit the error :)

kareefardi commented 6 months ago

@algofoogle Great. Please open a new issue if something surfaces.