アナログIC設計入門

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

← 講義ポータルへ戻る
この章の学習のねらい
magic でシリコン上の図形を作成し、設計規則検査(DRC)に合格させます。工程3と4です。判断点は D05「配置」と D06「エラーの修正順」。
回路図には現れないウェルタップ、基板タップ、コンタクトを扱います。
設計の工程 回路図、シミュレーション、レイアウト、DRC、抽出、LVS照合、GDS出力の7工程と、各工程で使用するツールを示した流れ図。 【図1-1】設計の工程 / 本章は [3][4] [1] 回路図 xschem [2] シミュレーション ngspice [3] レイアウト magic [4] DRC magic [5] 抽出 magic [6] LVS照合 netgen [7] GDS出力 magic 準備 5本 + sky130A
本章に掲載する座標とDRC件数は、第0章に記載した環境(magic 8.3.678、open_pdks f6eeac7d、2026年8月8日確認)で、実際に図形を作成して得たものです。最終的にDRC 0件、第7章のLVS一致まで到達しています。
コンテナのバージョンが更新されると件数が変わる場合があります。掲載値と一致しない場合は、6.7節の手順で規則名を確認して修正します。

7.1 手作業で行う理由

CMOSインバータのレイアウトは、標準セルライブラリに完成品が含まれており、生成ツールも存在します。本講座で手作業を行うのは、生成されたレイアウトの妥当性を判定するには、自分で作成した経験が必要なためです。

基礎01「KiCad入門」で手作業による配線を行ってから応用「コードとAIでPCB自動化」に進む順序と同じです。

7.2 magic の起動

目的
magic を起動し、sky130A の設計規則が読み込まれた状態にする。

前提
第2章で $PDK_ROOT/foss/pdks になっていることを確認している。

入力
cd /foss/designs/inverter
magic -rcfile $PDK_ROOT/sky130A/libs.tech/magic/sky130A.magicrc &
画面
File Edit Cell Window Layers Drc Options Devices 1 Devices 2  [DRC]
Loaded: inverter  Editing: inverter  Tool: box  Technology: sky130A
                                       box (+0 +0) to (+0.01 +0.01) microns
読み方
上部のバーに Technology: sky130A が表示されていれば、設計規則が読み込まれています。tech name を打つ必要はありません。
その左の [DRC] は、設計規則の検査が有効かを示します。
右端に現在の box の位置がµm単位で表示されます。box コマンドを実行すると、この表示が変わります。
画面の右側はレイヤーのパレットです。nwellndiffusionndcontactpsubstratepcontact など、使用できる層の名前が一覧で並びます。6.3節で扱う層名は、ここで確認できます。

確定したこと
sky130A の設計規則が読み込まれた状態で magic が動作している。
-T sky130A だけでは設計規則が読み込まれない場合がある
magic -T sky130A と書いた資料が多数あります。この書き方は、テックファイルが検索パス上にある場合にのみ動作します。パス上にない場合、次の表示が出ます。
Could not find file 'sky130A.tech' in any of these directories:
         . $CAD_ROOT/magic/sys $CAD_ROOT/magic/sys/current
Failed to load technology "sky130A"
このとき magic は停止せずに起動を続けます。設計規則が読み込まれていない状態で画面が出るため、気づかないまま作業を進めることになります。この状態でDRCを実行すると0件と表示されます。
画面上部のバーが Technology: minimum となっている場合は読み込めていません。上記の -rcfile 指定で起動し直します。
コマンドで確認する場合は tech name を実行します。sky130A と返れば正常です。
magic は「箱」で操作する
magic の操作の中心は、画面上の白い枠(box)です。まず box で範囲を指定し、次にその範囲に層を塗る、という順序です。
box は左ボタンで一方の角、右ボタンでもう一方の角を指定します。左右のボタンで1つの長方形を作る操作は、他のツールにあまりない方式です。
座標で正確に指定する場合は、コマンド欄で box -0.8um -0.5um 0.8um 0.5um のように入力します。本章ではこの方法を使います。手作業でマウスを動かすより確実で、掲載した座標をそのまま入力できるためです。
表6-1 magic の基本操作
操作方法動作確認
座標で範囲を指定box -0.8um -0.5um 0.8um 0.5um確認済み
層を塗るpaint <層名>確認済み
層を消すerase <層名>確認済み
保存save inverter確認済み
範囲の指定(マウス)左ボタンで一方の角、右ボタンでもう一方確認済み
図形の選択図形上にカーソルを置いて S確認済み
選択範囲の移動move e 1um(e/w/n/s で方向)確認済み
画面のスクロール矢印キー確認済み
層名の一覧を見る画面右のパレット確認済み
技術ファイルの確認上部バーの Technology:確認済み
box の範囲に拡大Z確認済み
直前の操作を取り消すundo確認済み
縮小/全体表示Shift + Z / V未確認

