【半導体】🧱 23. OpenLane 環境で9割決まる|WSL2・Docker・PDKで踏み抜く地雷の全回避

topics: [“OpenLane”, “ASIC”, “EDA”, “Docker”, “WSL”]


🧭 はじめに:なぜOpenLaneは「動かない」のか

OpenLaneは、
RTLからGDSIIまでを一気通貫で流せるOSSのASIC設計フローです。

🔗 公式リポジトリはこちらです。
https://github.com/The-OpenROAD-Project/OpenLane

それにもかかわらず、実際の利用者からは次のような声が頻発します。

結論から述べます。

⚠️ OpenLaneは環境で9割決まります。

設計以前に、
環境設計そのものが破綻しているケースが圧倒的に多いのが現実です。

本記事では、
OpenLane Guide の Phase 1:Environment Survival を基に、

理由ベース で解説します。

📘 本記事の元になっている体系的ガイドはこちらです。
https://samizo-aitl.github.io/openlane-guide/


🧩 OpenLaneは「ツール」ではなく「環境」である

まず最初に、この認識が必要です。

OpenLaneは単体ツールではありません。

これらを Dockerコンテナ内で統合した“環境” です。

つまり、

💥 OpenLaneが壊れる
WSL × Docker × ホストOS × PDK のどこかが壊れている

という意味になります。


🐳 WSL2 + Docker Desktop は「妥協」ではない

よくある誤解があります。

これは 最初に踏み抜く地雷 です。

なぜ WSL2 + Docker なのか

理由は以下の3点です。

  1. 🧼 ホストOS差分を完全に消すため
  2. 🧨 依存関係地獄を封じるため
  3. ♻️ 壊れたら捨てる前提で運用するため

OpenLaneは、
長期間「育てる」環境ではありません。

🔁 再現可能な箱を、必要に応じて作り直す

この思想に最も適しているのが
WSL2 + Docker Desktop です。


🔀 OpenLane1 と OpenLane2 を分けないと必ず壊れる

ここが 最大の事故ポイント です。

設計思想がそもそも違う

項目 OpenLane1 OpenLane2
🎯 目的 安定運用 実験・評価
🧭 フロー Makefile Python
📦 PDK 固定前提 変動あり
♻️ 再現性

同居を想定した設計ではありません。

同一WSL・同一Docker・同一PDKパスで混在させると、
🚨 確実に破綻します。

「OpenLane2を試した後にOpenLane1が動かなくなった」

これはバグではなく、
設計思想どおりの結果です。


📦 PDKは「最新」が最悪の選択

初心者が必ず言います。

✨ せっかくなら最新版PDKを使いたい

これは 致命的な判断 です。

PDKは巨大な前提集合

PDKは単なるデータではありません。

これら全てが 設計前提そのもの です。

PDKが変わるということは、

🔄 設計条件が全て変わる

という意味になります。

正解はこれだけです

CIや教育用途でOpenLaneを使う場合、
これを守らないと 再現不能な環境 になります。


⚖️ 壊れる環境・壊れない環境の差

💣 壊れる環境の特徴

🛡 壊れない環境の特徴


💾 WSL Export / Import は「保険」ではない

WSLの Export / Import は、
災害復旧用ではありません。

🔑 運用前提の必須機能です。

これを行わない環境は、
遅かれ早かれ詰みます。


🧱 なぜ順番厳守なのか

OpenLane Guide が
「順番厳守」「飛ばすな」と明言している理由は明確です。

環境が壊れた状態では、
物理設計もタイミングも全て嘘になる


📝 まとめ

これが Phase 1:Environment Survival の結論です。


▶️ 次回予告

次回は Phase 2:Physical Design Reality

「OpenLaneは魔法ではない」
その現実を、物理設計の視点から解剖します。