Top Banner
集積回路とEDA SPICEの使い方 塩見 *, 土谷 亮 * [email protected] 1 集積回路工学特論 201965スライド・サンプル等は以下から入手してください 小野寺研講義集積回路工学特論 http://www-lab13.kuee.kyoto-u.ac.jp/modules/contents/lecture/spice.html
70

Kyoto U - 集積回路工学特論 2019年6月5日...マイクロ(u, 1e-6)と メガ(Meg, 1e+6)に注意 1Meg のつもりで1M と書くと 1e+6 ではなく1e-3 になる...

Feb 11, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 集積回路とEDASPICEの使い方

    塩見準*, 土谷亮

    * [email protected]

    1

    集積回路工学特論 2019年6月5日

    スライド・サンプル等は以下から入手してください小野寺研→講義→集積回路工学特論http://www-lab13.kuee.kyoto-u.ac.jp/modules/contents/lecture/spice.html

  • 今日の内容

    ◼ そもそもEDAとは◆なぜ必要なのか

    ◆ SPICEとは

    ◼ SPICEの使い方

    ◆解析の種類

    ◆回路・解析条件の与え方

    ◆操作手順:LTspice

    2

  • 集積回路とEDA

    ◼ Electric Design Automation (設計自動化技術)

    ◆計算機による設計・製造支援ツール

    CAD (Computer Aided Design)

    CAE (Computer Aided Engineering)

    CAM (Computer Aided Manufacturing)

    – 厳密な使い分けは存在しない

    ◆多数の会議が開催される集積回路の一大研究分野

    ◼ 市場規模は年間66億ドル程度 (2012年)

    ◆年率7~8%の成長市場

    3

  • なぜEDAが必要なのか

    4Photo from Situation Publishing Ltd., http://www.reghardware.com/

    EDAのなかった時代

    Intel 4004 (1971年)3mm x4mm, 10mmプロセス, 2300Tr

    4bit, 動作周波数741kHz入出力16ピン

    世界初の商用マイクロプロセッサ

    ◼ ほとんどのロジックは一人~数人の技術者が設計

    ◆ちなみに4004の設計者は日本人(嶋正利)

    ◼ 紙と鉛筆の世界

    このころはそれでよかったが・・・

  • 現在の集積回路

    5

    Renesas SH-Mobile G3 (2008)9.3mm x 9.3mm, 65nmプロセス, 3億Tr

    配線層8層,電源ドメイン21個入出力617ピン

    Photo from ISSCC2008

    ◼ 手作業では無理

    ◆機能検証

    ◆配置・配線

    ◆タイミング検証

    ◆マスクデータ作成

    ◆ etc. etc…

    ◼ 開発期間は半年~1年

    最新(2018年)のプロセッサだとトランジスタ数は60億以上

  • 集積回路の複雑さ

    6

    D-flipflopの立体イメージこれで1ビット

    レポートで作成したNANDレイアウトは4Tr,配線層1

    最先端プロセス数億Tr

    配線層10前後

  • Mooreの法則

    7

  • 集積回路の断面構造

    8

    10層配線プロセスの立体イメージ最小の配線幅は100nm以下

  • EDAの恩恵 :生産性

    9

    Year

    Pro

    du

    ctiv

    ity

    (lo

    g) ?

    ハードウェア規模3年で2倍 (Moore’s law)

    生産性4年で2倍 (?)

    Productivity gap

    Productivity gap:ハードウェア規模の増大に生産性が追いつかない

    設計,評価,検証 etc.

    試作して測って・・・を計算機上で

    回路シミュレータ(SPICEなど)

    回路図からレイアウトを自動作成

    自動配置配線

    レジスタのレベルから回路図を生成

    ハードウェア記述言語(Verilog,VHDL)

    「生産性を上げる」のが大きな目的

  • 実測とEDA

    10

    実測試作に時間がかかる

    測定自体が難しい擾乱なしの測定は不可能

    予期せぬ事態も捉えることができる

    EDAすぐに評価が可能

    任意の点を評価可能擾乱なしに評価が可能

    モデル化されていない事象は評価できない

    実測もシミュレーションも「何を評価しているのか」を理解して使うことが重要

    わけもわからずSPICEをまわし続ける人を貶める “SPICE monkey” という言葉も

  • EDAの出発点 SPICEとは

    ◼ Simulation Program with Integrated Circuit Emphasis

    ◼ UC Berkeleyで1973年に開発

    ◆スパコンが100MFLOPSぐらいの時代ちなみに Intel Core i7 は50GFLOPSぐらい

    ◆入力はパンチカードだった

    ◼ 非線形素子を含む回路を解析できる

    ◼ “SPICE”は「トランジスタレベルの回路シミュレータ」の代名詞

    11

  • SPICEの重要性

    ◼ 回路シミュレータの “Golden simulator”

    ◆ SPICEが精度の基準

    集中定数で表せない高周波回路は除く

    ◼ シンプルで強力な非線形問題ソルバー

    ◆用途は集積回路だけではない

    ◆回路にマッピングできれば電気回路以外にも

    熱抵抗と熱容量で熱の拡散を解く,など

    「問題をどうSPICEにマッピングするか」という研究も行われている

    12

  • 今日の内容

    ◼ そもそもEDAとは

    ◆なぜ必要なのか

    ◆ SPICEとは

    ◼ SPICEの使い方

    ◆解析の種類

    ◆サンプルを動かす

    ◆ LTspiceの使い方

    ◆便利機能

    13

  • SPICEでできる解析

    ◼ 直流解析 (DC analysis)

    ◆時間的に変化しない電圧・電流の関係

    ◆ トランジスタの動作点解析など

    ◼ 小信号解析 (AC analysis)

    ◆特定バイアス下での周波数応答

    ◼ 過渡解析 (Transient analysis)

    ◆時間的に変化する信号に対する応答

    14

  • 直流解析

    ◼ 回路にある電圧・電流を与えた際に各部の電流・電圧がどうなるか?

    15

    Ids

    VgsVds

    例:トランジスタの電流電圧特性

    指定した電圧(Vgs,Vds)を与えたときに電流(Ids)はどのぐらい流れるか?を解析

    回路の入出力特性,アナログ回路のバイアス確認などに使う

    対応する測定器:デジタルマルチメータ

  • 小信号解析

    ◼ 回路の周波数応答を解析する

    16

    小信号:素子が線形素子とみなせる程度の大きさの信号

    例:RCフィルタの周波数応答

    入力信号の周波数を上げていくとゲインはどうなるか?を解析

    フィルタ,アンプなどの周波数特性の確認に使う

    対応する測定器:ネットワークアナライザ

  • 過渡解析

    ◼ 時間的に変化する信号に対する応答を解析

    17

    対応する測定器:オシロスコープ

    小信号解析に対して大信号解析と言うことも

    例:インバータの入出力波形

    IN1にパルスを入力したら各部の波形はどうなるか?を解析

    遅延時間,信号遷移時間,遅延などの評価に使う

    =非線形性が考慮される

  • サンプルを動かす

    18

  • サンプルを動かす

    19

    とりあえず動かす

    ファイルは小野寺研からダウンロード

  • サンプルを動かす – ファイルの読み込み

    20

    1.小野寺研のページから inv_example.ascをダウンロード2.LTSpiceを起動し,File → Openで inv_example.ascを選択

    inv_example.ascが見つからない場合は「ファイルの種類」が 「Schematics (*.asc)」 になっていることを確認すること

    回路図が表示される

  • サンプルを動かす –モデルの指定

    21

    1.小野寺研のページから 0.5umプロセストランジスタモデルパラメータ (2019年5月29日講義用)SPICE_param_0.5um_for_0529_class.txt をダウンロード

    2..libでダウンロードしたファイルを指定する

    右クリック

    Browseを押してファイルを指定

  • サンプルを動かす –モデル変更

    22

    3.トランジスタモデルを変更

    右クリック

    CMOSP05 に変更

    同様に,nMOSFETのモデルも CMOSN05 に変更

  • サンプルを動かす – 解析実行

    23

    4.Simulate → Run でシミュレーションを実行

    正常終了すると波形ウィンドウが開く(この時点では波形は何も表示されない)

    エラーメッセージが出た場合はネットリストが間違っている.エラーメッセージを読んで対応すること.

    エラーメッセージの例

  • サンプルを動かす – 波形の表示

    24

    5.回路図上で見たいノードをクリックすると波形が表示される

    電圧波形 (ポインタがプローブの形) 電流波形 (ポインタがクランプの形)

    シミュレーションが正常に終わっていないと(当然)波形は見られない波形が表示できるノードの上ではポインタの形が変わる

  • サンプルを動かす – 波形の表示例

    25

  • サンプルを動かす – データの書き出し

    26

    6.波形ウィンドウを選択した状態で,File → Export

    出力したいノードを選択してOKを押すと指定したファイルに数値データが書き出される結果はテキストファイルなのでメモ帳等で表示可能

  • 注意点

    ◼ LTSpiceは選択しているウィンドウの種類によってメニューの構成が変わることに注意

    ◆波形の操作や書き出しは波形ウィンドウを選択した状態でしか行なえない

    27

  • 回路図の作り方

    28

  • SPICEの入力

    29

    素子の接続関係

    電気回路は素子と節点からなる

    グラフとして記述できる

    モデルパラメータ(モデルカード)

    回路が非線形素子を含む場合,その特性は素子の種類に応じたパラメータで表現する

    解析条件オプションなど

    電圧や周波数の範囲何を出力するか

    etc.

    昔はテキストで記述していた(ネットリスト)現在はグラフィカルに記述

    SPICEが必要とする情報は大きく3つ

  • SPICEの入力

    30

    素子の接続関係

    回路図を書く

    モデルパラメータ(モデルカード)

    回路が非線形素子を含む場合,その特性は素子の種類に応じたパラメータで表現する

    解析条件オプションなど

    電圧や周波数の範囲何を出力するか

    etc.

  • GUI(回路図エディタ)による回路図入力

    31

    ツールバー,もしくはメニューのEditから置きたい素子を選んで配置,配線でつないで回路図を作る

    コンポーネント配線

    電圧源,トランジスタなどはほとんど「コンポーネント」から選択

    コンポーネント選択ウィンドウこの課題で使うのは- voltage (電圧源)- nmos4 (nMOS)- pmos4 (pMOS)- Ground

    ※ nmos4,pmos4はバックゲートの接続を忘れないように注意

    ※Groundは必ず必要

    グラウンド

  • 素子の特性設定

    32

    素子を右クリックすると特性入力ウィンドウが開く

    電圧源の設定

    負荷容量の設定

    pMOSの設定

    適切なモデル名になっているか注意

  • MOSトランジスタ

    33

    MOSトランジスタは4端子素子であることに注意

    g

    s

    d

    b

    Model Name:モデル名 (後述)Length (L):チャネル長Width (W):チャネル幅Drain Area (AD): ドレイン面積Source Area (AS):ソース面積Drain Perimeter (PD): ドレイン周囲長Source Perimeter (PS):ソース周囲長No. Parallel Devices (M):フィンガー数 gs d

    L,W,AD,PD,AS,PSはレイアウトに依存する

    L

    W

  • AD,PD,AS,PSの意味

    34

    gs d

    W

    L

    g

    s d

    ドレイン/ソース領域のPN接合の容量を計算するのに使用

    PSCASCC

    PDCADCC

    jswjsource

    jswjdrain

    +=

    +=Cj : 底面の容量Cjsw:側壁(Sidewall)の容量

    正しく設定しないと遅延時間が狂う桁の間違いに注意

  • フィンガー数 (M) の意味

    35

    フィンガー数(M)に応じてトランジスタの並列数を変更可能

    M=1

    g

    s

    d

    b

    M=2

    g

    s

    d

    bg

    s

    d

    b

    M を用いてトランジスタの並列数を変更可能

  • 数値の書式

    36

    数値+接尾辞で記述が可能1f = 1e-151p = 1e-121n = 1e-91u = 1e-61m = 1e-31k = 1e+31Meg = 1e+6

    マイクロ (u, 1e-6)とメガ(Meg, 1e+6)に注意

    1Megのつもりで 1M と書くと1e+6ではなく 1e-3になる

    接尾辞以外の文字は無視される

    Rload 1 2 10kRload 1 2 10kOhm

    Ohmは無視されるのでどちらも同じ

  • 信号源の作り方

    37

    電圧源に時間的に変化する電圧を設定することができる

    折れ線 (PWL; Piecewise Linear)

    (時刻,電圧)の値を任意の個数列挙

    (t1, v1)

    (t2, v2)

    (t3, v3) (t4, v4)

    (t5, v5)

    (t6, v6)

    (t7, v7)

    ※ pulseを使ってもよい

  • 入力波形の設定

    38

    電圧源でAdvancedを押すと波形の設定が可能

    PWLを選択

    値を入力

  • SPICEの入力

    39

    素子の接続関係

    回路図を書く

    モデルパラメータ(モデルカード)

    回路が非線形素子を含む場合,その特性は素子の種類に応じたパラメータで表現する

    解析条件オプションなど

    電圧や周波数の範囲何を出力するか

    etc.

  • モデルパラメータ

    40

    モデルパラメータ (モデルカード)とは:非線形素子の特性を記述する方程式のパラメータ

    ( ) ( )ds2

    thgsoxds 12

    1VVV

    L

    WCI m +−=例えば

    MOS飽和領域の電流

    μ,Cox,λはデバイス依存のパラメータ→ モデルパラメータとして与える

    モデルパラメータ (MOS).MODEL modelname type LEVEL=…

    modelname:モデルの名前.MOSの素子記述内で指定するtype:MOSの場合は NMOS / PMOS

    モデルパラメータは授業のWebページからコピーして使うこと

  • モデルの読み込み (1)

    41

    トランジスタのモデルパラメータの読み込みが必要

    ツールバーの SPICE Directive

    .lib “PATH¥filename”を入力

    ドット (ピリオド)を忘れないように注意

    ※先頭のドットはネットリストをテキストで入力していた頃の名残

  • モデルの読み込み (2)

    42

    ツールバーの SPICE Directive

    モデルファイルの中身をそのまま貼ってもOK

  • 間違えやすい点

    43

    読み込んだファイルのモデル名と回路図のModel Nameが一致しているかどうか確認すること

    モデルパラメータの中身:.MODEL CMOSN025 NMOS LEVEL = 3+ TOX = 5.7E-9 NSUB = 1E17 GAMMA = 0.4317311 + PHI = 0.7 VTO = 0.4238252 DELTA = 0

    .....

    .MODEL CMOSP025 PMOS LEVEL = 3+ TOX = 5.7E-9 NSUB = 1E17 GAMMA = 0.6348369

    回路図のModel Name

  • SPICEの入力

    44

    素子の接続関係

    回路図を書く

    モデルパラメータ(モデルカード)

    回路が非線形素子を含む場合,その特性は素子の種類に応じたパラメータで表現する

    解析条件オプションなど

    電圧や周波数の範囲何を出力するか

    etc.

  • 解析条件の設定

    45

    解析条件の設定 (過渡解析).tran step end

    時刻0から step刻みで endまで解析

    どういう値に設定すればよいかは回路によって変わる自分の回路にとって適切な値がどの程度かよく考えること

  • 解析条件の設定

    46

    Edit → SPICE Analysis から解析条件を設定

    なぜか timestepを設定する欄がないので,ここに直接 .tran文を入力

    もしくは,ツールバーの SPICE Directiveから直接入力も可能

    SPICE Directive ボタン

    ここに直接 .tran文を入力

  • 完成図

    47

    Simulation → Runでシミュレーションを実行

  • インバータの動作解析(準備課題)

    48

    0 V

    充電

    5 V放電

    次段の容量を充放電して論理反転を実現→ 容量の大きさに遅延時間が依存

    その他にも電源電圧や入力波形依存性を評価

  • 便利機能

    49

  • サブサーキット(今回は使用しない)

    ◼ 自分の回路をコンポーネントのように使うことができる

    ◆プログラミングで言う関数のようなもの

    ◆ NAND,INVをサブサーキット化すると楽

    50

  • サブサーキットの作り方(1/2)

    51

    Label Net

    ピン名

    Typeを選ぶInput/Output/Bidirectional

    まず回路図を書く端子にしたいノードにピンを置く

    Save asで .ascファイルに保存

  • サブサーキットの作り方 (2/2)

    52

    シンボル(サブサーキットの回路記号)を作る1.File → New Symbolでシンボル編集画面を開く2.Draw → Line,Circleなどを使って記号を書く(形は何でもよい)3.Edit → Add Pin/Portでピンを作成ピンは全て回路図で配置したピンと同じ名前にすること

    ピン名シンボルの例

    4.Save as でシンボルを保存サブサーキット回路図と同じフォルダに同じ名前で保存すること例)回路図 inv-sub.asc / シンボル inv-sub.asy

  • サブサーキットの使い方

    53

    通常の回路コンポーネントと同じように配置可能

    Component

    Top Directoryを回路図・シンボルを保存したフォルダに変える

    作成したシンボル

    保存したファイル名

    配置した後は通常のコンポーネントと同じく右クリックで内容確認可能

  • .measureによる自動計測

    54

    解析結果から指定した2点の距離を測定する

    .measureによる測定.measure tran name+ trig v(node1) val=v1 cross=m+ targ v(node2) val=v2 cross=n

    「node1の電圧がm回目に v1になった時刻」(トリガ)から「node2の電圧がn回目に v2になった時刻」(ターゲット)までの時間を出力する

    crossを riseにすると「m回目に電圧が v1を下から上に横切った時刻」fallにすると「m回目に電圧が v1を上から下に横切った時刻」

  • .measureの例

    55

    V(n1)

    t

    V=v1

    0

    rise

    cross

    fall

    .measure tran name+trig v(n1) val=v1 {cross|rise|fall}=1+targ v(n1) val=v1 {cross|rise|fall}=2

    想定外のところでトリガがかかったりターゲットにひっかかったりするので

    使う場合はきちんと波形を確認してから使うこと

  • .measureによる測定

    56

    .measure文で指定した条件の時間などを測定することができる書式は講義資料「SPICEの使い方」も参照

    例えば入力が2.5Vになってから出力が2.5Vになるまでの時間を計測するには.measure tran delay trig v(2) val=2.5 rise=1 targ v(3) val=2.5 fall=1

    ネットリストに .measureを書いてシミュレーションを実行するとログファイル (.log)に結果が表示される

    trigの条件を満したのは 2.025ns,targの条件を満したのは 2.13655nsその間の時間は 0.11144ns

  • トラブルシューティング1

    ◼ エラーが出る場合

    ◆エラーメッセージをよく読みましょう

    ◆モデル名の間違いに注意

    ◼ エラーが出ないのに動作がおかしい場合

    ◆つなぎ忘れ

    ノードがフローティングになっても解析は終わる

    MOSのバックゲートのつなぎ忘れに注意

    ◆解析条件が正しいか確認

    57

  • トラブルシューティング2

    ◼ 動作はしているが何か変 (速すぎ/遅すぎ)

    ◆ MOSのボディの電位がおかしい/つなぎ忘れ

    閾値電圧が変わって速さが変わる

    ◆数字の入力間違い

    容量の桁を間違えやすい

    MOSのAD, AS, PD, PSの桁も間違えやすい– PD/PSは 1mmオーダー,AD/ASは mm2,つまり1e-12オーダー

    – そもそもAD/AS/PD/PSを記述しない(=0)でもシミュレーションは動くが,遅延時間が異常に小さくなる

    58

  • おまけ:シミュレーションの落とし穴

    59

    その1.モデルの有効範囲に注意

    シミュレーションでは「結果は出るがその結果に意味はない」ことが起こる

    例) MOSに電源電圧100Vかけてみる→ シミュレーション上は動く

    実際やると当然壊れる

    その2.現実には存在しない安定状態に注意

    入力をVdd/2にすると出力は?

    シミュレーション:出力も Vdd/2で安定する(ことがある)

    実際:わずかなノイズやp/nのアンバランスで0か Vddのどちらかで安定

    シミュレーションの結果を盲信しないことが重要

  • LTspiceの使い方

    ◼ LTspice : Linear Technology が配布しているSPICE◆ http://www.linear-tech.co.jp/designtools/software/

    ◆ spice3 に改良を加えたもの

    ◆ Windowsで動く

    ◼ その他利用可能なSPICE

    ◆ ngspice (Next Generation SPICE)

    “ngspice for windows”でVectorからダウンロード可能

    60

    http://www.linear-tech.co.jp/designtools/software/

  • 情報源

    61

    小野寺研集積回路工学特論のページhttp://www-lab13.kuee.kyoto-u.ac.jp/modules/contents/lecture/spice.html

    Linear Technology (LTspice, マニュアルダウンロード)http://www.linear-tech.co.jp/designtools/software/

    UC Berkeley “The Spice Page”http://bwrc.eecs.berkeley.edu/Classes/IcBook/SPICE/

    NGSPICEhttp://ngspice.sourceforge.net/

    http://www-lab13.kuee.kyoto-u.ac.jp/modules/contents/lecture/spice.htmlhttp://www.linear-tech.co.jp/designtools/software/http://bwrc.eecs.berkeley.edu/Classes/IcBook/SPICE/http://ngspice.sourceforge.net/

  • おまけ:ネットリストの書き方

    ◼ 昔は当然グラフィカルなインターフェースはない

    ◼ 回路図をテキストで記述

    ◼ 実例はサンプルのネットリスト(inv_example.cir)を参照

    62

  • 回路図の記述方法

    63

    電気回路は素子と節点で記述できる

    element1 element3

    elem

    en

    t2

    element4

    node1

    node2

    node3

    node4

    注1:素子には方向があるものがある(電圧源,電流源など)

    注2:素子は3個以上の端子をもつことがある(トランジスタはD, G, S, Bの4端子素子)

    element1 node1 node3element2 node1 node2element3 node3 node4element4 node2 node3 node4

    これをテキストで書くと・・・

  • ネットリストの書式:基本構造

    64

    Xname node1 node2 … nodeN value PARAMETERS

    記述の基本構造

    素子の種類を示すアルファベット1文字例:R → 抵抗C→ キャパシタV → 電圧源M → トランジスタ

    素子の名前英数字からなる文字列素子の種類が違えば重複可例:

    Rin 1 2 50Rin 2 3 50

    Rin 1 2 50Cin 2 3 100p

    接続されたノード数は素子によって決まっているノード名は英数字文字列ただしノード”0”はグラウンド

    素子の値抵抗なら抵抗値電圧源なら電圧値がないものもある(例:トランジスタ)

    NG

    OK

    補助パラメータトランジスタのサイズなど必要に応じて指定

    ※記述は1行に書く.複数行にわたる場合は2行目以降の先頭に “+” をつける

  • ネットリストの書式:2端子素子

    65

    抵抗 Rname node+ node- valueキャパシタ Cname node+ node- value電圧源 Vname node+ node- value電流源 Iname node+ node- value

    電圧源,電流源には方向があることに注意電圧源は node-が電圧の基準点電流源は node-から node+に向かって電流が流れる抵抗,容量には方向はない

    node+ node-

  • ネットリストの書式:解析条件,出力

    66

    解析条件の設定 (過渡解析).tran step end

    時刻0から step刻みで endまで解析どういう値に設定すればよいかは回路によって変わる自分の回路にとって適切な値がどの程度かよく考えること

    解析結果の出力(過渡解析).print tran V(node1) V(node2) …

    指定したノードの各時刻における電圧が出力される

    ネットリストの記述終了.end

    必ず書かなければならない.この行以降は無視される.

  • テキストのネットリストを使ったときの波形表示

    67

    波形ウィンドウを選択し,Plot Settings → Add trace で見たい波形を選択

    ここで選択できるのはネットリストの .printで指定したノードだけなので注意

    波形を選択してOKを押すと波形ウィンドウに波形が表示される

  • ネットリストの書式:雑多な注意

    ◼ 回路中にはかならずグラウンド (ノード “0”)がなければならない

    ◆かつノード0への直流のパスが必要

    ◼ ネットリストの1行目はタイトル

    ◼ 行の先頭が “*”の行はコメント

    ◼ 大文字・小文字は区別されない

    ◼ “.end”を書き忘れないように注意

    68

  • ネットリストの書式:サブサーキット

    69

    SPICEでは素子を組み合わせて独自の素子を定義することができる

    サブサーキットの定義.subckt name node1 node2 …* circuit description.ends

    INV,NANDなど同じ回路が何度も出てくるときに便利

    サブサーキットを使うXname node1 node2 … nodeN name

  • サブサーキットの例

    70

    *inv

    .tran 0.05n 4n

    .print tran v(3)

    Vdd 1 0 5VVin 2 0 pwl 0 5V …Mxp 3 2 1 1 CMOSP L=…Mxn 3 2 0 0 CMOSN L=…Cout 3 0 0.2p

    .MODEL CMOSP PMOS ……

    .end

    *inv-subckt

    .tran 0.05n 4n

    .print tran v(3)

    Vdd 1 0 5VVin 2 0 pwl 0 5V …Xinv 2 3 1 0 INVCout 3 0 0.2p

    .subckt inv in out vdd vssMxp out in vdd vdd CMOSP L=…Mxn out in vss vss CMOSN L=….ends

    .MODEL CMOSP PMOS ……