「未確認」の1行は、本講座で動作を確認していません。magic の公式ドキュメントに基づく記述です。

矢印キーは図形を動かさない
矢印キーは画面のスクロールです。図形の位置は変わりません。
選択した図形を動かす場合は move コマンドを使います。方向は e(東)、w(西)、n(北)、s(南)で指定します。
box -1.9um -1.52um -1.07um -0.88um
select area psd
move e 1um
本講座の手順では、座標を box で直接指定して描くため、移動の操作は使いません。描き直す場合は erase で消すか、undo で直前の操作を取り消します。
undo の効果を確認する方法
undo が効いたかどうかは、保存してファイルの中身を見れば確認できます。
本講座で、レイアウトに m1 を1枚塗ってから undo を実行したところ、次のようになりました。
塗る前      2,063バイト   << m1 >> なし
paint 後    2,143バイト   << m1 >> あり
undo 後     2,105バイト   << m1 >> なし
undo で層が消えています。ファイルサイズが元と完全には一致しませんが、これは磁気ファイル内の配置が変わるためで、図形は元に戻っています。

7.3 トランジスタの図形構成

【図6-1】NMOSの平面構成

              poly(ゲート)
                  │
        ┌─────────┼─────────┐
        │  ┌──────┼──────┐  │
   ─────┼──┤ ndiff(拡散層)├──┼─────
        │  └──────┼──────┘  │
        └─────────┼─────────┘
                  │
       ソース  ← ゲート →  ドレイン

  ndiff と poly が交差した部分がトランジスタになる。
  交差部分の縦の長さが W、poly の横幅が L。
  ゲートの左右の ndiff がソースとドレイン。

トランジスタという部品を置くのではありません。2つの層を交差させると、その交差部分がトランジスタになります。第3章で W=1L=0.15 と入力した数値は、この交差部分の寸法です。

表6-2 使用するレイヤーの名前
magic での名前用途使用箇所
nwellNウェルPMOSを配置する領域
ndiff / pdiff拡散層(ソース・ドレイン)NMOS / PMOS
polyゲート両方
psd / nsdタップの拡散層NMOS側 / PMOS側
psc / nscタップのコンタクトNMOS側 / PMOS側
ndc / pdc拡散層のコンタクトNMOS / PMOS
pcpolyのコンタクトゲート
li1ローカル配線層最下層の配線
層の名前を間違えると、エラーが出ずに無視される
magic の paint は、存在しない層名を指定してもエラーを表示しません。図形が作られないまま処理が進みます。
本講座の作成過程では、次の誤りが実際に発生しました。
誤った名前正しい名前症状
licon1ndc / pdcコンタクトが作られず、配線が拡散層につながらない
psubstratecontactpsd + pscタップが作られない。DRCは0件で通る
nsubstratecontactnsd + nsc同上
タップの2つは特に発見が遅れます。図形がないためDRCは合格し、第7章のLVSで初めてネット数の不一致として現れます。
塗ったあとに save して cat inverter.mag を実行し、指定した層名が << ... >> の行に現れているかを確認する方法が確実です。

7.4 【判断点 D05】レイアウトの配置

【図6-2】配置の2案

  (A) 縦積み                      (B) 横並び
  ┌──────────────┐              ┌───────────┬───────────┐
  │  nwell       │              │  nwell    │           │
  │ ┌──────────┐ │              │ ┌───────┐ │ ┌───────┐ │
  │ │  PMOS    │ │              │ │ PMOS  │ │ │ NMOS  │ │
  │ └──────────┘ │              │ └───────┘ │ └───────┘ │
  ├──────────────┤              └───────────┴───────────┘
  │ ┌──────────┐ │
  │ │  NMOS    │ │               ゲートを1本の poly で
  │ └──────────┘ │               接続できない
  └──────────────┘

  ゲートを1本の poly で
  縦に貫通できる
【判断点 D05】レイアウトをどう配置するか

決めること
縦積み(A)、横並び(B)、またはフィンガー分割のいずれにするか。

材料
・NMOS: W=1µm、PMOS: W=3.5µm(D02で決定)、L=0.15µm
・目的:学習用。面積の最適化は目的としない
・後続工程:DRC、抽出、LVS、GDS出力

相談
質問:
「sky130でCMOSインバータのレイアウトを手作業で作成します。配置の候補を3つ、それぞれ何を犠牲にするかとともに挙げてください。手作業での作成しやすさも評価してください。」

返答
1. 縦積み。ゲートを1本のpolyで接続できるため配線が単純。標準セルと同じ構成で参考資料が多い。縦方向に長くなる
2. 横並び。ウェルの形状が単純。ゲート間の接続に配線が1本必要
3. フィンガー分割。PMOSを2本に分割して幅を確保する。面積効率が高いが、手作業では複雑

決定
1(縦積み)。
理由:描画する図形が最も少ないこと。構造が単純なほうが第7章でLVS不一致の原因を特定しやすいこと。

検証
本講座の手順で作成したところ、DRC 0件、第7章のLVSも一致しました(6.6節、6.7節)。
判定:◯

7.5 レイアウトの作成

作業は7段階に分かれます。各段階で boxpaint を実行します。座標は本講座で実際に通したものです。

座標の指定方法
box の4つの数字は、左下のX、左下のY、右上のX、右上のYです。um を付けるとマイクロメートル単位になります。付けない場合は magic の内部単位(sky130Aでは0.005µm)です。
本章では原点をNMOSの中心付近に置いています。負の座標が現れますが、magic では問題ありません。

段階1 nwell を置く

目的
PMOSとウェルタップを配置する領域を確保する。

入力
magic のコマンド欄で実行します。
load inverter
box -2.1um 1.6um 1.2um 6.5um
paint nwell
読み方
3.3µm × 4.9µm の領域です。nwell の最小幅は 0.84µm(規則 nwell.1)なので余裕があります。
左側を大きく取っているのは、段階5でウェルタップを nwell の中に置くためです。

確定したこと
PMOS を置く領域ができた。この時点のDRC件数:0

段階2 NMOS を作る

表6-3 トランジスタの寸法(第4章で決定した値)
項目NMOSPMOS由来
W(チャネル幅)1.00µm3.50µmD02(第4章)
L(チャネル長)0.15µm0.15µmD03(第4章)
拡散層ndiffpdiff
配置nwell の外nwell の中D05
入力
box -0.8um -0.5um 0.8um 0.5um
paint ndiff
box -0.075um -0.7um 0.075um 0.7um
paint poly
読み方
ndiff は縦が 0.5−(−0.5) = 1.0µm です。これがチャネル幅 W になります。第4章の表4-2で決めた 1.0µm がここに現れます。
poly は横幅が 0.075−(−0.075) = 0.15µm です。これがチャネル長 L です。
poly の縦は −0.7µm から 0.7µm で、拡散層(−0.5〜0.5µm)より上下に 0.2µm ずつ長く伸ばしています。拡散層の端でちょうど終わると、ポリシリコンの張り出しに関する規則に違反します。
横幅を 1.6µm と広めに取っているのは、段階6でコンタクトを置く余地を確保するためです。

確定したこと
NMOS ができた。ソースとドレインは poly の左右の ndiff である。この時点のDRC件数:0

段階3 PMOS を作る

入力
box -0.8um 2.15um 0.8um 5.65um
paint pdiff
box -0.075um -0.7um 0.075um 5.85um
paint poly
読み方
pdiff の縦は 5.65−2.15 = 3.5µm です。これが PMOS の W です。D02 で決めた 3.5倍が、ここで図形の寸法になります。
NMOS が 1.0µm、PMOS が 3.5µm なので、PMOS のほうが3.5倍長い長方形になります。
2つ目の box は、NMOS の poly の下端(−0.7µm)から PMOS の poly の上端(5.85µm)までを1本で塗る指定です。これで両方のゲートが1本の poly でつながります。縦積み配置(D05)を選んだ理由がここに現れます。

確定したこと
トランジスタ2個ができ、ゲートがつながった。この時点のDRC件数:0

段階4 ゲートのコンタクト用に poly を広げる

入力
box -0.25um 0.82um 0.25um 1.38um
paint poly
読み方
ゲートの poly は幅 0.15µm ですが、この幅ではコンタクトを置けません。コンタクトを置く箇所だけ幅を 0.5µm に広げます。
位置は NMOS と PMOS の間(y = 0.82〜1.38µm)で、どちらのトランジスタにもかからない高さです。

確定したこと
ゲートにコンタクトを置ける形になった。この時点のDRC件数:0

段階5 タップを置く

ウェルタップ・基板タップ
第3章でNMOSのバックゲートをVSSに、PMOSのバックゲートをVDDに接続しました。レイアウトでは、この接続を接点として作成する必要があります。
NMOSが配置されるp型基板をVSSに固定するのが基板タップ、PMOSが配置されるNウェルをVDDに固定するのがウェルタップです。
タップは、拡散層(psd / nsd)とコンタクト(psc / nsc)の2層で作ります。
入力
box -1.9um -1.52um -1.07um -0.88um
paint psd
box -1.78um -1.4um -1.19um -1.0um
paint psc
box -1.9um 5.78um -1.07um 6.22um
paint nsd
box -1.78um 5.9um -1.19um 6.1um
paint nsc
読み方
psd は基板タップの拡散層、psc はそのコンタクトです。コンタクトは拡散層より 0.12µm 内側に置きます。囲みが足りないと licon.7 の違反になります。
nsd / nsc はウェルタップで、nwell の中(y = 5.78〜6.22µm)に置きます。
どちらも左側(x = −1.9〜−1.07µm)に寄せています。トランジスタの拡散層から 0.27µm 以上離す必要があるためです(規則 diff/tap.3)。

確定したこと
タップができた。この時点のDRC件数:16
この段階でDRC違反が出るのは正常です
本講座の実測では、段階5の時点で16件の違反が出ました。内容はすべて li.5(ローカル配線がコンタクトを囲む量の不足)です。
コンタクトは、その上に li1 の配線が乗ることを前提とした規則になっています。配線を描く段階7で解消します。
段階の途中で件数が増えることは、誤りを意味しません。規則名が何かを確認します。

段階6 拡散層とゲートのコンタクト

入力
box -0.7um -0.44um -0.5um 0.44um
paint ndc
box 0.5um -0.44um 0.7um 0.44um
paint ndc
box -0.7um 2.21um -0.5um 5.59um
paint pdc
box 0.5um 2.21um 0.7um 5.59um
paint pdc
box -0.17um 0.9um 0.17um 1.3um
paint pc
読み方
ndcpdc は拡散層のコンタクトです。ゲートの左右に1本ずつ、計4本置きます。左がソース、右がドレインです。
コンタクトは拡散層より 0.06µm 内側に置きます。ndiff が −0.5〜0.5µm なので、コンタクトは −0.44〜0.44µm です。囲みが足りないと licon.5c の違反になります。
pc は poly のコンタクトです。段階4で広げた箇所(−0.25〜0.25µm)より 0.08µm 内側の −0.17〜0.17µm に置きます。

確定したこと
コンタクトができた。この時点のDRC件数:56

段階7 配線とラベル

目的
コンタクトの上に li1 を敷き、4つの端子を作る。

入力
box -1.9um -1.52um -0.42um -0.42um
paint li1
box -0.78um -0.58um -0.42um 0.58um
paint li1
box -1.9um 5.57um -0.42um 6.22um
paint li1
box -0.78um 2.07um -0.42um 5.73um
paint li1
box 0.42um -0.58um 0.78um 5.73um
paint li1
box -0.25um 0.82um 0.25um 1.38um
paint li1
読み方
1本目と2本目が VSS の配線です。NMOSのソース(左側のコンタクト)と基板タップをつなぎます。
3本目と4本目が VDD の配線で、PMOSのソースとウェルタップをつなぎます。
5本目が OUT で、NMOSとPMOSのドレイン(右側のコンタクト)を縦につなぎます。
6本目がゲートの poly コンタクトの上に乗る配線で、IN になります。
いずれも、下にあるコンタクトより 0.08µm 外側まで広げています。囲みが足りないと li.5 の違反になります。

確定したこと
配線ができた。この時点のDRC件数:0 段階5と段階6で出た違反がすべて解消した。
ラベルとポートの設定
LVSはこの名前で照合します。名前を付けるだけでなく、端子として登録する必要があります。
box -1.7um -1.3um -1.6um -1.2um
label VSS 0 li1
port make 1
box -1.7um 5.9um -1.6um 6.0um
label VDD 0 li1
port make 2
box 0.5um 1.0um 0.6um 1.1um
label OUT 0 li1
port make 3
box -0.1um 1.0um 0.0um 1.1um
label IN 0 li1
port make 4
save inverter
読み方
label <名前> 0 li1 は、指定した box の位置に li1 層のラベルを置く指定です。末尾の層名を省略すると、配線のない場所にラベルが置かれる場合があります。
port make <番号> は、そのラベルを端子として登録する指定です。この行がないと、抽出したネットリストに端子が出ません。

