KiCad8のSpice機能で回路シミュレーションを行う

はじめに

KiCadがバージョンアップするたびに記事を書いている気がしますが、今回も同じように解説記事を書きたいと思います。7からあまり操作感は変わっていないため、下記記事も参考にしていただけると良いと思います。
gsmcustomeffects.hatenablog.com

KiCadは20240714時点で最新の8.0.4を使う前提で進めます。

KiCad7→8における主な変更点

KiCadバージョン間のngspice変更点は主に4つになります。

  • ngspice37→ngspice42にアップデート
  • シミュレーションウィンドウのUI改善
  • 解析項目の追加(pole-zero, noise, S-parameter, and FFT)
  • 動作点解析において回路図上にノード電圧が表示

基本的な使い方

基本的な使い方はKiCad7の時と変わらないのですが、前回記事で一部抜けがあったためそちらを補完する形で説明したいと思います。
例題には下記NPNトランジスタ増幅回路を用います。

抵抗、コンデンサの設定

まずは抵抗を一つ配置して下記の手順に従ってプロパティを設定してください。
①プロパティを開く
②ピン番号を表示をチェック
③シミュレーションモデルをクリック
④値フィールドに10kを設定する
⑤終了したらOKをクリック

⑤の時点でプロパティフィールドにSim項目が追加されると思います。

この後OKをクリックすると回路図上に反映されます。抵抗には極性はありませんが、SPICEシミュレータは電流を計算する際にキルヒホッフの法則に基づいて立式します。シミュレーション上エラーにはなりませんが、部品に流れる電流を計測する際に逆に出てしまうので最初から方向を意識して配置すべきということになります。

次にコンデンサも同じように配置して設定します。

トランジスタの設定

NPNトランジスタを配置します。部品配置画面でspiceと検索し、その中にNPNというシンボルがあるのでそちらを用います。*1

抵抗と同じようにシミュレーションパラメータを設定します。トランジスタはモデルが必要になるのでspiceモデルをダウンロードします。
今回はROHMさんのBC847Bというモデルを拝借します。

https://www.rohm.co.jp/products/transistors/bipolar-transistors/standard-bipolar-transistors/bc847b-product#productDetail
ダウンロードしたbc847b.libはKiCadのプロジェクトと同じディレクトリに配置しておきます。*2

NPN設定の手順は下記のとおりです。
①NPNのプロパティを開く
②ピン番号表示にチェック
③シミュレーションタブを開く
④ファイルからSPICEモデルを読み込むをチェック
エクスプローラーからbc847b.libを選択
⑥モデルタブでBC847を選択
⑦コードタブでモデル読み込みを確認
⑧ピン割り当てタブをクリック
⑨回路シンボルとSPICEモデルのピン対応を確認
⑩すべて設定できたらOKで終了

電源シンボルの設定

次にシミュレーション用の電源シンボル設定を行います。直流電源と交流信号源の2つを設定します。

直流電源の電圧値は12Vを設定します。

交流電源は0.1Vにしておきます。

GNDはSPICEの0シンボルを用います。

回路を完成させる

必要な部品は配置できたので回路を完成させます。抵抗値などのパラメータの設定は次の項目でまとめて設定します。

次にパラメータを設定します。

シミュレーション設定

シミュレーションの設定を行います。今回は過渡解析を行いたいので画像に従って過渡解析メニューを設定します。

シミュレーション実行

再生ボタンのアイコンをクリックすることでシミュレーション実行できます。
実行を行うと下のコンソールで計算が走ります。終了後に右の波形ペインで表示したい波形のプロットを行うことで波形表示ができます。

以上が基本的な使い方になります。

その他Tips

netlistの出力

シミュレーション画面からnetlistの出力が可能です。
時間のかかるシミュレーションは、netlistの形で持っておいて外部SPICEでバッチ実行という使い方が良いと思います。

より応用的な使い方としてpyspice or spicelibでnetlistをパースして解析を行うのもよいと思います。
https://github.com/PySpice-org/PySpice
https://github.com/nunobrum/spicelib

ノード間電圧の測定方法

ノード間電圧の計測はユーザー定義信号により表示できるようになりました。

動作点解析

動作点解析により回路図にノード電圧が出るようになりました。

解析タブの利用

解析タブを追加しワークブックを保存することで複数種類のシミュレーション結果を保持できる

基板設計に含めたくないエレメントの設定

シミュレーションには必要だが基板には必要のない部品について、部品プロパティから設定できます。

ライブラリの管理方法

ライブラリは同種のものであればまとめて管理したほうが効率的です。

読み込む際にプルダウンで選択できる。

その他TipsについてはPart2に移動しました。
gsmcustomeffects.hatenablog.com

*1:ここでは半導体系のシミュレーションは扱わないので3端子トランジスタを選んでいます。PDKなんかに入っているトランジスタはボディピンがある4端子シンボルを用います。

*2:spiceモデルは必ずしも同一ディレクトリである必要ありませんので各自モデル用のディレクトリを作っておくでもよいと思います。