アナログIC設計入門

CMOSインバータを1個、回路図からGDSまで自分の手で描く

← 講義ポータルへ戻る
この章の学習のねらい
本講座で使う5本のツールが、それぞれ何を受け取り何を出すかを把握します。ツールの操作方法はここでは扱いません。5本の関係が分かっていれば、第3章以降でエラーが出たとき、どのツールの問題かを切り分けられます。判断点はありません。
最初にお読みください:検証の範囲と限界
本講座に掲載する数値、コマンド、画面出力は、AIが構築した検証環境で実行して得たものです。執筆者が IIC-OSIC-TOOLS のコンテナを起動し、第2章から第7章までを人の手で通した確認は行っていません。

検証環境のツールは、コンテナと同一のバージョンをソースから個別に導入したものです(下記)。したがって、ツールの挙動としては同じ結果になると考えられます。ただし、コンテナ固有の事情(起動手順、パス、ポート、初回のダウンロード、画面の見え方)については確認されていません。

読者の皆さんに確認していただきたいこと
実際に手を動かし、掲載どおりに進むかを確かめてください。掲載値と異なる結果が出た場合、それは読者の誤りではなく、本講座の記述が読者の環境に合っていない可能性があります。
特に次の3点が通れば、以降は検証済みの経路と同じになります。
・第3章3.5節 部品の一覧に sky130_fd_pr が表示されるか
・第3章3.7節 xschem -n -q -x で作業ディレクトリに .spice が出力されるか
・第4章4.1節 ngspice -bvsp を返すか(1.8V ではなく 0.8V 台)

記述の誤りに気づかれた場合は、ご連絡ください。
検証環境
確認日は2026年8月8日から9日です。

magic 8.3.678 / ngspice 46 / netgen 1.5.323 / xschem 3.4.8(コミット b69f793f)/ klayout 0.28.16 / open_pdks f6eeac7d(sky130A)

このうち magic、ngspice、netgen、xschem、open_pdks の5つは、第2章で導入する IIC-OSIC-TOOLS の 2026.07 版と同一のバージョンです。klayout のみ、コンテナは 0.30.9 で、確認に使用したものより新しくなっています。
コンテナのバージョンが更新されると、出力の書式や数値が変わる場合があります。掲載値と一致しない場合は、本講座の値ではなく読者の環境で得られた値を採用します。

画面(GUI)については、仮想ディスプレイ上で xschem と magic を起動し、画面構成、メニュー構成、起動時に表示される確認画面、属性編集画面を確認しています。掲載する画面構成の図はこれに基づきます。
magic については、マウスによる範囲指定、S による選択、Z による拡大、undo による取り消し、矢印キーの動作も確認しました。
確認していない項目は、該当箇所に「未確認」と明記します。

0.1 道具が5本に分かれている理由

本講座では次の5本を使います。

表0-1 使用するツール
名前読み担当
xschemエックススケム回路図を描く
ngspiceエヌジースパイス回路の動作を計算する
magicマジックシリコン上の図形を描く/検査する/取り出す
netgenネットジェン2つの回路が同じかを照合する
klayoutケーレイアウト出力した製造データを表示する

プリント基板の設計ソフトである KiCad は、回路図エディタ、基板エディタ、部品ライブラリが1つのアプリケーションにまとまっています。本講座の5本は、そうなっていません。別々のプログラムであり、開発元も異なります。

表0-2 開発元
名前主な開発者・組織
xschemStefan Schippers(個人)
ngspicengspice team(SPICE3f5から派生)
magicカリフォルニア大学バークレー校で開発。現在は Tim Edwards が保守
netgenTim Edwards
klayoutMatthias Köfferlein(個人)

統合されていないのは、これらが1つの計画のもとで作られたのではなく、別々の場所で別々の目的のために作られ、あとから組み合わせて使われるようになったためです。

組み合わせを成立させているもの
5本をつなぐのはファイルです。あるツールが出力したファイルを、次のツールが読み込みます。ツール同士が直接やり取りする仕組みはありません。
このため、途中でツールを別のものに入れ替えることができます。ngspice の代わりに Xyce を使う、magic の代わりに KLayout でレイアウトを描く、といった構成が実際に存在します。統合されていないことは、この講座の範囲では手間になりますが、そもそもの設計思想です。

0.2 それぞれが受け取るものと出すもの

表0-3 入力と出力
工程ツール受け取るもの出すもの
1xschem人の操作(部品の配置と配線)回路図 .sch
ネットリスト .spice
第3章
2ngspiceネットリスト .spice数値(画面出力)第4章
第5章
3magic人の操作(図形の描画)レイアウト .mag第6章
4magicレイアウト .mag違反の件数と箇所第6章
5magicレイアウト .mag抽出結果 .ext
ネットリスト .spice
第7章
6netgenネットリスト2つ
(回路図側とレイアウト側)
照合結果 comp.out第7章
7magicレイアウト .mag製造データ .gds第7章
klayout製造データ .gds画面表示第7章

magic が4つの工程を担当しています。図形を描き、検査し、そこから回路を取り出し、製造データを書き出します。5本のうち magic だけを覚えるのであれば、この4つが magic の仕事です。

klayout は工程に含まれません。magic が出力した .gds を別のソフトで開いて確認するために使います。同じソフトで書いて同じソフトで読むと、書き出しの誤りに気づけないためです。

0.3 ファイルの流れ

