• (2015/1/6)まだ作成途中なので、もう少しお待ちください・・・
  • (2015/1/7)一通りできましたので、トライしていただける方は、以下の手順にしたがって、akita@is.t.kanazawa-u.ac.jpまでお名前(本名)と連絡先をご連絡ください!
  • (2015/1/9)このページの加筆修正などに、ぜひご協力ください!(ID/PWDは参加される方にご連絡します)なおページ本体に加筆修正される場合は、「(2015/1/7:akita)」のように日付とお名前を付記してください。※(2015/1/10:akita)連絡先メールアドレスが間違っていったため訂正しました。

最新の10件を表示しています。 コメントページを参照

  • LTspiceではノード0がグランドになります。inv.cexの回路抽出例でGNDを1ではなく0にする方法はないでしょうか。 -- moriyama? 2015-02-04 (水) 22:12:26
    • それがどうもないようなのです・・・なので、GNDのノードを基準とした電位差で表すやり方を記載しています。あるいはテキストエディタで文字列置換するか・・・ -- akita? 2015-02-07 (土) 22:44:53
  • (どちらのツールもまだ試してないのですが)Vgnd01 1 0 0 のようなダミーの電圧源を記述に追加する、ではダメでしょうか? -- ksmakoto 2015-02-08 (日) 19:27:24
    • それが、0番はだいたい別のノードとしてすでに使われているのです・・・ -- akita? 2015-02-09 (月) 09:40:02
  • あー、(使っている版の)SPICEでは0は常にGNDという特別な端子番号として予約されているのに、パーツ定義でパーツのGNDでない足(引数?)の端子番号として0を使ってしまう、という問題でしょうか...。 -- ksmakoto 2015-02-09 12:05
    • はい、WGexの回路抽出は、GND=0となるとは限らず、各ノードに適当に番号がふられます(実行するたびに違う・・・)なので、LTspiceで、抽出結果で使われているGNDノード番号を基準として、たとえば電源はvs 3 2 5Vのように与えています(3=VDD、2=GNDの例) -- akita? 2015-02-13 (金) 21:45:12
  • ノード0の件、WGexが0からではなく1からノードを発生するか、ラベルをつけたノードはノード番号ではなくラベル(GND)とかで出力するようにならないでしょうか。いずれもオプションが用意されているような...。 -- moriyama? 2015-02-16 (月) 21:51:14
  • wgexかcex2もしくはcex3コマンドにそのようなオプションはありますでしょうか? 見つけられていません... -- ksmakoto 2015-02-17 (火) 18:17:25
    • それがたしかないんですよ・・・ -- akita? 2015-02-18 (水) 17:42:21
  • CEXファイルの端子番号を全部 +1 するフィルタを作りました https://github.com/metanest/mklsi/tree/master/cexrenum 事故らないよう、(私が現在)知らない構文は全部ハネるので、コメントをいただけたら追加します -- ksmakoto 2015-02-22 (日) 22:27:31
    • おお!すばらしい、ありがとうございます、確認してみます! -- akita? 2015-02-24 (火) 07:58:04
      • このスクリプト、下の手順の中に追加しておきました! -- akita? 2015-02-24 (火) 08:03:10
  • で、これのチェック中に気がついたのですが、たとえば 555 だと「*$ nor2.gex/Y 9」「*$ nor2.gex/Y 10」のように、同じラベルが複数の番号に対応することがあるようですが、これはそういうものでしょうか? -- ksmakoto 2015-02-22 (日) 22:31:08
    • その例だと、nor2.gexという回路が2つ呼び出ししているので、実体は別の回路です。つまりNOR2(その1)の出力Y=9、NOR2(その2)のY=10、ということです。 -- akita? 2015-02-24 (火) 07:58:55
      • なるほど。インスタンス名でなくクラス名、という感じですね -- ksmakoto 2015-02-24 (火) 18:43:54
  • コイル(インダクタ)をレイアウトしたいのですが、どのような方法がありますでしょうか? -- oshio? 2015-03-06 (金) 11:51:42
    • コイルは・・・手設計でぐるぐるを巻くしかないですね・・・あるいは*.gexのファイルフォーマットは長方形の座標が書いてあるだけなので、その形式で渦巻きを生成するようなプログラムを書くか・・・その渦巻きのインダクタンスを求めるモデルはないので、実測かな・・・ -- akita? 2015-03-06 (金) 18:19:00
  • 回路抽出時のGNDノード番号の問題ですが、開発者の浅田先生に伺ったところ、Vdd/Gndというラベルがつけてあるところが1番/0番になるようにしていたはず、とのことです。たしかにそうなるようです!(VddとGndは、大文字小文字区別します) -- akita? 2015-03-15 (日) 22:52:52
    • ↑以下の使い方には追記しておきました。 -- akia? 2015-03-15 (日) 22:56:05
  • GDSIIが出力できそうなのですが空のファイルしか出ないようで、なにか特殊な設定があるのでしょうか? -- ura@LR? 2016-02-16 (火) 18:49:59
    • あれ?そうですか?私がやたときには出力できましたよ。どのように操作されましたか? -- akita? 2016-03-21 (月) 17:27:42
    • すみません。CALMA.STRで出てましたね。失礼しました。WGEX$$$$.$$$がSTRかと思ってました。 -- ura@LR? 2016-03-28 (月) 14:06:13
お名前:

インストールと準備

WGexは、LSIのレイアウト設計ツール(DRC・回路抽出つき)です。

CADツールのWGexと関連ファイル一式は、設計試作に参加される方にのみ配布しております。(動作環境はWindowsのみ(仮想マシンなども可)、です。ご了承ください)※(2015/1/12:akita)Macで、フリーウエアのWineBottler?で起動できた、との情報をr.kitahata様よりいただきました!WineBottler?の使い方はこのあたり→http://hamasyou.com/blog/2010/09/20/mac-os-x-windows-winebottler/

WGex開発者の東大・浅田邦博先生より、配布先リストの管理と再配布なし、を使用条件とされていますので、お手数をおかけしますが、akita@is.t.kanazawa-u.ac.jp まで、「お名前(本名でお願いします)」と「連絡先(メールアドレス)」をご連絡ください。折り返し、一式ファイルをお送りします。なお実際の設計試作に加わることは条件ではありませんので、雰囲気をみるだけ、でも結構です。

ファイル一式を受け取られたら、適当な場所(作業フォルダが望ましい)に展開し、その中のフォルダ「Moses」内の「wgex.exe」のショートカットを、デスクトップ等に作成します。そのショートカットをダブルクリックして起動します。

レイアウト設計の基礎知識

LSIの設計は、最終的には「マスクデータ」と呼ばれる図形データをつくることになります。つまり「長方形」を、いくつかの「レイヤ」(色)ごとに、ルールに従って描いていく、ということになります。

言い換えれば、設計するものは回路でなくても、ルールさえ満たしていれば、単なる図形でも構いません。

この図形データを、実際には「レイヤ」ごとに図形データとして分離し、写真原板として半導体の製造工程を進めてLSIを作っていくことになります。

ここでは、MOSトランジスタを含む電子回路を設計するために最低限必要なことがらにしぼってまとめておきます。詳しいことは、必要であれば半導体・集積回路の専門書をご参照ください。

CAD(WGex)の基本操作

ファイル一式の中のフォルダ「Moses」の中の「MOSES_READEME.PDF」が、浅田先生作のWGexの公式(?)マニュアルです。ただ、詳しすぎるので、以下に要点をまとめておきます。基本的には、これらの操作だけで十分なはずです。

まず起動後、ファイル→新規作成で、空のファイルを開き、ここで操作に慣れましょう。

まず「右クリック」で、レイヤ選択や操作選択のメニューを開きます。

wgex1.png

下半分が、描画する図形のレイヤ(色)、右上が描画する図形の種類です。 とりあえず、レイヤは左上の「L00」を選び、「四角形」を押してください。

1回目のクリック点と2回目のクリック点を対角線とする長方形が描画されます。

wgex2.png

描画のグリッドがありますが、グリッドの間隔は、実際のLSIチップ上の寸法で 2μmとなります(この数字は覚えておいてください。「2um」とも表記します)。 ちなみに描画の座標の単位は1um(グリッド間隔の半分)です。

変形/移動/コピーについて説明します。変形は少し特殊なので、まず、移動とコピーを説明します。

ドラッグ操作をすると、ドラッグした範囲を矩形とする白く反転した領域があらわれます。この白い矩形が、移動/コピーしたい対象の図形に掛かるようにします(移動/コピーでは、図形のある頂点に掛かっていればその図形全体が選択されます)。

wgex4.png

続いて、上のツールバーの中央にあるボタンで、行う操作を選びます。

wgex3.png

左から順に、変形、移動、コピー、です。ここでは移動かコピーを選びます(このボタンが押されたままになっている間は、連続した編集中に毎回押す必要はありません)。

その後のドラッグ操作により相対指定された距離だけ、移動であれば複製されずに移動し、コピーであればその距離だけ移動した複製が作成されます。ドラッグ中は移動orコピー先の目安が表示されます。この時のドラッグ操作の場所はどこでもかまいません(このドラッグの時にも白ベタの矩形が現れますが気にしなくてかまいません)。

続いて変形について説明します。変形ではドラッグによる白く反転した領域により、図形全体ではなく頂点が選択されます。その後のドラッグ操作により、選択された頂点が移動し変形操作となります。同様に変形中は目安が表示されます。

基本的にはこれだけですべての作業はできますので、まずは操作に慣れてください。

ちなみにこれらの操作を含めて、ショートカットキーがありますので、 慣れると便利かと思います。→./ショートカットキー

※描画に「パス」というのがあります。メタル配線を描くのに便利なのですが、wgexでの描画にバグがあり、縮小表示時にwgexが強制終了する場合があることが既知のバグとしてあります。そのため、当面は「パス」を使わず、「四角形」を使う方がよいです。(2015/10/17:akita11)

※セル名(ファイル名)は、「-」(ハイフン)や「.」(ピリオド)は含めない方が無難です。(2016/4/4:akita追記)

MOSトランジスタの設計

P型・N型領域

まずNWLとPSLとNSLとACTの4つのレイヤを使って、次のような図形を描いてみてください。寸法はとりあえずは適当でOKです(図中には説明がないですが、次の節にあるCSTも描かれています)。

actn.jpg

この図形は、LSIチップ上では、次の断面図のような構造になります。

cs-actn.png

基本的には半導体なので、P型とN型の領域がありますが、この例では、N-Well(ウエル)と呼ばれるN型の「お風呂」(不純物濃度が薄い)の中に、実際のP型(PACT)とN型(NACT)の領域がつくられます。

このうちP型(PACT)は、N-Wellとの間にPN接合を形成します。

またN型(NACT)は、N-Wellと同じN型なので、普通に電気的に接触しているのと同じになります。

実際のN型領域(NACT)は、描画では「NSL」の中に描いた「ACT」の部分になります。 (同様に、PACTは、PSLの中のACT) つまり、図形の大小関係は、必ず、""NWL(N-Well)の中に、PSLまたはNSLがあり、その中にACTがある""、ことになります。

次の例は、一番外側のお風呂がP型のP-Wellの例です。

actp.jpg
cs-actp.png

この場合は、NACTとP-WellがPN接合を形成し、PACTとP-Wellは電気的に接触していることにんります。

MOSトランジスタ

続いて、次のような図を描いてみてください。 ちょっと複雑ですが、これがMOSトランジスタの基本構造です。 (NチャネルMOSトランジスタ:nMOSFET)

nmos.jpg

ここでは、先ほど出てこなかった、次のようなレイヤが使われています。

  • (CST : チャネルストップ。ウエルの内側に描く)
  • POL : ポリシリコン。MOSトランジスタのゲート電極に使う
  • ML1 : 第1層メタル(アルミ)配線
  • CNA : Activeコンタクト。PACT/NACTとML1を電気的に接触させる
  • CNP : Polyコンタクト。POLとML1を電気的に接触させる (これらの詳細は、興味のある方はファイル一式の中にある「プロセス仕様書_20120313.pdf」を参照してください)

このうち、CSTは、機械的にウエル(この例ではP-Well)の内側に描けばOKです。

POLは、MOSトランジスタのゲート電極になりますが、ACT領域をまたがるように置きます。そしてPOLで区切られた2つのACTが、MOSトランジスタのS(ソース)とD(ドレイン)になります。(ちなみに自己整合プロセスと呼び、POLの下のACTは、チャネル領域になります)

ML1は、第1層メタル配線で、いろいろな端子をつなぐ配線として使います。実際にはこのMLは、N/P型領域やPOLの「上」に形成されます。

このML1とN/P型領域をつなぐ縦の配線の柱がCNA、POLをつなぐ縦の配線の柱がCNPです。

なおP-Wellは、PSLで囲まれたACTと、そこにつながるCNAを通してML1につながっています。 (MOSトランジスタのB(ボディ)端子)

レイアウト図と、以下の断面図をつなげて理解してください。

この例では、S(ソース)領域とB(ボディ)は、ML1を通して接続されています。

cs-nmos.png

これのN/Pをすべて逆にしたものが、PチャネルMOSFET=pMOSFETです。

pmos.jpg
cs-pmos.png

また金属配線は、ML1の上にもう1層、ML2があり、ML1とは交差することができます。 この両者は、VIAで縦方向に接続することができます。

m1m2.jpg
cs-m1m2.png

デザインルールチェック(DRC)

これらの各レイヤの図形(長方形)は、実際の製造ではマスクデータとしてウエハ上に転写され、エッチングなどの工程が行われます。 この転写は光学的に行われますので、細すぎる線や近すぎる図形は、正しく転写されません。 そのため、各図形のサイズや間隔は、レイヤごとに最小寸法やサイズが決まっています(デザインルール)。 この詳細は、「 プロセス仕様書_20120313.pdf (2016/2/21:akita)プロセス仕様書_20120313_160116.pdf」に載っていますが、 これを要約したものが「DesignRule_summary.pdf」で、これを見ていただければ十分かと思います。

描いた図形がデザインルールを満たしているかのチェック(Design Rule Check; DRC)は、 設計の最終段階で必ずパスしなければいけません。 ただ、設計の過程で、まめにチェックをかける方がよいと思います。

例として、ファイル一式の中にある「nmos.gex」を開いてみてください。 (この例では、意図的にDRC違反を入れてあります)

drc1.png

上のツールバーから、DRCを押します。

toolbar-drc.png

DRC設定ダイアログが現れますので、 確認用に「出力の表示」にチェックを入れてOKを押します。

drc2.png

DRCが実行され、次のようなDRCエラーの内容が表示されます。

drc3.png

ちょっと見にくいですが、この中に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、となります)

drc4.png

すると、DRCエラーの箇所を示す図形が表示されます。

drc5.png

このエラーの2か所を、ML1の変形やML1の描画で修正します。

drc6.png

再度DRCをかけて、エラーがなくなって、次のようなダイアログが表示されたら、 めでたくDRCパスです。

drc7.png

インバータの設計

この調子で、nMOSとpMOSを1個ずつつかう、もっとも基本的なCMOS回路である インバータ(NOTゲート)をつくってみましょう。

inv.jpg

電源のVDD/GNDと、入力IN、出力OUTのところに、 それぞれの端子と同じレイヤで文字を書いておくとわかりやすいです。 (文字の左下の点が、各レイヤ領域の中に来るようにすること)

※(2015/3/15:akita追記) 「Vdd」、「Gnd」という文字を置いたところのノードが、それぞれ1番と0番になります!(大文字・小文字は区別します)→Vdd、Gndと文字列を書いておくとよいです!

ちなみにできあがったものは、ファイル一式の中にinv.gexとして置いてあります。

回路抽出とシミュレーション

設計した回路が正しく動作するか、回路シミュレーションで確認することができます。

