Glade:はじめの一歩(4)=インバータの設計(回路の検証:LVS)
(17/03/09: akita11.icon=1st draft)
(20/05/12: OpenRule1um用に更新)
続いて、設計したレイアウトと回路図が正しく対応づいているかをチェックします。これをLVS (Layout Versus Schematic)と呼びます。 手順としては、
レイアウトから接続情報(ネットリスト)を出力
両者が一致しているかを検証
となります。
↓まず回路図からネットリストを出力する前に、DisplayOptionから"Instance Names"を"Force Spice Compatible"を選択しておきます(これは1回だけ設定すれば以降は不要のはず。これは回路図中のMOSトランジスタなどのインスタンス名を、ネットリストの業界標準のspice形式にあわせる(MOSFETは"M"からはじまる)設定です)。
https://makelsi.github.io/images/docs/Glade/lvs00.png
↓続いて、レイアウトに対して、LVS用のルールファイル"OpenRule1um-lvs.py"を使ってLPEを実行しま(一つ前のLPEのところでextractedビューを作成していたら、この作業は同じなので不要です)
https://makelsi.github.io/images/docs/Glade/lvs04.png
↓この状態(レイアウトのextractedが表示された状態)で、いよいよLVSをかけます。Verify→LVS→RunLVSを選びます。
https://makelsi.github.io/images/docs/Glade/lvs05.png
↓LVSの設定で、"Schematic Source"(回路図側に何を使うか)で,"schematic"を選ぶと,そのセルのschematicビュー(この例では,invの回路図)が使われます.
https://makelsi.github.io/images/docs/Glade/lvs06b.png
↓結果を見ると、すごく地味ですが、"The netlists match"と言われていて、エラー箇所(inv.err)が空のようなので、エラーなしで検証OK、のようです。
https://makelsi.github.io/images/docs/Glade/lvs07.png
↓あまりにあっさりLVSがOKになってしまったので、試しに意図的にレイアウトを間違えてみましょう。pMOS側の出力端子Oへの接続配線をはずしてみます。
https://makelsi.github.io/images/docs/Glade/lvs08.png
ついでにもう1個、回路図(test/inv/schematic)のほうで、pMOSのサイズを意図的に違う値にしてみます。↓ではpMOS(M0)を選択した状態でプロパティを開き、w(ゲート幅)を2um(レイアウトでは6um)に変更してみます。その後、回路図の変更のあとに行うCheck→CheckCellviewを行っておきます。
https://makelsi.github.io/images/docs/Glade/lvs08a.png
↓この状態でLPEでextractedをつくって、同じようにLVSをかけてみると、1箇所のデバイス(素子)の不一致(pMOSのwを変更したのが原因)と、2か所のネットリストの不一致(出力Xをはずしたのが原因)が検出されていることがわかります。
https://makelsi.github.io/images/docs/Glade/lvs09.png
あ、いま行った変更は、もとに戻して、念のためLVSを通しておきましょう・・・