- (2015/1/15)このページは[[あさぎ:https://twitter.com/asagin]]が書いています。間違いがあれば、適宜指摘をお願いします。

#pcomment

* はじめに [#d11907bf]

いきなり「半導体設計できるよ!」と言われても戸惑う方や、そもそもよくわからない人が多いと思うので、そういう人向けに「半導体設計とは?」を説明するページです。

-このページの対象者
--半導体設計に興味のある人
--電子工作をしたことのある人

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

WGex開発者の東大・浅田邦博先生より、配布先リストの管理と再配布なし、を使用条件とされていますので、お手数をおかけしますが、akita@is.t.kanazawa-u.ac.jp まで、「お名前(本名でお願いします)」と「連絡先(メールアドレス)」をご連絡ください。折り返し、一式ファイルをお送りします。なお実際の設計試作に加わることは条件ではありませんので、雰囲気をみるだけ、でも結構です。
**無料の設計ツール [#tad8998e]
半導体設計をしようと思うと、たくさんの設計ツールが必要になります。回路設計用CADやレイアウト設計用CAD、シミュレーションツール、さらには検証ツールまで。これらのツールは1,000万円/月かかると言われています。これらを使いこなすためには、物性や電子回路、HDLなど幅広い知識が必要なので、1人で設計するのは困難でした。

ファイル一式を受け取られたら、適当な場所(作業フォルダが望ましい)に展開し、その中のフォルダ「Moses」内の「wgex.exe」のショートカットを、デスクトップ等に作成します。そのショートカットをダブルクリックして起動します。
今回は、東京大学のWGexというレイアウト設計用CADを使うことで、CADの費用を0円におさえています。回路設計CADやシミュレーションツールは各々、お手元のものを使うことになります。

**古いプロセス [#xb1e0dd0]
半導体を製造するためには、高価な機械とクリーンルームが必要です。これらの設備を一般家庭で用意することは、金銭的にもスペース的にも難しいです。そのため、半導体をDIYする人はほとんどいませんでした。 
半導体製造の正統な方法は、お金を工場で作ってもらうことです。電子回路基板を設計したときに、基板製造をFusion PCBやP板.comに委託するのと同じですね。しかし、半導体製造の場合、費用が1千万以上するので、個人や趣味で製造するのは困難です。
この金額は最新のプロセス(技術)を使って製造する場合の話。今回使用する20年以上前のプロセスの工場なら、数十万円程度で半導体の製造を依頼できます。今回使用するプロセスは2umなので、プロから見たら枯れたプロセスですが、回路設計技術者にとっては夢のような細かさですね。

* レイアウト設計の基礎知識 [#a65a1fac]
*Make LSI:でできること [#w224b836]
- ゲート数(トランジスタ数)が少ないデジタル回路。

LSIの設計は、最終的には「マスクデータ」と呼ばれる図形データをつくることになります。つまり「長方形」を、いくつかの「レイヤ」(色)ごとに、ルールに従って描いていく、ということになります。
-- 今回は回路図とレイアウト(パターン設計)の整合を取る方法がないので、小規模な回路を設計するのがお勧めです。
- 簡単なアナログ回路

言い換えれば、設計するものは回路でなくても、ルールさえ満たしていれば、単なる図形でも構いません。
-- LSIというとCMOSですが、抵抗とキャパシタも使うことができるので、簡単なアナログ回路を設計することができます。
- 配線2層で描けそうな回路

この図形データを、実際には「レイヤ」ごとに図形データとして分離し、写真原板として半導体の製造工程を進めてLSIを作っていくことになります。
*Make LSI:で使える部品 [#rc1208fd]
-(準備中)

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

* CAD(WGex)の基本操作 [#od035d30]
こちらからどうぞ〜→
http://ifdl.jp/make_lsi/index.php?WGex%A4%CE%BB%C8%A4%A4%CA%FD

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

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

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

#ref(./wgex1.png,40%)

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

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

#ref(./wgex2.png,40%)

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

描画した図形を変形/移動/コピーしたいときは、
まず、上のツールバーから、行う操作を選びます。

#ref(./wgex3.png)

左から順に、変形、移動、コピー、です。

続いて、変形対象の辺、または移動・コピーする図形を含む辺または全体をドラッグで白反転させます。

#ref(./wgex4.png,40%)

その後、その中の辺や頂点を「ドラッグ」すると、その図形が変形/移動/コピーされます。

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

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


* MOSトランジスタの設計 [#q2d6b30d]

** P型・N型領域 [#xea4916b]

まずNWLとPSLとNSLとACTの4つのレイヤを使って、次のような図形を描いてみてください。寸法はとりあえずは適当でOKです。

#ref(./actn.jpg,20%)

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

#ref(./cs-actn.png,20%)

基本的には半導体なので、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の例です。

#ref(./actp.jpg,20%)

#ref(./cs-actp.png,20%)

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

** MOSトランジスタ [#lfb784ca]

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

#ref(./nmos.jpg,20%)

ここでは、先ほど出てこなかった、次のようなレイヤが使われています。
- 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を通して接続されています。

#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) [#ob649169]

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

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

例として、ファイル一式の中にある「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%)


* インバータの設計 [#t30e9092]

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

#ref(./inv.jpg,20%)

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

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


* 回路抽出とシミュレーション [#vf0e959a]

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

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

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

#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に書いてあるノード番号にあわせてください。

上のツールバーから、走っているアイコン(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#analysis

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

* LSIチップ全体のレイアウト [#s6af4314]

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

* 実例 [#t1275030]

- [[./インバータ]]
- [[./リングオシレータ]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS