回路シミュレーションII(1-2)

P
P
SPICE
 SPICEベースのCADとしては、
集積回路工学
 SPICE3
無償 UC Berkeley校(オリジナル)
 ngspice
無償 gEDA
 PSPICE
有償 Cadence
 H-SPICE 有償 Synopsys
等がある(他にもいろいろある)。
11.回路シミュレーション(II)
 本講義では、無償で利用できる
 ngspice
を用いる(電算演習室にインストール済み)。
1
3
P
P
利用できる素子(抜粋)
 Rxx N1 N2 抵抗値
 受動素子
 R
 C
 L
抵抗
コンデンサ
インダクタンス
 N1:+ノード
 N2:-ノード
 抵抗値(Ω)
その他にも、
バイポーラトランジスタ
相互インダクタンス
伝送線
などの素子を利用できる。
 能動素子
 D
 Q
 M
 Cxx N1 N2 静電容量
 N1:+ノード
 N2:-ノード
 静電容量(F)
ダイオード
接合トランジスタ
MOSFET
 Lxx N1 N2 インダクタンス値
 N1:+ノード
 N2:-ノード
 インダクタンス値(H)
 独立電源
 V
 I
抵抗、コンデンサ、インダクタンス
電圧源
電流源
13
P
P
MOSFET
 Mxx D G S B MODEL L=? W=?







14
MOSFETのモデルファイル
 トランジスタをモデル化した式に、試験用に
作ったトランジスタ(TEG; Test Element
Group)を用いて実測値でパラメータを決める
D:ドレイン
通常のデジタル回路であれば、
PMOSの場合はVDD, NMOSの
G:ゲート
場合はVSS(0V)にすればよい。
S:ソース
B:サブストレート(基板)
MODEL:モデル名
MOSFETのモデル定義は非常に
L:ゲート長
複雑で、かつ多数のモデル
(BSIM1, BSIM2, BSIM3, HW:ゲート幅
TSCM 0.25umのモデルファイル(一部)
.MODEL NMOS NMOS ( LEVEL = 3
+ TOX = 5.7E-9 NSUB = 1E17 GAMMA = 0.4317311
+ PHI = 0.7 VTO = 0.4238252 DELTA = 0
:
:
:
+ CJSW = 5.341337E-10 MJSW = 0.5 )
.MODEL モデル名 NMOS/PMOS (
.MODEL PMOS PMOS ( LEVEL = 3
+ TOX = 5.7E-9 +
NSUB
= 1E17 GAMMA
= 0.6348369
パラメータ1=値1
パラメータ2=値2
+ PHI = 0.7 VTO = -0.5536085 DELTA = 0
:
:
:+
::
+ CJSW = 3.625544E-10
MJSW = 0.5 )
+)
SPICE等)がある。
通常は半導体製造会社からモデル
ファイルを提供してもらえる(後述)。
15
16
1
P
P
モデルパラメータ(BSIM3の一部抜粋)
ファイルの読み込み
パラメータ名 説明
パラメータ名
説明
TOX
ゲート酸化膜厚
XJ
S/D接合深さ
GAMMA1
MOS界面基板効果係数
GAMMA2
バルク内基板効果係数
NCH
チャネルドーピング濃度
NSUB
基板ドーピング濃度
XT
チャネルドーピング深さ
VBX
XTに於ける基板電圧
*** INV ***
VTH0
閾値電圧
VFB
フラットバンド電圧
K1
基板効果一次係数
K2
基板効果二次係数
K3
狭チャネル効果係数
K3B
K3の基板効果係数
W0
狭チャネル効果
DLC
ゲート容量ゲート長オフセット
DWC
ゲート容量ゲート幅オフセット
CLC
短チャネルモデル用定数
include tsmc025.mdl
M1 VDD A Y VDD PMOS L=0.25u W=1.0u
M2 Y A VSS VSS NMOS L=0.25u W=2.0u
CLE
短チャネルモデル用指数
CF
フリンジ容量/単位長
UTE
移動度温度指数
EM
飽和電界
AF
フリッカ雑音指数
EF
フリッカ雑音周波数指数
 モデルの定義ファイルはSPICEのソースコー
ドに埋め込んでもよいが、見難くなるので別
ファイルにして読み込む
:
:
17
P
18
P
電圧源
 Vxx N1 N2 電圧値
 N1:+ノード
 N2:-ノード
 電圧値
NEW
 直流解析(DC解析)
 .DC 電圧源/電流源名 開始値 終了値 増分
内側の括弧はなくてもよい
例)
PWL (0ns 0V 10ns 0V
+ 11ns 3.3V …)
 過渡解析
10ns
11ns
20ns
21ns
NEW
 結果表示
 .PRINT V(ノード名), I(素子名)
電圧表示にはノード名、電流表示には素子名を指
定する。「V()」は省略化。
3.3V
0ns
前回使用
 .TRAN 表示間隔 終了時間
 DC 5V
 PWL ((0ns 0V) (10ns 0V) (11ns 3.3V)
+ (20ns 3.3V) (21ns 0V) (30ns 0V))
0V
解析コマンド
 グラフ化
30ns
 .PLOT V(ノード名), I(素子名)
19
P
P
電源とグラウンド
 電源、グラウンドは分かりやすいようにVDD,
VSSという名前を用いることが多い。
サブサーキット
 回路が大きくなるとフラットな設計が困難
 プログラミング言語でいうスパゲッティ構造
 機能ごとに関数化(サブサーキット化)する
しかし
.SUBCKT モジュール名 入出力 …
*** INV1 ***
.SUBCKT INV1 VDD VSS A Y
M1 Y A VDD VDD PMOS L=0.25u W=3.0u
M2 VSS A Y VSS NMOS L=0.25u W=3.0u
.ENDS
サブサーキット定義の終了
 SPICEでは基準電位として、ノード0(=グラウ
ンド)が必須。
そこで
 以下のように記述すると回路の可読性が高い
VDD VDD VSS 5V
VSS VSS 0 0V
21
X0 VDD VSS VDD OUT1 INV1
X1 VDD VSS VSS OUT2 INV1
V0 VDD VSS 3.3V
V1 VSS 0 0V
.END
VDDという名前の電源で、
VDD-VSS間は5V
VSSという名前の電源で、
VSS-0間は0V(ショート)
23
サブサーキットの呼び出し
Xxx 入出力 … モジュール名
24
2
P
P
グローバルノード
 VDDやVSSは回路全体で必要
 サブサーキットにVDDやVSSを接続するのは
面倒
グローバルノードの使用例
*** INV1 ***
.GLOBAL VDD VSS
.SUBCKT INV1 VDD VSS A Y
***
INV1
*** L=0.25u W=3.0u
M1 Y A VDD
VDD
PMOS
VDDL=0.25u
VSS
M2 VSS A .GLOBAL
Y VSS NMOS
W=3.0u
.SUBCKT INV1 A Y
.ENDS
M1 Y A VDD VDD PMOS L=0.25u W=3.0u
M2 VDD
VSS OUT1
A Y VSS
NMOS L=0.25u W=3.0u
X0 VDD VSS
INV1
.ENDS
X1 VDD VSS
OUT2 INV1
⇒C言語でいうグローバル変数に相当
 回路全体で使用するノードは、
.global ノード名 …
で定義する。
V0 VDD VSS 3.3V
X0 VDD OUT1 INV1
V1 VSS 0 0V
X1 OUT2 INV1
.END
V0 VDD VSS 3.3V
V1 VSS 0 0V
.END
25
P
26
P
例題
 NANDをサブサーキットと
して設計せよ。ただし、
PMOSはL=0.25um,
W=2.0um、NMOSは
L=0.25um, W=1.0um
で、トランジスタのモデル
名はそれぞれP, Nとする。
ngspiceの実行方法
 端末ソフトから、
ngspice SPICEネットリストのファイル名
と入力する。
B
A
 シミュレーション
Y
プロンプト(ngspice 1 ->)が表示されたら、
run
と入力する。
A
B
 グラフ表示
シミュレーション後、
plot V(ノード1), V(ノード2), V(ノード3) …
という具合に表示したいノードを指定する。
27
P
P
過渡解析(例題)
 下図左のインバータの入力端(A)に下図右の
ような電圧を印加した時の過渡応答を解析せ
よ(ただし、トランジスタのモデルには
tsmc025.mdlを使用すること)。
VDD(1.8V)
A
31
1.1ns
過渡解析(ネットリスト)
VDD(1.8V)
A
L=0.25
W=2.0
Y
L=0.25
W=2.0
2.1ns
1.8V
L=0.25
本講義のWEBページから
W=2.0
ダウンロード可能
0V
Y
0ns 1ns 2ns 3ns
L=0.25
0.1pF
入力信号(A)
W=2.0
~ MOSFETの定義~
Mxx ドレイン ゲート ソース
基板 MODEL L=? W=?
*** inv.cir ***
.GLOBAL VDD VSS
.SUBCKT INV A Y
M1 Y A VDD VDD PMOS L=0.25u W=2.0u
M2 VSS A Y VSS NMOS L=0.25u W=2.0u
.ENDS
32
33
3
P
P
過渡解析(シミュレーション)
過渡解析(実行結果)
 先ほどの回路に電源、負荷容量(0.1pF)を追
加し、シミュレーションする。
インバータのネットリスト(inv.cir)を読み込む
*** test.cir ***
.INCLUDE inv.cir
トランジスタのモデルファイル
.INCLUDE tsmc025.mdl
(tsmc025.mdl)を読み込む
X1 A Y INV
負荷
C1 Y VSS 0.1pF
V0 VDD VSS 1.8V
電圧源を使いAに入力信号を発生させる
V1 VSS 0 0V
V2 A VSS PWL(0ns 0v 1ns 0v 1.1ns 1.8v 2ns 1.8v
+ 2.1ns 0v 3ns 0v)
.TRAN 1ps 3ns
過渡解析を実行
.END
% ngspice test.cir
Circuit: *** test.cir ***
ngspice 1 -> run
Doing analysis at TEMP = 300.150 and TNOM = 300.150
ngspice 2 -> plot V(A), V(Y)
ngspice 3 ->
34
P
35
P
過渡解析(数値の読み取り)
過渡解析(数値の読み取り)
黄線の範囲を右
ボタンでドラッグ
すると…
 そこで、プロットするときに、通常の
 plot V(A), V(Y)
ではなく、
 plot V(A), V(Y) , VDD*0.1, VDD*0.9
と入力する。
VDD*0.1⇒
グラフのYとVDD*0.1の交点を左クリックすると、
端末にその点の座標が表示される
グラフにVDDの10%、
90%の線が追加される
% ngspice test.cir
ngspice 1 -> run
ngspice 2 -> plot V(A), V(Y), VDD*0.1, VDD*0.9
x0 = 1.14851e-09, y0 = 0.177419
37
P
P
過渡解析(数値の読み取り)
 P2-P1が立下
り時間、
P4-P3が立上
り時間
P1:
P2:
P3:
P4:
立下り:0.07ns
立上り:0.19ns
x0
x0
x0
x0
P1
=
=
=
=
1.07778e-09,
1.14815e-09,
2.11852e-09,
2.31111e-09,
P2
=
=
=
=
グラフの保存/印刷方法
 ngspiceの“hardcopy”ボタンは効きませ
ん!
 そこで、下記の手順に
従い、Postscript
ファイルを生成し、
印刷してください。
P4
y0
y0
y0
y0
38
1.61846
0.178462
0.172308
1.61231
runを実行した後、
xgraph tmp V(A), V(Y), VDD*0.1, VDD*0.9
と入力する。
P3
0.12nsも違う!
39
40
4
P
P
グラフの保存/印刷方法
 下図左のような波形ウィンドウが表示されるので、
“Hdcpy”ボタンをクリックする。
 下図右のウィンドウが出たら、Output deviceを
“Postscript”、Dispositionを“To File”にして“OK”をク
リック。
グラフの保存/印刷方法
 この操作により、カレントディレクトリに
“xgraph.ps”というファイルが生成される。
 印刷する場合
端末ソフトから
lpr xgraph.ps
と打ち込む。
41
P
42
P
課題1(1/2)
 TSMC0.25umプロセスを用いて、INV(NOT)回路をサ
ブサーキットとして設計し、更にそのサブサーキットを利用
してf=5の負荷を付けた場合の動作を確認せよ。
 ただし、NMOSのサイズはL=0.25um, W=1.0umとし、
PMOSのサイズは立上がり、立下り時間が揃うように調
整せよ。また、電源電圧は1.8Vとする。
レポート課題
次に示す課題を解いてレポートにまとめ、
7月30日(水)の講義開始時に提出すること。
この講義に対する質問、ご意見、クレーム、コメント
等ありましたら、レポートの最後に書いてください(もち
ろん、成績評価とは無関係です)。できる限り講義に
反映、あるいはWEBページにて回答します。
A
B
f=5の負荷
(自分と同じ入力
容量の負荷が5個)
C
最終段のINVの
出力は開放
(何も繋がない)
計測対象
43
45
P
P
課題1(2/2)
 設計したINV回路について、f=5の場合の立上り時間、
立下り時間、最大遅延時間を計測して、その値を示せ。レ
ポートにはSPICEのネットリスト(サブサーキットのみでよ
い。課題2、3も同様)、SPICEでシミュレーションした結果
の波形図(ノードA, B, C)を掲載すること。
課題1(ヒント)
*** Test fixture for problem 1 ***
.global VDD VSS
.include tsmc025.mdl
.include inv.cir
VA A 0 PWL(0ns 0v 10ns 0v 10.1ns 1.8v 20.0ns
+ 1.8v 20.1ns 0v)
VDD VDD VSS 1.8V
VSS VSS 0 0V
.tran 50ps 30ns
.END
A
0
46
10
20
30
47
5
P
P
課題1の補足
課題2
 Q,Q付のTGMS D-FFをサブサーキットとして設計し、下
図のような回路を作成した上で、50MHzのクロックを与え
た時の動作をSPICEを用いてシミュレーションせよ。レ
ポートには、以下の事項を書くこと。
1. SPICEで出力した波形図(CLK, Q1, Q2)
2. TGMS DFFのトランジスタレベルの回路図
3. 設計したTGMS D-FFのSPICEネットリスト
4. 結果の考察
 設計する回路によっては、トランジスタのL, Wを慎重に調
整しないと動かないので注意すること。
 波形図を出すとき、
plot V(A), V(B), V(C)
とすると3本の信号線が重なって見辛くなる。
そこで、
plot V(A)+4, V(B)+2, V(C)
として、各信号線の波形を上にずらす(A, Bに
それぞれ4V, 2Vのオフセットを足す)ことで見
易くなる。
D
50MHz
CLK
C
Q
Q
Q1
48
P
Q
C
Q
Q2
49
P
TGMS D-FF
D
課題2(ヒント)
*** Test fixture for problem 2 ***
.INCLUDE tsmc025.mdl
.GLOBAL VDD VSS
.include dff.cir
* dff D CLK Q Q_
X1 Q1_ CLK Q1 Q1_ dff
X2 Q2_ Q1 Q2 Q2_ dff
V0 VDD VSS 1.8V
V1 VSS 0 0V
V2 CLK VSS DC 0V PWL ((0ns 0v) (0.1ns 0v) (10ns 0v)
+ (10.1ns 1.8v) (20ns 1.8v) (20.1ns 0v) (30ns 0v)
+ (30.1ns 1.8v) (40ns 1.8v) (40.1ns 0v) (50ns 0v)
+ (50.1ns 1.8v) (60ns 1.8v) (60.1ns 0v) (70ns 0v)
+ (70.1ns 1.8v) (80ns 1.8v) (80.1ns 0v) (90ns 0v)
+ (90.1ns 1.8v) (100ns 1.8v) (100.1ns 0v) (110ns 0v)
+ (110.1ns 1.8v) (120ns 1.8v) (120.1ns 0v) (130ns 0v)
+)
TGMS: Transmission-gate
latch based master-slave
flip-flop
.TRAN 100ps 140ns
.END
50
P
51
P
課題3
 課題2で設計したD-FFを利用して、3bitのカウンターをサ
ブサーキットとして設計せよ。また、適当なクロックを与え
て、カウンターを一周以上させた場合のシミュレーションを
せよ。
 設計するカウンターは、入力としてクロック(CLK)を受け
取り、毎クロックの立ち上がりで3bitのカウンターを一つ
インクリメントする。出力は、Y0, Y1, Y2で、Y2をMSB、
Y0をLSBとする。
 レポートには、
1. SPICEで出力した波形図(CLK, Y0, Y1, Y2)
2. 回路のブロック図(NAND, NOR, NOT, AOI, D-FF
等の論理回路記号を用いて描く)。階層構造で!
3. 設計したカウンターのSPICEネットリスト
4. 結果の考察
を掲載すること。
課題3(ヒント)
*** Test fixture for problem 3 ***
.INCLUDE tsmc025.mdl
.GLOBAL VDD VSS
** ↓必要に応じて各自で書く
.include dff.cir
.include ctr3.cir
* ctr3 CLK Y0 Y1 Y2
X1 CLK Y0 Y1 Y2 CTR3
V0 VDD VSS 1.8V
V1 VSS 0 0V
V2 CLK VSS DC 0V PWL ((0ns 0v) (0.1ns 0v) (10ns 0v)
+ (10.1ns 1.8v) (20ns 1.8v) (20.1ns 0v) (30ns 0v)
+ (30.1ns 1.8v) (40ns 1.8v) (40.1ns 0v) (50ns 0v)
+ (50.1ns 1.8v) (60ns 1.8v) (60.1ns 0v) (70ns 0v)
+ (70.1ns 1.8v) (80ns 1.8v) (80.1ns 0v) (90ns 0v)
+ (90.1ns 1.8v) (100ns 1.8v) (100.1ns 0v) (110ns 0v)
+ (110.1ns 1.8v) (120ns 1.8v) (120.1ns 0v) (130ns 0v)
+ (130.1ns 1.8v) (140ns 1.8v) (140.1ns 0v) (150ns 0v)
+ (150.1ns 1.8v) (160ns 1.8v) (160.1ns 0v) (170ns 0v)
+ (170.1ns 1.8v) (180ns 1.8v) (180.1ns 0v) (190ns 0v)
+ (190.1ns 1.8v) (200ns 1.8v)
+)
.TRAN 100ps 220ns
.END
52
53
6
P
P
(再掲)レポートの書き方(1/2)
 特に指示がない限り、A4用紙を用いる
 左上をホチキスで綴じる
 最初のページに、
(再掲)レポートの書き方(2/2)
 図表には通し番号、および題を付け、本分中
で必ず引用した上で説明する。
 図題は下、表題は上。
 例) ……の測定結果を図3に示す。図3より……
 講義名や課題名
 作成日
 氏名、学籍番号、必要であれば所属
を書く。
表1:各抵抗の測定結果
電流(A)
 ページ番号を付ける
 回答だけでなく、課題内容を簡潔にまとめる
 与えられた課題の順序に従って回答する
図1: NMOSトランジスタの
回路記号
電圧(V)
R1
1.2
1.2
R2
2.3
11.3
 プログラム(ソース)リストも同様
54
55
7