Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash During Clock Tree Synthesis #1987

Closed
donn opened this issue Jun 23, 2022 · 1 comment · Fixed by #1991
Closed

Crash During Clock Tree Synthesis #1987

donn opened this issue Jun 23, 2022 · 1 comment · Fixed by #1991
Assignees

Comments

@donn
Copy link
Contributor

donn commented Jun 23, 2022

  • Tested on: OpenROAD v2.0-4149-gf2466c46e (f2466c4)

Appears that there's a crash during CTS on a particularly complex design.

[INFO CTS-0036]  Average source sink dist: 11043.00 dbu.
[INFO CTS-0037]  Number of outlier sinks: 0.
[INFO CTS-0018]     Created 17 clock buffers.
[INFO CTS-0012]     Minimum number of buffers in the clock path: 5.
[INFO CTS-0013]     Maximum number of buffers in the clock path: 5.
[INFO CTS-0015]     Created 17 clock nets.
[INFO CTS-0016]     Fanout distribution for the current clock = 9:1, 10:1, 13:2, 14:2, 18:1, 20:1..
[INFO CTS-0017]     Max level of the clock tree: 3.
[INFO CTS-0018]     Created 7 clock buffers.
[INFO CTS-0012]     Minimum number of buffers in the clock path: 3.
[INFO CTS-0013]     Maximum number of buffers in the clock path: 3.
[INFO CTS-0015]     Created 7 clock nets.
[INFO CTS-0016]     Fanout distribution for the current clock = 8:1, 11:1, 12:1, 18:1..
[INFO CTS-0017]     Max level of the clock tree: 2.
[INFO CTS-0018]     Created 76 clock buffers.
[INFO CTS-0012]     Minimum number of buffers in the clock path: 5.
[INFO CTS-0013]     Maximum number of buffers in the clock path: 7.
[INFO CTS-0015]     Created 76 clock nets.
[INFO CTS-0016]     Fanout distribution for the current clock = 2:3, 3:3, 4:2, 5:4, 6:4, 7:7, 8:5, 9:5, 10:2, 11:4, 12:4, 13:5, 14:4, 15:2, 16:3, 17:2, 18:3, 20:3, 23:1..
[INFO CTS-0017]     Max level of the clock tree: 3.
[INFO CTS-0018]     Created 3 clock buffers.
[INFO CTS-0012]     Minimum number of buffers in the clock path: 2.
[INFO CTS-0013]     Maximum number of buffers in the clock path: 2.
[INFO CTS-0015]     Created 3 clock nets.
[INFO CTS-0016]     Fanout distribution for the current clock = 2:1, 3:1..
[INFO CTS-0017]     Max level of the clock tree: 1.
[INFO CTS-0018]     Created 3 clock buffers.
[INFO CTS-0012]     Minimum number of buffers in the clock path: 2.
[INFO CTS-0013]     Maximum number of buffers in the clock path: 2.
[INFO CTS-0015]     Created 3 clock nets.
[INFO CTS-0016]     Fanout distribution for the current clock = 1:2..
[INFO CTS-0017]     Max level of the clock tree: 1.
Stack trace:
 0# 0x000055B35B75EEF5 in openroad
 1# 0x00007F5DDA63E8E0 in /usr/lib/libc.so.6
 2# odb::dbInst::setSourceType(odb::dbSourceType) in openroad
 3# 0x000055B35C03A6A5 in openroad
 4# cts::Clock::forEachClockBuffer(std::function<void (cts::ClockInst&)> const&) in openroad
 5# cts::TritonCTS::createClockBuffers(cts::Clock&) in openroad
 6# cts::TritonCTS::writeClockNetsToDb(cts::Clock&) in openroad
 7# cts::TritonCTS::writeDataToDb() in openroad
 8# 0x000055B35C055E45 in openroad
 9# TclNRRunCallbacks in /usr/lib/libtcl.so
10# 0x00007F5DDC805BDB in /usr/lib/libtcl.so
11# Tcl_EvalEx in /usr/lib/libtcl.so
12# Tcl_Eval in /usr/lib/libtcl.so
13# sta::sourceTclFile(char const*, bool, bool, Tcl_Interp*) in openroad
14# ord::tclAppInit(Tcl_Interp*) in openroad
15# Tcl_MainEx in /usr/lib/libtcl.so
16# main in openroad
17# 0x00007F5DDA629290 in /usr/lib/libc.so.6
18# __libc_start_main in /usr/lib/libc.so.6
19# _start in openroad

reproducible.tar.gz

@maliberty maliberty self-assigned this Jun 23, 2022
@maliberty
Copy link
Member

What is the purpose of:

create_generated_clock -name csclk_slow -source [get_ports {mgmt_gpio_in[4]}]  -divide_by 1 [get_pins {_5096_/X}]

5096 is an AOI gate not a clock gating cell. Why divide by 1?
(I'll fix the crash but I'm not clear what the expect result is).

openroad-robot pushed a commit to The-OpenROAD-Project-staging/OpenROAD that referenced this issue Jun 23, 2022
In the reported test case there is a clock mux whose output is marked
as a generated clock (no idea why).  In that case we should not add
the mux's output to the set of clock nets as it will be seen later
via the generated clock.

Fixes The-OpenROAD-Project#1987

Signed-off-by: Matt Liberty <mliberty@eng.ucsd.edu>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants