🔥
回路設計者のためのPythonライブラリまとめ
はじめに
EDAは工程ごとに道具立てが変わりやすい。回路設計はSPICE、デジタル設計はRTLと論理合成、物理設計は配置配線とレイアウト検証、さらに電磁界や熱といった物理現象は専用ソルバという形で、作業環境とデータ形式が分断されやすい。この分断は、設計の再現性、検証の回帰性、設計変更時の追従性を下げ、手作業の増加と判断遅れにつながる。
一方で、近年はPythonを中核に据えることで、設計・解析・検証・評価を同一の枠組みで連結しやすくなった。Pythonは数値計算、最適化、可視化、ファイル処理に強く、外部ツールの呼び出しやデータ変換も容易である。その結果、回路やRTLを計算機で扱える形に落とし込み、解析条件をコードとして固定し、結果処理と判定まで自動化する流れが現実的になっている。個別ツールの置き換えが目的ではなく、工程間の接続と再現性を強めるための共通言語としてPythonを使う、という立ち位置である。
本記事では、アナログ回路シミュレーション、RTL生成と検証、合成から配置配線、レイアウト生成、電磁界解析、熱解析、ネットリストの構造解析、最適化と自動探索までを対象とし、フルスタックEDAに必要なPythonエコシステムを体系的に整理する。単なる名称の列挙ではなく、どの工程で使うのか、どの実行場所で動かすのが現実的か、何を自動化できるのかを対応付けて示す。目的は、設計フローをPythonで統合し、設計変更に強い回帰可能な作業形態へ移行するための見取り図を作ることである。
フルスタックEDA向け Pythonライブラリ一覧
| 分類 | ライブラリ/ツール | どこで使えるか | 何に使えるか(具体用途) |
|---|---|---|---|
| 回路シミュレーション | ngspice(CLI) | Colab可 / Linuxローカル / WSL / Docker | DC動作点、AC周波数応答、過渡解析、ノイズ解析、温度依存、モンテカルロ、パラメータ掃引、設計回帰試験 |
| 回路シミュレーション | PySpice | Colab可 / Linuxローカル | Pythonからngspice制御、設計変数スイープ、メトリクス抽出、自動レポート、最適化連携 |
| 回路シミュレーション | ngspice-shared(CTypes連携) | Linuxローカル中心 | ngspiceを共有ライブラリとして呼び出し、解析実行と波形取得をプロセス外部ファイルなしで連結 |
| 回路シミュレーション | Xyce | Linuxローカル / HPC | 大規模回路の高速解析、並列過渡解析、長時間回帰解析 |
| 回路シミュレーション | PyLTSpice | Windowsローカル中心 | LTspiceのバッチ実行、RAW抽出、条件比較、結果集計 |
| 純Python回路解析 | Ahkab | Colab可 / ローカル | 外部SPICEなしのDC/AC/TRAN、教育用途の数値実験、小規模回路の検算 |
| 回路記述 | SKiDL | ローカル中心 | Pythonで回路をコード化してnetlist生成、繰り返し構造の自動生成、設計の差分管理 |
| 記号回路解析 | lcapy | Colab可 / ローカル | ラプラス領域での回路解析、伝達関数導出、等価回路合成、理論応答の確認 |
| 記号計算 | sympy | Colab可 / ローカル | 小信号式導出、式の簡約、近似展開、方程式の解、感度解析の下準備 |
| 制御理論 | control | Colab可 / ローカル | 伝達関数/状態空間、ボード線図、ステップ応答、極零解析、安定性評価 |
| 制御理論 | slycot | Linuxローカル中心 | 制御系の数値計算を高速化(リカッチ、固有値、最適レギュレータ系) |
| 信号処理 | scipy.signal | Colab可 / ローカル | フィルタ設計、周波数応答、ディジタル系の応答確認、制御・計測前処理 |
| 信号処理 | spectrum | Colab可 / ローカル | PSD推定、AR法などのスペクトル推定、ノイズ床評価 |
| 信号処理 | pywavelets | Colab可 / ローカル | ウェーブレット分解、ノイズ除去、過渡イベント抽出、特徴量作成 |
| 信号処理 | CommPy | Colab可 / ローカル | 変調・復調、符号化、チャネルモデル、BER評価 |
| 推定 | FilterPy | Colab可 / ローカル | カルマン/粒子フィルタ、センサ融合、状態推定 |
| 信号解析 | PyEMD | Colab可 / ローカル | 非定常信号分解、振動・劣化兆候抽出 |
| 音響DSP | librosa | Colab可 / ローカル | STFT、MFCC抽出、時間周波数解析 |
| 信号入出力 | sounddevice | ローカルのみ | 実時間オーディオ入出力、計測検証 |
| RF/マイクロ波 | scikit-rf | Colab可 / ローカル | Sパラ解析、整合回路設計、安定性指標 |
| 波形データ処理 | Spyci | Colab可 / ローカル | SPICE RAW高速読込、統計処理、回帰比較 |
| 数値計算 | numpy | Colab可 / ローカル | 線形代数、統計、評価指標計算 |
| 数値高速化 | numba | Colab可 / ローカル | 評価関数高速化、最適化ループ短縮 |
| 数値高速化 | cupy | Colab GPU / ローカルGPU | GPUによる大規模配列処理 |
| 可視化 | matplotlib | Colab可 / ローカル | 波形、周波数応答、統計分布描画 |
| 可視化 | plotly | Colab可 / ローカル | 対話型可視化、HTML出力 |
| 3D可視化 | PyVista | ローカル中心 | 熱・電磁界・構造解析結果の3D表示 |
| 回路図生成 | SchemDraw | Colab可 / ローカル | スクリプトで回路図自動生成 |
| 最適化 | Optuna | Colab可 / ローカル | 回路パラメータ探索、自動最適化 |
| 最適化 | scikit-optimize | Colab可 / ローカル | ベイズ最適化、探索履歴管理 |
| 最適化 | nevergrad | Colab可 / ローカル | ブラックボックス最適化 |
| 最適化 | casadi | Colab可 / ローカル | 制約付き非線形最適化 |
| 最適化 | cvxpy | Colab可 / ローカル | 凸最適化問題の定式化と解法 |
| Verilog生成 | Amaranth | Colab可 / ローカル | PythonでRTL生成 |
| Verilog生成 | Migen | Colab可 / ローカル | FPGA向けHDL生成 |
| Verilog生成/検証 | PyMTL3 | Colab可 / ローカル | 高位モデル〜RTL変換 |
| Verilog生成 | MyHDL | Colab可 / ローカル | PythonからVerilog変換 |
| Verilog検証 | cocotb | Linuxローカル / Docker | Pythonテストベンチ、自動回帰 |
| Verilog検証 | pyuvm | Linuxローカル / Docker | UVM風検証環境構築 |
| HDLユニットテスト | VUnit | Linuxローカル / Docker | VHDL/SystemVerilog回帰試験 |
| Verilog高速シミュ | Verilator | Colab可 / Linuxローカル | RTL高速シミュレーション |
| VHDL検証 | GHDL | Linuxローカル / Docker | VHDLシミュレーション |
| デジタル波形解析 | pyvcd | Colab可 / ローカル | VCD波形解析 |
| Verilog解析 | PyVerilog | Colab可 / ローカル | 構文解析、依存関係抽出 |
| HDLフロー抽象化 | edalize | Linuxローカル中心 | 複数EDAツール統合実行 |
| 合成 | Yosys | Colab可 / Linuxローカル | 論理合成、ネットリスト生成 |
| 形式検証 | SymbiYosys | Linuxローカル中心 | プロパティ検証 |
| STA | OpenSTA | Linuxローカル中心 | タイミング解析 |
| SoC自動生成 | LiteX | Linuxローカル中心 | FPGA SoC生成 |
| IP管理 | FuseSoC | Colab可 / ローカル | IP依存管理 |
| 協調検証 | Renode | Linux/Windowsローカル | ソフト込み仮想実行 |
| EDA統合 | SiliconCompiler | ローカル/CI中心 | 合成〜P&R自動化 |
| レイアウト | KLayout | ローカル中心 | GDS編集、DRC |
| レイアウト | gdspy | Colab可 / ローカル | GDS生成 |
| レイアウト | gdsfactory | Colab可 / ローカル | PCell生成 |
| レイアウト | PHIDL | Colab可 / ローカル | 形状自動生成 |
| レイアウト自動生成 | ALIGN | Linuxローカル / Docker | アナログ配置配線自動化 |
| 物理設計フロー | OpenROAD | Linuxローカル / Docker | 自動P&R |
| RTL-to-GDS | OpenLane | Docker / Linuxローカル | RTLからGDS一括フロー |
| PDK管理 | volare | Colab可 / ローカル | オープンPDK管理 |
| アナログ自動化 | BAG | Linuxローカル中心 | 回路・レイアウト自動生成 |
| セル生成/評価 | LibreCell | Linuxローカル中心 | セル特性抽出 |
| レイアウト検証 | magic | Linuxローカル | DRC/LVS |
| PCB基板設計API | pcbnew | ローカル(KiCad) | 基板編集自動化 |
| PCB製造自動化 | KiKit | ローカル(KiCad) | 面付け・製造データ生成 |
| 計測器制御 | pyvisa | ローカル | 測定自動化 |
| 実機I/O | pyserial | ローカル | UART通信制御 |
| 電磁界解析 | OpenEMS | Linux / WSL / Docker | FDTD電磁界解析 |
| 熱解析/PDE | FiPy | Colab可 / ローカル | 熱拡散解析 |
| 熱解析/PDE | FEniCS | ローカル / Docker | FEMによる物理解析 |
| トポロジー解析 | NetworkX | Colab可 / ローカル | ネットリストをグラフ解析、ループ検出、経路計算 |
| パワー解析 | PowerGrid系ツール | ローカル中心 | IR drop解析、電源網評価 |
Discussion