WGexの使い方
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
- (2015/1/6)まだ作成途中なので、もう少しお待ちください・...
- (2015/1/7)一通りできましたので、トライしていただける方...
- (2015/1/9)このページの加筆修正などに、ぜひご協力くださ...
#pcomment(reply)
* インストールと準備 [#g3a2c5a9]
WGexは、LSIのレイアウト設計ツール(DRC・回路抽出つき)で...
CADツールのWGexと関連ファイル一式は、設計試作に参加される...
WGex開発者の東大・浅田邦博先生より、配布先リストの管理と...
ファイル一式を受け取られたら、適当な場所(作業フォルダが...
* レイアウト設計の基礎知識 [#mf8f165e]
LSIの設計は、最終的には「マスクデータ」と呼ばれる図形デー...
言い換えれば、設計するものは回路でなくても、ルールさえ満...
この図形データを、実際には「レイヤ」ごとに図形データとし...
ここでは、MOSトランジスタを含む電子回路を設計するために最...
* CAD(WGex)の基本操作 [#we5eaa8b]
ファイル一式の中のフォルダ「Moses」の中の「MOSES_READEME....
まず起動後、ファイル→新規作成で、空のファイルを開き、ここ...
まず「右クリック」で、レイヤ選択や操作選択のメニューを開...
#ref(./wgex1.png,40%)
下半分が、描画する図形のレイヤ(色)、右上が描画する図形の...
とりあえず、レイヤは左上の「L00」を選び、「四角形」を押し...
1回目のクリック点と2回目のクリック点を対角線とする長方形...
#ref(./wgex2.png,40%)
描画のグリッドがありますが、グリッドの間隔は、実際のLSIチ...
''2μm''となります(この数字は覚えておいてください。「2um」...
ちなみに描画の座標の単位は1um(グリッド間隔の半分)です。
変形/移動/コピーについて説明します。変形は少し特殊なの...
ドラッグ操作をすると、ドラッグした範囲を矩形とする白く反...
#ref(./wgex4.png,40%)
続いて、上のツールバーの中央にあるボタンで、行う操作を選...
#ref(./wgex3.png)
左から順に、変形、移動、コピー、です。ここでは移動かコピ...
その後のドラッグ操作により相対指定された距離だけ、移動で...
続いて変形について説明します。変形ではドラッグによる白く...
基本的にはこれだけですべての作業はできますので、まずは操...
ちなみにこれらの操作を含めて、ショートカットキーがありま...
慣れると便利かと思います。→[[./ショートカットキー]]
※描画に「パス」というのがあります。メタル配線を描くのに便...
※セル名(ファイル名)は、「-」(ハイフン)や「.」(ピリオド...
* MOSトランジスタの設計 [#m0a380d8]
** P型・N型領域 [#y9f72700]
まずNWLとPSLとNSLとACTの4つのレイヤを使って、次のような図...
#ref(./actn.jpg,20%)
この図形は、LSIチップ上では、次の断面図のような構造になり...
#ref(./cs-actn.png,20%)
基本的には半導体なので、P型とN型の領域がありますが、この...
このうちP型(PACT)は、N-Wellとの間にPN接合を形成します。
またN型(NACT)は、N-Wellと同じN型なので、普通に電気的に接...
実際のN型領域(NACT)は、描画では「NSL」の中に描いた「ACT」...
(同様に、PACTは、PSLの中のACT)
つまり、図形の大小関係は、必ず、""NWL(N-Well)の中に、PSL...
次の例は、一番外側のお風呂がP型のP-Wellの例です。
#ref(./actp.jpg,20%)
#ref(./cs-actp.png,20%)
この場合は、NACTとP-WellがPN接合を形成し、PACTとP-Wellは...
** MOSトランジスタ [#m88937fd]
続いて、次のような図を描いてみてください。
ちょっと複雑ですが、これがMOSトランジスタの基本構造です。
(NチャネルMOSトランジスタ:nMOSFET)
#ref(./nmos.jpg,20%)
ここでは、先ほど出てこなかった、次のようなレイヤが使われ...
- (CST : チャネルストップ。ウエルの内側に描く)
- POL : ポリシリコン。MOSトランジスタのゲート電極に使う
- ML1 : 第1層メタル(アルミ)配線
- CNA : Activeコンタクト。PACT/NACTとML1を電気的に接触さ...
- CNP : Polyコンタクト。POLとML1を電気的に接触させる
(これらの詳細は、興味のある方はファイル一式の中にある「...
このうち、CSTは、機械的にウエル(この例ではP-Well)の内側に...
POLは、MOSトランジスタのゲート電極になりますが、ACT領域を...
ML1は、第1層メタル配線で、いろいろな端子をつなぐ配線とし...
このML1とN/P型領域をつなぐ縦の配線の柱がCNA、POLをつなぐ...
なおP-Wellは、PSLで囲まれたACTと、そこにつながるCNAを通し...
(MOSトランジスタのB(ボディ)端子)
レイアウト図と、以下の断面図をつなげて理解してください。
この例では、S(ソース)領域とB(ボディ)は、ML1を通して接続さ...
#ref(./cs-nmos.png,20%)
これのN/Pをすべて逆にしたものが、PチャネルMOSFET=pMOSFET...
#ref(./pmos.jpg,20%)
#ref(./cs-pmos.png,20%)
また金属配線は、ML1の上にもう1層、ML2があり、ML1とは交差...
この両者は、VIAで縦方向に接続することができます。
#ref(./m1m2.jpg,20%)
#ref(./cs-m1m2.png,20%)
* デザインルールチェック(DRC) [#b163fe5b]
これらの各レイヤの図形(長方形)は、実際の製造ではマスクデ...
この転写は光学的に行われますので、細すぎる線や近すぎる図...
そのため、各図形のサイズや間隔は、レイヤごとに最小寸法や...
この詳細は、「%% プロセス仕様書_20120313.pdf%% (2016/2/21...
これを要約したものが「DesignRule_summary.pdf」で、これを...
描いた図形がデザインルールを満たしているかのチェック(Des...
設計の最終段階で必ずパスしなければいけません。
ただ、設計の過程で、まめにチェックをかける方がよいと思い...
例として、ファイル一式の中にある「nmos.gex」を開いてみて...
(この例では、意図的にDRC違反を入れてあります)
#ref(./drc1.png,20%)
上のツールバーから、DRCを押します。
#ref(./toolbar-drc.png)
DRC設定ダイアログが現れますので、
確認用に「出力の表示」にチェックを入れてOKを押します。
#ref(./drc2.png,20%)
DRCが実行され、次のようなDRCエラーの内容が表示されます。
#ref(./drc3.png,20%)
ちょっと見にくいですが、この中に2つのエラーがあることがわ...
- element width<6um(幅が6um未満)
- ContactA_Overlap_Error_M1(ContactA(CNA)とM1の重なりが...
この例では、たしかに幅が6um必要なML1が4umしかないところと、
CNAのところにML1がないところがあります。
このままだとどこがDRCエラーなのかわかりにくいので、
DRCエラーの箇所を示す図形を呼び出します。
セル入力(ショートカット=c)のダイアログを表示させ、
セル名に「nmos.drc」、右下の基準座標を(0,0)に設定してOKボ...
(このエラー箇所図形ファイルは、元のファイル名+拡張子drc...
#ref(./drc4.png,20%)
すると、DRCエラーの箇所を示す図形が表示されます。
#ref(./drc5.png,20%)
このエラーの2か所を、ML1の変形やML1の描画で修正します。
#ref(./drc6.png,20%)
再度DRCをかけて、エラーがなくなって、次のようなダイアログ...
めでたくDRCパスです。
#ref(./drc7.png,20%)
* インバータの設計 [#s0353eed]
この調子で、nMOSとpMOSを1個ずつつかう、もっとも基本的なCM...
インバータ(NOTゲート)をつくってみましょう。
#ref(./inv.jpg,20%)
電源のVDD/GNDと、入力IN、出力OUTのところに、
それぞれの端子と同じレイヤで文字を書いておくとわかりやす...
(文字の左下の点が、各レイヤ領域の中に来るようにすること)
※(2015/3/15:akita追記) 「Vdd」、「Gnd」という文字を置いた...
ちなみにできあがったものは、ファイル一式の中にinv.gexとし...
* 回路抽出とシミュレーション [#ef04fd54]
設計した回路が正しく動作するか、回路シミュレーションで確...
まず、描いたレイアウト図形から、回路シミュレーション用の...
ツールバーのこのボタンを押します。
#ref(./toolbar-cex.png)
現れるダイアログでOKを押すと、inv.cexというファイルができ...
これは回路シミュレーション用の回路情報(spiceネットリスト)...
回路シミュレーションには、いろいろなツールがありますが、
お手軽なところとしては、フリーウエアのLTspiceがおすすめで...
http://www.linear-tech.co.jp/designtools/software/#LTspice
まずさきほどのinv.cexをテキストエディタ(メモ帳など)で開い...
続いて、こちらのファイルをダウンロードします。
#ref(test.sp)
これをLTspiceで開き、その中の
「* copy from *.cex here (except .end)」の下に、
さきほどのinv.cexの内容のうち、最後の「.end」以外をコピ&...
以下のような感じになるはずです。
* SPICE FET model
.lib 'mos_tt.lib'
mfet1 0 3 2 2 pch w=6u l=2u
mfet2 0 3 1 1 nch w=6u l=2u
.end
** Net name table **
*$ OUT 0
*$ GND 1
*$ VDD 2
*$ IN 3
#ref(./sim1.png,20%)
このままでは、回路の電源や入力信号がありませんので、
電圧源として追記しておきます。(この例ではもう書かれていま...
それぞれの意味は、以下の通りです。
- vi 3 1 pwl 0ns 0v 100ns 0v 101ns 5v ...
→電圧源viの+端子が3番(IN)、−端子が1(GND)。波形を指定(PWL...
0nsで0V、100nsで0V、101nsで5V、・・・という折れ線で変化す...
これが入力波形。
- vs 2 1 dc 5v
→電圧源vsの+端子が2番(VDD)、−端子が1(GND)。直流(DC)で5V...
端子名とノード番号は、inv.cexの最後に書いてあります。この...
得られたinv.cexに書いてあるノード番号にあわせてください。
※(2015/2/24:akita)ksmakotoさんが、ノード番号をすべて+1す...
https://github.com/metanest/mklsi/tree/master/cexrenum
上のツールバーから、走っているアイコン(Simulation)を押し...
#ref(./sim2.png,20%)
続いて、グラフを表示する電圧を指定します。
この例では、入力(ノード3-1間)と出力(ノード0-1間)を表示さ...
インバータとして動作しているか確認できますので、これを表...
ノード間の電圧は「2つのノードの電位の差」として表現されま...
例えばノード3-1間は「v(3)-v(1)」と書きます。
#ref(./sim3.png,20%)
このようなグラフが表示されるはずです。
たしかにインバータとして動作していることがわかります。
#ref(./sim4.png,20%)
なおそのほかのシミュレーションもできます。
* SPICE FET model
.lib 'mos_tt.lib'
mfet1 2 1 0 0 nch w=6u l=2u
vgs 1 0 0v
vds 2 0 5v
.dc vds 0 5 0.1 vgs 0 5 1
.save I(vds)
.end
これはDC解析をしてVDS-ID特性を求める*.spです。
SPICEの各コマンドは、ここなどの情報や文献を参考にしてくだ...
http://www-lab.ee.uec.ac.jp/text/spice/command.html#analy...
※(2015/1/7)使っているMOSトランジスタのモデルのうち、pMOSF...
* LSIチップ全体のレイアウト [#f89d0a8c]
今回製造を予定している北九州ひびきのでは、3.2mm x 3.2mmの...
* 実例 [#vaf5a5e7]
- [[./インバータ]]
- [[./リングオシレータ]]
- [[./フリップフロップ]]
- [[./ビットマップ画像でお絵かき]]
- [[./スタンダードセル]]
- [[./スタンダードセルで論理回路設計]]
- [[./コンパレータ]]
- [[./555]]
- [[./抵抗]]
終了行:
- (2015/1/6)まだ作成途中なので、もう少しお待ちください・...
- (2015/1/7)一通りできましたので、トライしていただける方...
- (2015/1/9)このページの加筆修正などに、ぜひご協力くださ...
#pcomment(reply)
* インストールと準備 [#g3a2c5a9]
WGexは、LSIのレイアウト設計ツール(DRC・回路抽出つき)で...
CADツールのWGexと関連ファイル一式は、設計試作に参加される...
WGex開発者の東大・浅田邦博先生より、配布先リストの管理と...
ファイル一式を受け取られたら、適当な場所(作業フォルダが...
* レイアウト設計の基礎知識 [#mf8f165e]
LSIの設計は、最終的には「マスクデータ」と呼ばれる図形デー...
言い換えれば、設計するものは回路でなくても、ルールさえ満...
この図形データを、実際には「レイヤ」ごとに図形データとし...
ここでは、MOSトランジスタを含む電子回路を設計するために最...
* CAD(WGex)の基本操作 [#we5eaa8b]
ファイル一式の中のフォルダ「Moses」の中の「MOSES_READEME....
まず起動後、ファイル→新規作成で、空のファイルを開き、ここ...
まず「右クリック」で、レイヤ選択や操作選択のメニューを開...
#ref(./wgex1.png,40%)
下半分が、描画する図形のレイヤ(色)、右上が描画する図形の...
とりあえず、レイヤは左上の「L00」を選び、「四角形」を押し...
1回目のクリック点と2回目のクリック点を対角線とする長方形...
#ref(./wgex2.png,40%)
描画のグリッドがありますが、グリッドの間隔は、実際のLSIチ...
''2μm''となります(この数字は覚えておいてください。「2um」...
ちなみに描画の座標の単位は1um(グリッド間隔の半分)です。
変形/移動/コピーについて説明します。変形は少し特殊なの...
ドラッグ操作をすると、ドラッグした範囲を矩形とする白く反...
#ref(./wgex4.png,40%)
続いて、上のツールバーの中央にあるボタンで、行う操作を選...
#ref(./wgex3.png)
左から順に、変形、移動、コピー、です。ここでは移動かコピ...
その後のドラッグ操作により相対指定された距離だけ、移動で...
続いて変形について説明します。変形ではドラッグによる白く...
基本的にはこれだけですべての作業はできますので、まずは操...
ちなみにこれらの操作を含めて、ショートカットキーがありま...
慣れると便利かと思います。→[[./ショートカットキー]]
※描画に「パス」というのがあります。メタル配線を描くのに便...
※セル名(ファイル名)は、「-」(ハイフン)や「.」(ピリオド...
* MOSトランジスタの設計 [#m0a380d8]
** P型・N型領域 [#y9f72700]
まずNWLとPSLとNSLとACTの4つのレイヤを使って、次のような図...
#ref(./actn.jpg,20%)
この図形は、LSIチップ上では、次の断面図のような構造になり...
#ref(./cs-actn.png,20%)
基本的には半導体なので、P型とN型の領域がありますが、この...
このうちP型(PACT)は、N-Wellとの間にPN接合を形成します。
またN型(NACT)は、N-Wellと同じN型なので、普通に電気的に接...
実際のN型領域(NACT)は、描画では「NSL」の中に描いた「ACT」...
(同様に、PACTは、PSLの中のACT)
つまり、図形の大小関係は、必ず、""NWL(N-Well)の中に、PSL...
次の例は、一番外側のお風呂がP型のP-Wellの例です。
#ref(./actp.jpg,20%)
#ref(./cs-actp.png,20%)
この場合は、NACTとP-WellがPN接合を形成し、PACTとP-Wellは...
** MOSトランジスタ [#m88937fd]
続いて、次のような図を描いてみてください。
ちょっと複雑ですが、これがMOSトランジスタの基本構造です。
(NチャネルMOSトランジスタ:nMOSFET)
#ref(./nmos.jpg,20%)
ここでは、先ほど出てこなかった、次のようなレイヤが使われ...
- (CST : チャネルストップ。ウエルの内側に描く)
- POL : ポリシリコン。MOSトランジスタのゲート電極に使う
- ML1 : 第1層メタル(アルミ)配線
- CNA : Activeコンタクト。PACT/NACTとML1を電気的に接触さ...
- CNP : Polyコンタクト。POLとML1を電気的に接触させる
(これらの詳細は、興味のある方はファイル一式の中にある「...
このうち、CSTは、機械的にウエル(この例ではP-Well)の内側に...
POLは、MOSトランジスタのゲート電極になりますが、ACT領域を...
ML1は、第1層メタル配線で、いろいろな端子をつなぐ配線とし...
このML1とN/P型領域をつなぐ縦の配線の柱がCNA、POLをつなぐ...
なおP-Wellは、PSLで囲まれたACTと、そこにつながるCNAを通し...
(MOSトランジスタのB(ボディ)端子)
レイアウト図と、以下の断面図をつなげて理解してください。
この例では、S(ソース)領域とB(ボディ)は、ML1を通して接続さ...
#ref(./cs-nmos.png,20%)
これのN/Pをすべて逆にしたものが、PチャネルMOSFET=pMOSFET...
#ref(./pmos.jpg,20%)
#ref(./cs-pmos.png,20%)
また金属配線は、ML1の上にもう1層、ML2があり、ML1とは交差...
この両者は、VIAで縦方向に接続することができます。
#ref(./m1m2.jpg,20%)
#ref(./cs-m1m2.png,20%)
* デザインルールチェック(DRC) [#b163fe5b]
これらの各レイヤの図形(長方形)は、実際の製造ではマスクデ...
この転写は光学的に行われますので、細すぎる線や近すぎる図...
そのため、各図形のサイズや間隔は、レイヤごとに最小寸法や...
この詳細は、「%% プロセス仕様書_20120313.pdf%% (2016/2/21...
これを要約したものが「DesignRule_summary.pdf」で、これを...
描いた図形がデザインルールを満たしているかのチェック(Des...
設計の最終段階で必ずパスしなければいけません。
ただ、設計の過程で、まめにチェックをかける方がよいと思い...
例として、ファイル一式の中にある「nmos.gex」を開いてみて...
(この例では、意図的にDRC違反を入れてあります)
#ref(./drc1.png,20%)
上のツールバーから、DRCを押します。
#ref(./toolbar-drc.png)
DRC設定ダイアログが現れますので、
確認用に「出力の表示」にチェックを入れてOKを押します。
#ref(./drc2.png,20%)
DRCが実行され、次のようなDRCエラーの内容が表示されます。
#ref(./drc3.png,20%)
ちょっと見にくいですが、この中に2つのエラーがあることがわ...
- element width<6um(幅が6um未満)
- ContactA_Overlap_Error_M1(ContactA(CNA)とM1の重なりが...
この例では、たしかに幅が6um必要なML1が4umしかないところと、
CNAのところにML1がないところがあります。
このままだとどこがDRCエラーなのかわかりにくいので、
DRCエラーの箇所を示す図形を呼び出します。
セル入力(ショートカット=c)のダイアログを表示させ、
セル名に「nmos.drc」、右下の基準座標を(0,0)に設定してOKボ...
(このエラー箇所図形ファイルは、元のファイル名+拡張子drc...
#ref(./drc4.png,20%)
すると、DRCエラーの箇所を示す図形が表示されます。
#ref(./drc5.png,20%)
このエラーの2か所を、ML1の変形やML1の描画で修正します。
#ref(./drc6.png,20%)
再度DRCをかけて、エラーがなくなって、次のようなダイアログ...
めでたくDRCパスです。
#ref(./drc7.png,20%)
* インバータの設計 [#s0353eed]
この調子で、nMOSとpMOSを1個ずつつかう、もっとも基本的なCM...
インバータ(NOTゲート)をつくってみましょう。
#ref(./inv.jpg,20%)
電源のVDD/GNDと、入力IN、出力OUTのところに、
それぞれの端子と同じレイヤで文字を書いておくとわかりやす...
(文字の左下の点が、各レイヤ領域の中に来るようにすること)
※(2015/3/15:akita追記) 「Vdd」、「Gnd」という文字を置いた...
ちなみにできあがったものは、ファイル一式の中にinv.gexとし...
* 回路抽出とシミュレーション [#ef04fd54]
設計した回路が正しく動作するか、回路シミュレーションで確...
まず、描いたレイアウト図形から、回路シミュレーション用の...
ツールバーのこのボタンを押します。
#ref(./toolbar-cex.png)
現れるダイアログでOKを押すと、inv.cexというファイルができ...
これは回路シミュレーション用の回路情報(spiceネットリスト)...
回路シミュレーションには、いろいろなツールがありますが、
お手軽なところとしては、フリーウエアのLTspiceがおすすめで...
http://www.linear-tech.co.jp/designtools/software/#LTspice
まずさきほどのinv.cexをテキストエディタ(メモ帳など)で開い...
続いて、こちらのファイルをダウンロードします。
#ref(test.sp)
これをLTspiceで開き、その中の
「* copy from *.cex here (except .end)」の下に、
さきほどのinv.cexの内容のうち、最後の「.end」以外をコピ&...
以下のような感じになるはずです。
* SPICE FET model
.lib 'mos_tt.lib'
mfet1 0 3 2 2 pch w=6u l=2u
mfet2 0 3 1 1 nch w=6u l=2u
.end
** Net name table **
*$ OUT 0
*$ GND 1
*$ VDD 2
*$ IN 3
#ref(./sim1.png,20%)
このままでは、回路の電源や入力信号がありませんので、
電圧源として追記しておきます。(この例ではもう書かれていま...
それぞれの意味は、以下の通りです。
- vi 3 1 pwl 0ns 0v 100ns 0v 101ns 5v ...
→電圧源viの+端子が3番(IN)、−端子が1(GND)。波形を指定(PWL...
0nsで0V、100nsで0V、101nsで5V、・・・という折れ線で変化す...
これが入力波形。
- vs 2 1 dc 5v
→電圧源vsの+端子が2番(VDD)、−端子が1(GND)。直流(DC)で5V...
端子名とノード番号は、inv.cexの最後に書いてあります。この...
得られたinv.cexに書いてあるノード番号にあわせてください。
※(2015/2/24:akita)ksmakotoさんが、ノード番号をすべて+1す...
https://github.com/metanest/mklsi/tree/master/cexrenum
上のツールバーから、走っているアイコン(Simulation)を押し...
#ref(./sim2.png,20%)
続いて、グラフを表示する電圧を指定します。
この例では、入力(ノード3-1間)と出力(ノード0-1間)を表示さ...
インバータとして動作しているか確認できますので、これを表...
ノード間の電圧は「2つのノードの電位の差」として表現されま...
例えばノード3-1間は「v(3)-v(1)」と書きます。
#ref(./sim3.png,20%)
このようなグラフが表示されるはずです。
たしかにインバータとして動作していることがわかります。
#ref(./sim4.png,20%)
なおそのほかのシミュレーションもできます。
* SPICE FET model
.lib 'mos_tt.lib'
mfet1 2 1 0 0 nch w=6u l=2u
vgs 1 0 0v
vds 2 0 5v
.dc vds 0 5 0.1 vgs 0 5 1
.save I(vds)
.end
これはDC解析をしてVDS-ID特性を求める*.spです。
SPICEの各コマンドは、ここなどの情報や文献を参考にしてくだ...
http://www-lab.ee.uec.ac.jp/text/spice/command.html#analy...
※(2015/1/7)使っているMOSトランジスタのモデルのうち、pMOSF...
* LSIチップ全体のレイアウト [#f89d0a8c]
今回製造を予定している北九州ひびきのでは、3.2mm x 3.2mmの...
* 実例 [#vaf5a5e7]
- [[./インバータ]]
- [[./リングオシレータ]]
- [[./フリップフロップ]]
- [[./ビットマップ画像でお絵かき]]
- [[./スタンダードセル]]
- [[./スタンダードセルで論理回路設計]]
- [[./コンパレータ]]
- [[./555]]
- [[./抵抗]]
ページ名: