Public

Tool Failures

Crash, lock, environment, and slow-step diagnosis for OpenROAD, Magic, KLayout, Nix, and CI.

Scope

This page covers crashes, file-descriptor exhaustion, local-versus-CI differences, and slow tool steps. Rule violations and LVS mismatches belong on DRC and LVS.

Capture before retry

Save the failed run directory, exact command, resolved configuration, first error, complete log, report/database files, tool and PDK versions, template tag, Nix lock, and the smallest failing design. This list is an inferred incident record from reduced OpenROAD/KLayout cases and a Nix/CI comparison; it is not a quoted project policy. Reduced-case evidence (Discord) Environment evidence (Discord)

Failure classes

OpenROAD segfault

  • Confirmed guidance — 2025-11-26: OpenROAD should not segfault. A reproducible segfault should be reported upstream rather than accepted as normal flow behavior. Evidence (Discord)
  • Reduce the fault to the smallest database or design that still crashes, and include the exact OpenROAD commit. This is an inferred reporting remedy from the upstream-report instruction and the archive's successful reduced-cell practice. Crash evidence (Discord) Reduction evidence (Discord)

Magic open-file limit

  • Confirmed cause and fix — 2026-06-08: Magic kept files open for locking. Project Template 1.5.2 added locking disable, which prevented the flow from hitting the open-file limit. Evidence (Discord)
  • Obsolete workaround: Raising the file-descriptor limit alone is not the durable fix for this recorded case. Use a template/LibreLane version containing the locking change. Evidence (Discord)

Local failure but CI passes

  • Confirmed diagnostic — 2026-06-06: Compare flake.nix and flake.lock, test the unmodified template, and inspect the preceding Magic GDS before blaming the failing XOR step. In the recorded case, KLayout XOR failed locally while GitHub CI passed. Evidence 1 (Discord) Evidence 2 (Discord)
  • Decision boundary: Run nix flake update only when changing inputs intentionally. First compare the existing lock with the known-good environment. Evidence (Discord)

KLayout appears hung

  • Confirmed historical cause: Connectivity construction took several hours in one PDK setup. PDK 1.4.1 fixed the setup, and one tested run then took about 1.5 hours. Evidence (Discord)
  • Warning: conn_drc false can bypass connectivity construction, but then rules lose net knowledge and may produce conservative false positives. Use it only for diagnosis, not signoff. Bypass (Discord) Warning (Discord)

Open questions

  • A slow step is not proven hung without complete logs, timestamps, and resource use. This distinction remains an inference from the multi-hour connectivity case. Evidence (Discord)
  • The archive does not establish whether every recorded upstream fix is in every current template pin. Check the actual lock and tool commit before declaring a failure fixed. A local-versus-CI mismatch showed why the lock matters. Evidence (Discord)

Sources

  • 1443385708302831667 — 2025-11-26T23:39:29.669+00:00 — Tim 'mithro' Ansell (@mithro_) — OpenROAD segfaults should be reported upstream. Evidence (Discord)
  • 1443614636464148552 — 2025-11-27T14:49:10.396+00:00 — tnt (@246tnt) — reason for a reduced single-cell DRC case. Evidence (Discord)
  • 1513546884726259844 — 2026-06-08T14:14:57.66+00:00 — Leo Moser (mole99) (@mole99) — Magic locking disable fix. Evidence (Discord)
  • 1512740258649870336 — 2026-06-06T08:49:43.017+00:00 — Leo Moser (mole99) (@mole99); 1512912751641628845 — 2026-06-06T20:15:08.551+00:00 — RebelMike (@rebelmike) — Nix lock and local-versus-CI diagnosis. Evidence 1 (Discord) Evidence 2 (Discord)
  • 1446446102734962835 — 2025-12-05T10:20:24.561+00:00 — Leo Moser (mole99) (@mole99) — KLayout connectivity fix and runtime result. Evidence (Discord)
  • 1445398457929171079 — 2025-12-02T12:57:26.575+00:00 — Leo Moser (mole99) (@mole99); 1445398872594579530 — 2025-12-02T12:59:05.439+00:00 — Leo Moser (mole99) (@mole99) — connectivity bypass and false-positive warning. Evidence 1 (Discord) Evidence 2 (Discord)