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

python3 gui.py --viewer NOT WORKING #2113

Closed Baungarten-CINVESTAV closed 2 months ago

Baungarten-CINVESTAV commented 2 months ago

Description

When I use the command python3 gui.py --viewer openroad ./designs/spm/runs/openlane_test , the openROAD gui does not open and gives an error, this happens even with the openLANE example

Expected Behavior

I would expect the openROAD GUI to be executed.

Environment report

open_pdks cd1748bb197f9b7af62a54507de6624e30363943
Kernel: Linux v5.15.0-46-generic
Distribution: ubuntu 20.04
Python: v3.8.10 (OK)
Container Engine: docker v25.0.1 (OK)
OpenLane Git Version: eaba5192c45aa333ab45216ce1773d75d539e9b3
python-venv: INSTALLED
---
PDK Version Verification Status: OK
---
Git Log (Last 3 Commits)

eaba519 2024-04-02T00:07:21+02:00 Fix Exit Code Propagation When Creating Reproducibles (#2111) - Mohamed Gaber -  (grafted, HEAD -> master, tag: 2024.04.02, origin/master, origin/HEAD)
---
Git Remotes

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

Reproduction material

git clone --depth 1 https://github.com/The-OpenROAD-Project/OpenLane.git
cd OpenLane/
make
make test
make mount
python3 ./gui.py --viewer openroad ./designs/spm/runs/openlane_test

Relevant log output

OpenLane Container (eaba519):/openlane$ python3 ./gui.py --viewer openroad ./designs/spm/runs/openlane_test
Using ./designs/spm/runs/openlane_test/config.tcl
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-'
process 10: The last reference on a connection was dropped without closing the connection. This is a bug in an application. See dbus_connection_unref() documentation for details.
Most likely, the application was supposed to call dbus_connection_close(), since this is a private connection.
  D-Bus not built with -rdynamic so unable to print a backtrace
Signal 6 received
Stack trace:
 0# 0x0000000000D81E07 in openroad
 1# 0x00007FC6D555E400 in /lib64/libc.so.6
 2# gsignal in /lib64/libc.so.6
 3# abort in /lib64/libc.so.6
 4# 0x00007FC6CB022655 in /lib64/libdbus-1.so.3
 5# _dbus_warn_check_failed in /lib64/libdbus-1.so.3
 6# 0x00007FC6CD71BBFB in /lib64/libQt5DBus.so.5
 7# QObject::event(QEvent*) in /lib64/libQt5Core.so.5
 8# 0x00007FC6D688EA55 in /lib64/libQt5Core.so.5
 9# QCoreApplication::notifyInternal2(QObject*, QEvent*) in /lib64/libQt5Core.so.5
10# QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) in /lib64/libQt5Core.so.5
11# 0x00007FC6D68DDA03 in /lib64/libQt5Core.so.5
12# g_main_context_dispatch in /lib64/libglib-2.0.so.0
13# 0x00007FC6D22C43F8 in /lib64/libglib-2.0.so.0
14# g_main_context_iteration in /lib64/libglib-2.0.so.0
15# QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) in /lib64/libQt5Core.so.5
16# QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) in /lib64/libQt5Core.so.5
17# QThread::exec() in /lib64/libQt5Core.so.5
18# 0x00007FC6CD7193B5 in /lib64/libQt5DBus.so.5
19# 0x00007FC6D66E4E71 in /lib64/libQt5Core.so.5
20# 0x00007FC6D9E49EA5 in /lib64/libpthread.so.0
21# clone in /lib64/libc.so.6
Traceback (most recent call last):
  File "./gui.py", line 115, in <module>
    gui()
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "./gui.py", line 81, in gui
    env={**run_env, **run_config, **extra_config},
  File "/usr/lib64/python3.6/subprocess.py", line 311, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['openroad', '-gui', './scripts/openroad/gui.tcl']' died with <Signals.SIGABRT: 6>.
kareefardi commented 2 months ago

@Baungarten-CINVESTAV can you try the following https://github.com/The-OpenROAD-Project/OpenLane/issues/1772#issuecomment-1523113799?

Baungarten-CINVESTAV commented 2 months ago

I have tried, nevertheless, after reading carefully the make file, in the previous version I can add the command DOCKER_OPTIONS += --privileged at the beginning or at the end of the file.

I don't know in which version the following command DOCKER_OPTIONS = $(shell $(PYTHON_BIN) ./env.py docker-config) does not have the += so adding the DOCKER_OPTIONS += --privileged after it the GUI works.

Baungarten-CINVESTAV commented 2 months ago

For future interested parties, the make file looks as follows:

PYTHON_BIN ?= python3

OPENLANE_DIR ?= $(shell pwd)

DOCKER_OPTIONS = $(shell $(PYTHON_BIN) ./env.py docker-config)

DOCKER_OPTIONS += --privileged

DOCKER_ARCH ?= $(shell $(PYTHON_BIN) ./docker/current_platform.py)

# Allow Configuring Memory Limits
ifneq (,$(DOCKER_SWAP)) # Set to -1 for unlimited
DOCKER_OPTIONS += --memory-swap=$(DOCKER_SWAP)
endif
ifneq (,$(DOCKER_MEMORY))
DOCKER_OPTIONS += --memory=$(DOCKER_MEMORY)
# To verify: cat /sys/fs/cgroup/memory/memory.limit_in_bytes inside the container
endif
.
.
.
kareefardi commented 2 months ago

Pinning this as a workaround for others.