まず、描いたレイアウト図形から、回路シミュレーション用の回路情報を抽出します。

ツールバーのこのボタンを押します。

toolbar-cex.png

現れるダイアログでOKを押すと、inv.cexというファイルができます。 これは回路シミュレーション用の回路情報(spiceネットリスト)です。

回路シミュレーションには、いろいろなツールがありますが、 お手軽なところとしては、フリーウエアのLTspiceがおすすめです。 http://www.linear-tech.co.jp/designtools/software/#LTspice

まずさきほどのinv.cexをテキストエディタ(メモ帳など)で開いておきます。

続いて、こちらのファイルをダウンロードします。

これを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
sim1.png

このままでは、回路の電源や入力信号がありませんので、 電圧源として追記しておきます。(この例ではもう書かれていますね) それぞれの意味は、以下の通りです。

  • 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するスクリプトを作られました。Spiceではノード0は標準でGNDとして扱われますので、変換後のGNDノードと0番ノードとの間に0Vの電圧源や0Ωの抵抗を手動で挿入することで、0番ノードを基準とする電圧として扱うことができます(例えば3番ノードの電圧は、下記のv(3)-v(1)のような表記ではなく、v(3)、と書けます) https://github.com/metanest/mklsi/tree/master/cexrenum

上のツールバーから、走っているアイコン(Simulation)を押します。

sim2.png

続いて、グラフを表示する電圧を指定します。 この例では、入力(ノード3-1間)と出力(ノード0-1間)を表示させれば、 インバータとして動作しているか確認できますので、これを表示させましょう。 ノード間の電圧は「2つのノードの電位の差」として表現されますので、 例えばノード3-1間は「v(3)-v(1)」と書きます。

sim3.png

このようなグラフが表示されるはずです。 たしかにインバータとして動作していることがわかります。

sim4.png

なおそのほかのシミュレーションもできます。

* 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#analysis

※(2015/1/7)使っているMOSトランジスタのモデルのうち、pMOSFETのモデルに不備がある可能性があります。現在原因究明中ですが、アナログ回路で使われる予定の方は、ご注意ください。

LSIチップ全体のレイアウト

今回製造を予定している北九州ひびきのでは、3.2mm x 3.2mmのLSIチップをつくります。ただしその周辺は、外部の回路に接続するためのパッドという電極領域があるため、実質的に使える領域は2.5mm x 2.5mm (2500um x 2500um)程度です。それを設計試作に参加する皆さんで相乗りすることになります。したがって一人であまり大きな領域を使ってしまうと、全体が入らなくなってしまうため、今回の試作に乗らない可能性があることはご了承ください。みなさんの設計したレイアウトデータをまとめて全体に乗せる作業は、秋田が行います。面積割り振りの調整や設計締切などは、秋田に一任してください。

実例


添付ファイル: filewgex4.png 956件 [詳細] filewgex3.png 934件 [詳細] filewgex2.png 939件 [詳細] filewgex1.png 1016件 [詳細] filetoolbar-drc.png 858件 [詳細] filetoolbar-cex.png 881件 [詳細] filesim4.png 1044件 [詳細] filesim3.png 982件 [詳細] filesim2.png 958件 [詳細] filesim1.png 1024件 [詳細] filetest.sp 896件 [詳細] filedrc7.png 904件 [詳細] filedrc6.png 985件 [詳細] filedrc5.png 951件 [詳細] filedrc4.png 975件 [詳細] filedrc3.png 937件 [詳細] filedrc2.png 999件 [詳細] filedrc1.png 956件 [詳細] filecs-pmos.png 1048件 [詳細] filecs-nmos.png 1207件 [詳細] filecs-m1m2.png 941件 [詳細] filecs-actp.png 1074件 [詳細] filecs-actn.png 981件 [詳細] fileinv.jpg 1114件 [詳細] filem1m2.jpg 1042件 [詳細] filepmos.jpg 1109件 [詳細] filenmos.jpg 1180件 [詳細] fileactp.jpg 1088件 [詳細] fileactn.jpg 1162件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-06-29 (水) 16:39:47 (2859d)