確定したこと
レイアウトが完成した。DRC 0件。
ラベルの名前は回路図と完全に一致させる
第7章のLVSは、回路図のピン名とレイアウトのラベル名を照合します。名前は第3章の表3-6と完全に一致させます(VDD / VSS / IN / OUT)。大文字小文字も区別されます。
ラベルが配線の上に載っていない場合、第7章の抽出結果で .subckt inverter の行に端子が並びません。cat inverter.mag<< labels >> の行を確認すると、どの層に載っているかが分かります。flabel space ... となっていれば、配線のない場所に置かれています。

7.6 DRCの実行

DRC(Design Rule Check)
製造工場が定めた寸法と間隔の規則に違反していないかの検査です。規則は、露光の解像度、エッチングの精度、位置合わせ精度といった製造上の制約から決まります。
基礎01「KiCad入門」で行ったプリント基板のDRCと同じ考え方で、対象の寸法が異なります。
目的
描いた図形が製造できる形状かを検査する。件数と、違反した規則の名前を得る。

入力
件数を記録するため、コマンドから実行します。drc.tcl を作成します。
drc euclidean on
load inverter
select top cell
drc check
drc catchup
puts "TOTAL=[drc list count total]"
foreach e [drc listall why] { puts $e }
quit -noprompt
実行します。
magic -dnull -noconsole \
  -rcfile $PDK_ROOT/sky130A/libs.tech/magic/sky130A.magicrc drc.tcl
画面(違反がある場合の例)
TOTAL=2
Metal1 spacing < 0.14um (met1.2)
{2020 0 2028 2000} {1992 0 2000 2000}
Metal1 > 3um spacing to unrelated m1 < 0.28um (met1.3b)
{2020 0 2056 2000} {1964 0 2000 2000}
読み方
TOTAL= の数字が違反の総数です。0 なら合格です。
括弧の中(met1.2)が規則の名前です。これが直し方を決めます。公式の設計規則書で該当項目を確認できます。
続く波括弧は違反箇所の座標で、単位は magic の内部単位(0.005µm)です。
件数と箇所の数は一致しません。上の例は2件ですが、同じ場所を2つの規則が指しています。1箇所を直せば2件とも消えます。

確定したこと
図形が規則に違反しているかどうか。違反の直し方はまだ決まっていない(D06、6.7節)。
drc list count why では規則の名前が出ない
似た名前のコマンドに drc list count why があります。こちらは「セル名 件数」の対を返すだけで、規則の名前を含みません。
inverter 2
規則の名前が必要なので、drc listall why を使います。
Makefileへの追加
drc:
	magic -dnull -noconsole \
	  -rcfile $(PDK_ROOT)/sky130A/libs.tech/magic/sky130A.magicrc drc.tcl
第5章の make check に加え、make drc が使用できるようになります。

7.7 【判断点 D06】DRCエラーの修正順

【判断点 D06】どのエラーから修正するか

決めること
発生したエラーのうち、設計上の問題によるものと、他のエラーに付随して発生しているものを区別し、修正の順序を決める。

材料
drc listall why の出力(規則の名前、件数、座標)
cat inverter.mag の内容
・PDK名と magic のバージョン

相談
質問:
「magicのDRCで発生したエラーです。設計上の問題によるものと、他のエラーに付随して発生しているものに分類してください。そのうえで修正の順序を提案し、それぞれ何を修正すればよいか記載してください。」

返答
1. レイヤーの過不足(例:nwellがPMOSを覆っていない)
2. 囲み量(enclosure)の不足(例:拡散層がコンタクトを覆っていない)
3. 間隔(spacing)の不足(例:拡散層同士が近すぎる)
4. 最小寸法(width)の不足(例:li1が細すぎる)
理由:上位の項目を修正すると、下位の項目のエラーが同時に解消される場合が多いため。

決定
上記の順序で修正する。

検証
本講座の作成過程で実際に発生した違反と、その解消の推移を6.8節に記載します。
判定:◯ 囲み量の修正が最も多くの違反を解消しました(32件→15件)。

7.8 DRC件数の推移

本講座で実際に作成したときの推移です。

