---
page_id: curated-tool-failures
type: context-page
schema_version: 1
template_id: curated-knowledge
template_version: template-0.1.0
title: Tool Failures
slug: curated-tool-failures
route: /troubleshooting/tool-failures
section: reference
access: public
summary: Crash, lock, environment, and slow-step diagnosis for OpenROAD, Magic, KLayout, Nix, and CI.
status: published
asset_base: .
home_href: /
md_url: /troubleshooting/tool-failures.md
toc_enabled: true
talk_enabled: false
agent_view_enabled: true
copy_buttons_enabled: true
footer_enabled: true
search_indexed: true
tags: [wafer-space, knowledge-base, curated]
last_updated: 2026-08-19
talk_url: /troubleshooting/tool-failures.talk.md
talk_route: /troubleshooting/tool-failures/talk
---

# Tool Failures

## 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](/troubleshooting/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](/evidence/i-information/general/threads/using-gf180mcuocdio-in-librelane#message-1443614636464148552) ([Discord](https://discord.com/channels/1361349522684510449/1443243481744277565/1443614636464148552)) [Environment evidence](/evidence/designing/project-template/threads/only-thing-i-can-think-of-is-the-nix#message-1512740258649870336) ([Discord](https://discord.com/channels/1361349522684510449/1512739634692489366/1512740258649870336))

## 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](/evidence/i-information/general/threads/using-gf180mcuocdio-in-librelane#message-1443385708302831667) ([Discord](https://discord.com/channels/1361349522684510449/1443243481744277565/1443385708302831667))
- 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](/evidence/i-information/general/threads/using-gf180mcuocdio-in-librelane#message-1443385708302831667) ([Discord](https://discord.com/channels/1361349522684510449/1443243481744277565/1443385708302831667)) [Reduction evidence](/evidence/i-information/general/threads/using-gf180mcuocdio-in-librelane#message-1443614636464148552) ([Discord](https://discord.com/channels/1361349522684510449/1443243481744277565/1443614636464148552))

### 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](/evidence/designing/project-template#message-1513546884726259844) ([Discord](https://discord.com/channels/1361349522684510449/1423348662318272592/1513546884726259844))
- **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](/evidence/designing/project-template#message-1513546884726259844) ([Discord](https://discord.com/channels/1361349522684510449/1423348662318272592/1513546884726259844))

### 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](/evidence/designing/project-template/threads/only-thing-i-can-think-of-is-the-nix#message-1512740258649870336) ([Discord](https://discord.com/channels/1361349522684510449/1512739634692489366/1512740258649870336)) [Evidence 2](/evidence/designing/project-template/threads/only-thing-i-can-think-of-is-the-nix#message-1512912751641628845) ([Discord](https://discord.com/channels/1361349522684510449/1512739634692489366/1512912751641628845))
- **Decision boundary:** Run `nix flake update` only when changing inputs intentionally. First compare the existing lock with the known-good environment. [Evidence](/evidence/designing/project-template/threads/only-thing-i-can-think-of-is-the-nix#message-1512740258649870336) ([Discord](https://discord.com/channels/1361349522684510449/1512739634692489366/1512740258649870336))

### 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](/evidence/designing/project-template#message-1446446102734962835) ([Discord](https://discord.com/channels/1361349522684510449/1423348662318272592/1446446102734962835))
- **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](/evidence/designing/project-template/threads/pure-digital-no-hard-macros-no-sram#message-1445398457929171079) ([Discord](https://discord.com/channels/1361349522684510449/1445210755434549288/1445398457929171079)) [Warning](/evidence/designing/project-template/threads/pure-digital-no-hard-macros-no-sram#message-1445398872594579530) ([Discord](https://discord.com/channels/1361349522684510449/1445210755434549288/1445398872594579530))

## 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](/evidence/designing/project-template#message-1446446102734962835) ([Discord](https://discord.com/channels/1361349522684510449/1423348662318272592/1446446102734962835))
- 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](/evidence/designing/project-template/threads/only-thing-i-can-think-of-is-the-nix#message-1512912751641628845) ([Discord](https://discord.com/channels/1361349522684510449/1512739634692489366/1512912751641628845))

## Related pages

- [Troubleshooting](/troubleshooting)
- [DRC and LVS](/troubleshooting/drc-and-lvs)
- [Version Management](/librelane-and-tooling/version-management)
- [RTL, Synthesis, and Simulation](/digital-design/rtl-synthesis-and-simulation)
- [LibreLane and Tooling](/librelane-and-tooling)

## Sources

- `1443385708302831667` — 2025-11-26T23:39:29.669+00:00 — Tim 'mithro' Ansell (@mithro_) — OpenROAD segfaults should be reported upstream. [Evidence](/evidence/i-information/general/threads/using-gf180mcuocdio-in-librelane#message-1443385708302831667) ([Discord](https://discord.com/channels/1361349522684510449/1443243481744277565/1443385708302831667))
- `1443614636464148552` — 2025-11-27T14:49:10.396+00:00 — tnt (@246tnt) — reason for a reduced single-cell DRC case. [Evidence](/evidence/i-information/general/threads/using-gf180mcuocdio-in-librelane#message-1443614636464148552) ([Discord](https://discord.com/channels/1361349522684510449/1443243481744277565/1443614636464148552))
- `1513546884726259844` — 2026-06-08T14:14:57.66+00:00 — Leo Moser (mole99) (@mole99) — Magic `locking disable` fix. [Evidence](/evidence/designing/project-template#message-1513546884726259844) ([Discord](https://discord.com/channels/1361349522684510449/1423348662318272592/1513546884726259844))
- `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](/evidence/designing/project-template/threads/only-thing-i-can-think-of-is-the-nix#message-1512740258649870336) ([Discord](https://discord.com/channels/1361349522684510449/1512739634692489366/1512740258649870336)) [Evidence 2](/evidence/designing/project-template/threads/only-thing-i-can-think-of-is-the-nix#message-1512912751641628845) ([Discord](https://discord.com/channels/1361349522684510449/1512739634692489366/1512912751641628845))
- `1446446102734962835` — 2025-12-05T10:20:24.561+00:00 — Leo Moser (mole99) (@mole99) — KLayout connectivity fix and runtime result. [Evidence](/evidence/designing/project-template#message-1446446102734962835) ([Discord](https://discord.com/channels/1361349522684510449/1423348662318272592/1446446102734962835))
- `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](/evidence/designing/project-template/threads/pure-digital-no-hard-macros-no-sram#message-1445398457929171079) ([Discord](https://discord.com/channels/1361349522684510449/1445210755434549288/1445398457929171079)) [Evidence 2](/evidence/designing/project-template/threads/pure-digital-no-hard-macros-no-sram#message-1445398872594579530) ([Discord](https://discord.com/channels/1361349522684510449/1445210755434549288/1445398872594579530))