【図0-1】ファイルの流れ

  人の操作
     │
     ├─→ xschem ──→ inverter.sch          回路図
     │                    │
     │                    ↓ ネットリスト出力
     │              inverter.spice ──→ ngspice ──→ 数値
     │                    │                        (閾値、遷移時間)
     │                    │
     │                    └──────────────┐
     │                                    │
     └─→ magic ───→ inverter.mag         │  回路図側
                          │               │
              ┌───────────┼───────┐       │
              ↓           ↓       ↓       │
            DRC        抽出    GDS出力     │
              │           │       │       │
          違反の件数  inverter.ext │       │
                          │       │       │
                          ↓       ↓       │
                  inverter.spice  inverter.gds
                    (レイアウト側)  │
                          │          └─→ klayout ──→ 画面表示
                          │
                          └───→ netgen ←─┘
                                    │
                                    ↓
                                comp.out    照合結果

中央から左右に分かれ、最後に netgen で合流します。左が回路図から出たネットリスト、右がレイアウトから取り出したネットリストです。この2つが一致すれば、描いた図形が意図した回路になっていることになります。第7章の作業です。

0.4 途中のファイルはすべて読める

やり取りされるファイルは、.gds を除いてすべてテキストです。テキストエディタで開いて中身を確認できます。

表0-4 ファイルの形式と大きさ
ファイル内容形式大きさ
inverter.sch回路図テキスト950バイト
inverter.spiceネットリスト(レイアウト側)テキスト281バイト
inverter.magレイアウトテキスト2,063バイト
inverter.ext抽出結果テキスト1,437バイト
comp.out照合結果テキスト3,494バイト
inverter.gds製造データバイナリ3,824バイト

いずれも、本講座の手順で作成したインバータ1個での実測値です。読者が作るものも同じ程度になります。

レイアウトのファイルは、次のような内容です。

インバータのレイアウト(inverter.mag)の冒頭

  magic
  tech sky130A
  magscale 1 2
  timestamp 1786228265
  << nwell >>
  rect -420 320 240 1300
  << nmos >>
  rect -15 -100 15 100

層の名前と長方形の座標が並んでいます。<< nwell >> の次の行が、nwell という層に置かれた長方形1個です。数字4つは、左下のX、左下のY、右上のX、右上のYです。

座標の単位は magic の内部単位で、sky130A では1単位が 0.005µm です。<< nmos >>rect -15 -100 15 100 は、横幅が 15−(−15) = 30単位 = 0.15µm、縦が 100−(−100) = 200単位 = 1.0µm を意味します。この 0.15µm がゲート長、1.0µm がチャネル幅です。第4章で決める数値が、そのまま図形の寸法になります。

ネットリストは次のような内容です。

レイアウトから取り出したネットリスト(inverter.spice)

  .subckt inverter VSS VDD OUT IN
  X0 OUT IN VSS VSS sky130_fd_pr__nfet_01v8 w=1 l=0.15
  X1 OUT IN VDD VDD sky130_fd_pr__pfet_01v8 w=3.5 l=0.15
  .ends

トランジスタ2個と、その接続先が書かれています。X0 の行が NMOS、X1 の行が PMOS です。wl は幅と長さで、単位はマイクロメートルです。

この2行は、図形から計算された値です。読者が描いた長方形の寸法が、そのままここに現れます。第7章では、この値が回路図に書いた値と一致するかを照合します。

テキストであることの意味
作業の途中でエラーが出たとき、ファイルを開いて中身を見れば、どこまでできているかが分かります。
差分を取れば、直前の操作で何が変わったかが分かります。
AIに相談するとき、ファイルの中身をそのまま示せます。画面の写真を撮る必要がありません。
本講座で AI に相談する場面(第1章1.5節)は、この性質の上に成り立っています。

0.5 章とツールの対応

表0-5 どの章でどれを使うか
xschemngspicemagicnetgenklayout
第2章 環境の構築5本すべての導入を確認する
第3章 回路図の作成
第4章 特性の測定
第5章 実行手順の自動化
第6章 レイアウトとDRC
第7章 抽出・LVS照合・GDS出力

第6章を除き、各章は1本か2本のツールで完結します。第3章でエラーが出た場合、原因は xschem か、その設定ファイルか、読者の操作のいずれかです。magic や netgen は関係しません。切り分けの範囲がこれで決まります。

第7章では5本すべてを使います。工程が3つ(抽出、照合、出力)あり、それぞれ担当が異なるためです。

0.6 GUIとコマンドの使い分け

5本のうち、xschem と magic と klayout は画面を持ちます。ngspice と netgen は画面を持たず、コマンドで実行します。

表0-6 操作の方法
ツール画面コマンド本講座での使い方
xschemありあり画面で描く。第5章でコマンドからも実行する
ngspiceありコマンドのみ
magicありあり画面で描く。検査と出力はコマンドでも実行する
netgenありコマンドのみ
klayoutありあり画面のみ

xschem と magic は、画面での操作と、コマンドでの操作の両方ができます。同じ作業をどちらでも実行できます。

第3章と第6章では画面で描きます。図形の位置を目で見ながら決めるためです。第5章では、同じ作業をコマンドで実行する形に置き換えます。条件を変えて何度も繰り返す作業になるためです。この置き換えが可能なのは、両方の入口が用意されているためです。

この章のまとめ
・使うツールは5本。開発元の異なる別々のプログラム
・5本をつなぐのはファイル。ツール同士が直接やり取りする仕組みはない
・magic が4つの工程(描画、DRC、抽出、GDS出力)を担当する
・klayout は工程に含まれない。書き出した結果を別のソフトで確認するために使う
・やり取りするファイルは .gds を除きすべてテキスト。中身を読める
・レイアウトの座標は magic の内部単位。sky130A では1単位が 0.005µm
・第6章を除き、各章は1本か2本のツールで完結する。エラーの切り分けの範囲がこれで決まる
・xschem と magic は画面とコマンドの両方から操作できる。第5章の自動化はこの性質を使う