efabless / openlane2

The next generation of OpenLane, rewritten from scratch with a modular architecture
https://openlane2.readthedocs.io/
Apache License 2.0
168 stars 30 forks source link

_tkinter.TclError: too many nested evaluations (infinite loop?) #481

Closed dpetrisko closed 1 month ago

dpetrisko commented 1 month ago

Description

Attempting to run a synthesized netlist through openlane2 with tt07-based configuration. I manually converted the config.tcl to config.json for this test (wasn't sure if tcl deprecation was the cause), but the same error exists on both TCL and json.

Expected Behavior

Get past the configuration openlane step

Environment report

(venv) [petrisko@kk9 tt07-dll]$ openlane.env_info || python3 ./openlane/env_info.py
Failed to get Nix info: [Errno 2] No such file or directory: 'nix'
kernel: Linux
kernel_version: 4.19.53
supported: True
distro: centos
distro_version: 7
python_version: 3.11.4
python_path:
  - /mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/venv/bin
  - /mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/lib/python311.zip
  - /mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/lib/python3.11
  - /mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/lib/python3.11/lib-dynload
  - /mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/venv/lib/python3.11/site-packages
tkinter: True
container_info:
  engine: docker
  version: 20.10.17
  conmon: False
  rootless: False
nix_info: None

Reproduction material

Unfortunately, it seems to be failing before the reproducible test case can be built

Relevant log output

(venv) [petrisko@kk9 tt07-dll]$ openlane.steps create-reproducible --config src/config_patched.json -d .
Traceback (most recent call last):
  File "/mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/venv/bin/openlane.steps", line 8, in <module>
    sys.exit(cli())
             ^^^^^
  File "/mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/venv/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/venv/lib/python3.11/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/venv/lib/python3.11/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/venv/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/venv/lib/python3.11/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/venv/lib/python3.11/site-packages/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/venv/lib/python3.11/site-packages/openlane/steps/__main__.py", line 445, in create_reproducible
    step = load_step_from_inputs(ctx, id, config, state_in)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/venv/lib/python3.11/site-packages/openlane/steps/__main__.py", line 56, in load_step_from_inputs
    return Target.load(
           ^^^^^^^^^^^^
  File "/mnt/users/spin0/no_backup/petrisko/tapeout/tt07-flow/install/venv/lib/python3.11/site-packages/openlane/steps/step.py", line 799, in load
    raise StepNotFound(
openlane.steps.step.StepNotFound: Attempted to initialize abstract Step, and no step ID was found in the configuration.
dpetrisko commented 1 month ago

config_patched.tcl.zip config_patched.json.zip

dpetrisko commented 1 month ago

Figured it out (kind of)! Manually building python with tcl/tk 8.6 instead of 8.5 gets rid of the error. 8.6 uses a stackless implementation which gets around the recursion limit. Not looking too much further since everything in this environment is super old ;)

Thanks!