表6-4 段階ごとのDRC件数(本講座での実測)
段階描いた層TOTAL主な規則
1nwell0
2ndiff + poly(NMOS)0
3pdiff + poly(PMOS、ゲート接続)0
4poly(コンタクト部の拡張)0
5psd/psc、nsd/nsc(タップ)16li.5
6ndc/pdc/pc(コンタクト)56li.5
7li1(配線)0

段階5と段階6で件数が増え、段階7ですべて解消しています。増えた違反はいずれも li.5(ローカル配線がコンタクトを囲む量の不足)で、配線を描くことで解消します。

作業の途中で件数が増えることは、誤りを意味しません。規則名を確認し、後の段階で描く層に関するものかどうかを判断します。

座標を自分で決める場合に発生した違反

本講座の座標に至るまでに、実際に次の違反が発生しました。読者が座標を変更する場合の参考になります。

表6-5 修正の過程(本講座での実測)
修正した内容件数の変化規則
(初回)32
拡散層がコンタクトを囲む量を確保32 → 15licon.5cli.5
li1 同士の間隔を確保15 → 14li.3li.c2
poly コンタクトを li1 で囲む14 → 6li.5
poly コンタクトを poly で 0.08µm 囲む6 → 0licon.8a
(タップ追加後)18licon.7
タップの拡散層を追加18 → 7licon.7
nwell の囲みと拡散層の間隔を確保7 → 0diff/tap.10diff/tap.3
表6-6 よく出る規則と意味
規則意味対処
nwell.1N-wellの幅が0.84µm未満nwellを広げる
diff/tap.1拡散層の幅が不足拡散層を広げる
diff/tap.3拡散層同士の間隔が0.27µm未満離す
diff/tap.10N-wellがN-tapを0.18µm囲んでいないnwellを広げる
licon.5c拡散層がコンタクトを0.06µm囲んでいない拡散層を広げるかコンタクトを内側へ
licon.7タップの拡散層がコンタクトを0.12µm囲んでいない同上
licon.8apolyがpolyコンタクトを0.08µm囲んでいないpolyを広げる
li.1li1の幅が0.17µm未満配線を太くする
li.3li1同士の間隔が0.17µm未満配線を離す
li.5li1がコンタクトを0.08µm囲んでいない配線を広げる
li.6li1の面積が不足幅が足りていても面積で落ちる。長さを伸ばす
幅を満たしても面積で落ちる規則がある
li.6met1.6 は最小面積の規則です。幅が最小値ちょうどの細い配線を短く描くと、幅の規則には合格して面積の規則で違反します。
このため、幅の違反を直した直後に件数が増える場合があります。件数が減らないことは、必ずしも修正が誤っていることを意味しません。規則の名前が変わったかどうかを見ます。

7.9 判断点 D03 の判定

第4章で保留していたチャネル長の判断(D03)を判定します。

表6-7 D03の判定
結果判定
最小寸法(L=0.15µm)のままDRCに合格した
Lを大きくして再作成した×(変更後の値を記録する)

本講座で確認した範囲では、L=0.15µm のままDRC 0件に到達しました。判定は ◯ です。

表6-8 判断点の記録(本章まで)
番号決定内容検証結果判定
D01標準トランジスタ、電源1.8V計算が収束した
D02Wp/Wn = 3.5Vsp = 0.9002V、差 2.0%
D03チャネル長 最小 0.15µmDRC 0件に到達
D040.9V±0.15V、差30%以内15条件すべて合格
D05縦積み配置DRC 0件に到達
D06層→囲み→間隔→寸法の順囲みの修正で32→15件
D07第7章で記入
この章のまとめ
・magic の起動は -rcfile で magicrc を指定する。読み込めたかは tech name で確認する
・トランジスタは、拡散層とポリシリコンの交差として作成する
・層の名前を間違えると、エラーが出ずに無視される。cat inverter.mag で確認する
・拡散層のコンタクトは ndc / pdclicon1 ではない
・タップは psd+psc / nsd+nsc の2層で作る
・ラベルには port make が必要。これがないと抽出結果に端子が出ない
・【D05】縦積み配置を選択した。DRC 0件、LVS一致に到達した
・DRCの件数は drc list count total、規則の名前は drc listall why で得る
・件数と違反箇所の数は一致しない。1箇所が複数の規則に触れる
・【D06】層 → 囲み → 間隔 → 寸法 の順に修正する。囲みの修正が最も効いた
・作業の途中で件数が増えることは誤りを意味しない。後の段階で描く層に関する違反が含まれる
・【D03検証】◯ 最小チャネル長のままDRCに合格した