5. レイアウト入力と検証 |
Library Manager のメニューより、[File] → [New] → [Cell View...] を選び、New File フォームに下記の設定を行い、MUX2 セルの中に Layout View を作成する。Layout Viewを作成すると、レイアウトエディタが自動的に起動する。次回からは、Library ManagerでLayout Viewをダブルクリックすると、データを読み込んだ状態でレイアウトエディタを起動することができる。
Library | ic1 |
Cell | MUX2 |
View | layout |
Type | layout |
Open with | Layout L |
Always use this application for this type of file | Checkを入れる |
※ レイアウト図は、複数のレイヤー上に描かれたパターンを重ねて表示した図である。パレットには、n-well(DNW)、p+(DPDIFF)、n+(DNDIFF)、ゲートPoly-Si(GP)、コンタクト(C)、第1層メタル(M)、VIA(SC)などのレイヤーが表示されているので、どのような色やパターンが割り当てられているか確認しておこう(好みに応じて変更することもできる)。
使用するレイヤー
レイヤー名 | 使用目的 |
---|---|
SM | 第2層メタルの配線パターンを入力 |
SMtext | 第2層メタルの配線名を入力 |
COMMENT | コメントの図形や文字を入力 |
レイアウトエディタのツールバーにあるWorkspace欄で、Basicを選択すると、ウインドウの左下の方にNavigatorとProperty Editorのタブが追加表示される。Navigatorには、レイアウトに使用されている配線やインスタンス(呼び出されたモジュールなどのデータ)のリストが表示されるので、これをクリックして、そのオブジェクトを選択することができる。Property Editorでは、選択したオブジェクトの座標などの値を変更することができる。
ツールバーに数字を入力する欄があるが、ここには、Display Stop Level(表示階層数)を設定する。もし、この値が0になっていたら、5〜10程度の値を入力しておこう。インスタンスの階層をどこまで表示するかを決める値である。値が 0 だとインスタンスの枠だけが表示され内部の構造は表示されない。
レイアウトエディタの画面
コマンドを起動するには、以下の3種類の方法がある。
メニューバーからコマンドを辿ると、最終的なコマンドのリストの右端に、バインドされたキーが示されている。バインドキーを使用すると格段に作業効率が良くなるので、よく使用するものは覚えておこう。主なコマンドは、下記のレイアウトエディタ・コマンド解説に説明してあるので、必要に応じて参照すること。
レイアウトエディタのツールバー(括弧内はバインドキー)
---> レイアウトエディタ・コマンド解説
Display Levels | Start | 0 |
Stop | 10 | |
Grid Controls | Minor Spacing | 6 |
Major Spacing | 60 | |
X Snap Spacing | 12 | |
Y Snap Spacing | 12 | |
Snap Modes | Create | orthogonal |
Edit | orthogonal |
fキーを押して、チップの全体像を表示させた後、CTRL+zキーを数回たたくか、画面中央部をマウスの右ボタンを押しながらドラッグして画面を拡大すると、MOSFETや第1層メタルなどのパーツが見えてくる。マスターの中央を座標(0, 0)に配置する必要があるため、以下の操作によりマスターの座標を確認する。
以上で、マスターの配置ができたが、レイアウトの編集中にマスターの位置が動いてしまうと、それ以降の配線はすべてエラーになるので、時々、マスターの座標をProperty Editorで確認するとよい。
マスターは、4つのエリアに分割されており、4個の独立した回路を搭載できる。電源も分離されており、各エリアへ電源を供給するパッド※1の配置は、上の図のようになっている。複数のエリアにまたがって回路を配置する場合は、電源リング※2も相互に接続する必要がある。
※1 パッドは、外部との接続のためにチップ周囲に並べられた電極である。内部のvdd, vssに接続するパッドと、信号を入出力するパッドがあり、信号用のパッドには、ESD回路(静電気から内部回路を保護する回路)が内蔵されている。
※2 電源リングは、チップの周囲に張り巡らされた、vddとvssの配線である。ここから内部の回路へと電源配線が引き出されている。
マスターの内部には、n-ch MOSFET, p-ch MOSFET, 第1層の配線部品、キャパシタ、抵抗(3種類)を横に並べた行が複数用意されている。MOSFETは、下図のような構成になっており、各電極には、シアンの第2層メタルへの接続部が用意されている。
Library | Cell | View | 必要個数 |
---|---|---|---|
MeRL | INV01 | layout | 1 |
MeRL | NAND | layout | 3 |
[重要] よく見ると、MOSFETのゲート電極(緑)の本数が回路図のMOSFET数よりも多い。例えば、INV01の回路図には、MOSFETは、n-ch 1個、p-ch 1個の合計2個しか使用していないが、上記のレイアウトでは、4本のポリシリコンが使われている。INV01セルの右側のゲートポリシリコン(緑)は、n-chがVSS配線、p-chがVDD配線に接続されていて、常にOFFの状態になっている。実は、このマスター上では、同じ行にあるMOSFETは独立しておらず、隣の回路とショートするため、ゲートをOFFにすることにより、隣接した回路を電気的に分離するために使用している。
配線例を下図に示す(クリックで拡大)。この例では、n-ch MOSFET, p-ch MOSFETを2行づつ使用している。配置済みの第1層メタル(赤)を上手く使って、第2層メタル(シアン)の配線同士がショートしないようにしよう。
各エリアの端のパッドは、電源ピンとして予約されているため(本ページ上のほうの、エリアの解説図参照)、入出力(IO)用には使用できない。電源パッド以外のパッドは、エリア内であればどこを使用してもよい※。
※ パッドには、通常、ESD(静電気対策)やIOバッファ回路が付属しており、電源が必要である。他のエリアのパッドを使用するためには、他のエリアにも電源を供給する必要がある。
[注意] SMレイヤー、SMtextレイヤーの色は、両方シアンなので、レイヤーを間違えないように注意すること。
[重要1] 回路図の配線名(またはポート名)とレイアウトの配線ラベルが一致していることを確認。大文字、小文字、!のあるなしも合わせること。
[重要2] CMOS回路の構造上、VSSは半導体基板を通じてチップ全体の電源(-側)に繋がっている、このため、後述のLVSによる設計検証でエラーが発生しないように、4領域の電源(-側)のパッドに同じ名前(VSS)を付けておく。
レイアウトが完成したら、保存するのを忘れないように。引き続き実習を行う場合も、レイアウトエディタと、CIWをいったん終了すること。
レイアウト検証(DRC)では、設計規則に違反したレイアウトを自動検出する。DRCエラーが完全になくならないと、その設計データに基づいて製造をすることはできない。ここでは、設計検証ツールとして、Mentor Graphics社のCalibreを使用する。
新規にログインした場合は、統合環境とDRC用の環境設定を行う。前の実習から引き続いて実習を行う場合は、設定の必要はない。
vlsi> cd ~/ic1 vlsi> setlic 1 (Cadence用の環境設定番号を指定) vlsi> setlic 6 (Calibre用の環境設定番号を指定) vlsi> virtuoso & (統合環境の起動コマンド)
[参考] DRCツールや次項のLVSツールは、多数のファイルを自動生成するため、ワーキングディレクトリとは別のディレクトリで行わないと収拾がつかなくなる。ここでは、DRC専用に予め用意したDRCというディレクトリを使用するため、DRC Run Directory欄にディレクトリ DRC を指定した。
DRCエラーがなければ、チェック欄の全てのチェックリストに緑のチェックマークがつき、DRC Summary Reportウインドウの最後のほうに、Total DRC Results Generated: 0 と表示される。DRCエラーがある場合は、チェック欄に赤の×マークがが表示される。右上欄には、エラー箇所番号が表示され、下欄にエラーの原因が表示される。
DRCエラーがある場合
DRCエラーフリーの場合
DRC RVEでは、エラーの箇所をレイアウトエディタ上に表示する機能がある。右上欄のエラー箇所番号をダブルクリックすると、レイアウトエディタの上で、エラー箇所がハイライト表示される。また、DRC RVEのメニューから、[Highlight] → [Zoom To Highlight]を選んでからエラー箇所番号をクリックすると、レイアウトエディタでエラー箇所がズームされる。複数のエラー箇所をハイライトすると、どのエラーがどのハイライトに対応しているのか分からなくなるので、メニューより、[Highlight] → [Clear Highlight]で、これまでのハイライトを消すことができる。修正とRun DRCを繰り返し、全てのエラーを取り除く。
[参考] マスタースライス方式では、メタル層のみを設計するため、適切にSnap Spacingが設定されていればDRCエラーが発生することはまずない。もし、エラーが発生したなら、編集作業中にマスターの位置が原点からずれた可能性が高い。レイアウトエディタで、マスターのレイアウトパターン(MOSFETなど)をクリックして、Property Editor 欄で、Origin = [0, 0] となっているか確認しよう。
[注意] CalibreはCentOSとの相性が悪いらしく、CentOSの端末を使用している場合は、たまにキーボードが使えないことがある。その場合は、終了時に表示される Save Settings?フォームで、Noボタンをクリックし、設定の保存をスキップする。
DRCは、レイアウト上の物理的な寸法や位置関係を調べており、配線の誤りやショートは検出できない。このため、レイアウト対回路比較(LVS)のツールを用いて、レイアウトから作成した回路図と、シミュレーションの際に作成しておいた回路図を比較することにより、レイアウトデータと設計した回路が一致していることを確認する。半導体メーカは、DRCにパスしていれば製造が可能である。しかし、設計データにLVSエラーがあった場合、回路は設計者の意図通りに動作しない。
vlsi> emacs ~/.cshrc &修正前
~/design/vdec800/bin修正後
~/ic1/bin修正後したら .cshrc を保存し、設定を読み込む。
vlsi> emacs ~/.cshrc & vlsi> source ~/.cshrc
vlsi> emacs ~/ic1/bin/calbr080 &
set SOURCEPATH = netlist_lvs_upper set VIRTUOSOINVOKEDIR =~/ic1 set RULEFILEDIR = ~/ic1/rules/sanyo080ga
vlsi> cd ~/ic1 vlsi> setlic 1 (Cadence Virtuoso用の環境設定番号を指定) vlsi> setlic 6 (Mentor Calibre用の環境設定番号を指定) vlsi> virtuoso &
Library | ic1 |
Cell | VERIFICATION |
View | schematic |
Type | schematic |
Open with | Schematics L |
Always use this application for this type of file | Checkを入れる |
vlsi> cd ~/ic1/LVS vlsi> lvsnet vlsi> calbr080 lvs ic1 MUX2 (ic1はライブラリ名、MUX2はレイアウト名)
set SOURCEPATH = ../sim/VERIFICATION/hspiceD/schematic/netlist set NETLIST_ORG = $SOURCEPATH/netlist #set NETLIST_ORG = netlist
エラーを示す赤×マークの左の+をクリックして展開すると、エラーの種類別にエラーがリストされている。下図の例では、レイアウトと回路図の間に一致しない箇所(Discrepancies)があり、ポートの不一致(Incorrect Ports)であることが示されている。右下欄を見ると、LAYOUT NAME(レイアウト側)が misssing port、SOURCE NAME(回路図側)が SEL となっている。つまり「回路図のSELに対応するポートががレイアウトに存在しない」ということを意味しているので、SELのラベルが、正しいレイヤーで、正しい位置(配線の上)に書かれているか確認する必要がある。
エラーが修正できたら、RVEのメニューから、[File] → [Exit]で終了。
レイアウトが完成したら、下記の要領で、空き面積に、第2層メタル(SM)レイヤーで、設計者を判別するためのIDパターンを入れておく。マスターのパターンと重なってもよい。通常の設計では、IDパターンの作成は必要ないが、ここでは、提出された課題レポートの識別コードとして使用するので描き忘れないように。(描き忘れていると未提出扱いとなるかもしれない)
Grid Controls | Minor Spacing | 0.1 |
Major Spacing | 1 | |
X Snap Spacing | 0.1 | |
Y Snap Spacing | 0.1 |
Copyright (C) 2017- Akio Kitagawa, Kanazawa Univ.