2021-m8 : ngspice のインストール (macOS) : BIOS PC のセッティング

はじめに

今回は私以外が担当する授業のソフトウェアのインストールを解説します。

アナログ電子回路I の授業では電子回路の特性計算のために ngspice を利用します。 以前、ngspice は Homebrew でもインストールできたのですが、現在インストールできるものはグラフ描画をすることができません。 そこで、私が個人的に作った野良 Formula を使ってインストールすることにします。

インストール

1. XQuartz のインストール

ngspice のグラフは X11 という UNIX の Windows システムで描画するように設定されています。 macOS は以前デフォルトで X11 のサーバがインストールできたのですが、現在は Xquartz という別のパッケージに分離されてしまいました。 そのため、まず Homebrew-cask を使って、Xquartz をインストールします。Brewfile に以下を記載してインストールしてください。

cask "xquartz"

Xquarts はアプリケーションフォルダ内のユーティリティフォルダに入っています。 Finder で Command-Shift-U を押すとユーティリティフォルダが開くので、XQuartz をダブルクリックして起動することを確認しておいてください。 起動が確認できたら、一度 macOS を再起動しておいてください。 インストール後はパスがうまく設定されていないことがあるためです。

2. ngspice のインストール

現在、ngspice の macOS 版は Sourceforge のサイトからダウンロードできなくなってしまいました。昨年度は、かなり古いパッケージを探し出してインストールしていました。

Homebrew であれば最新版をインストールできるのですが、グラフ描画ができないものしかインストールできません。これは、Xquartz のような外部パッケージであるに依存するオプションは許可しないと方針転換されてしまったためです。

学生にソースからインストールさせるのは流石に可哀想なので、個人的に用意している野良 Formula 置場に X11 対応でコンパイルできる ngspice を用意しました。

以下の行を Brewfile に登録し、インストールをしてください。 ソースからコンパイルするので、少し時間がかかります。

tap "hkob/m1-beta-brew"
brew "ngspice-x"

ngspice の動作確認

Finder で適当なフォルダを作り、そのフォルダを vscode を開きます。 その場所に test.cir というファイルを作ります。 すると、SPICE 機能拡張をインストールするように言われるので入れるといいと思います。 設定できたら、以下のテキストを保存しましょう。 このファイルをネットリストと呼びます。 なお、ネットリスト自体の意味はアナログ電子回路で説明してくれるはずです。 興味があったら自分で調べてみて、2年の電気回路の回路図で検算してみてください。

*** test.cir ***
.options hcopydevtype=postscript
* 電圧源を接点1と接点0(GND)との間に設置(電圧は可変)
Vs 1 0
* 電流計を接点1と接点2との間に設置(電圧0にすると電流計になる)
Vi 1 2 0
* 2[Ω]の抵抗を接点2と接点0(GND)との間に設置
R1 2 0 2
* 電圧源の電圧を 0[V] から 8[V] まで 0.1[V] 単位で可変
.dc Vs 0 8 0.1
.probe
.end

ターミナルからngspice test.cir とします。 最初の起動時には「XQuartz」が起動するので少し時間がかかります。 その後、プロンプトが表示されたら「run」とタイプします。

hkob@BYOD-macOS ~> ngspice test.cir
******
** ngspice-34 : Circuit level simulation program
** The U. C. Berkeley CAD Group
** Copyright 1985-1994, Regents of the University of California.
** Copyright 2001-2020, The ngspice team.
** Please get your ngspice manual from http://ngspice.sourceforge.net/docs.html
** Please file your bug-reports at http://ngspice.sourceforge.net/bugrep.html
******
Warning: locale not supported by Xlib, locale set to C
Warning: X locale modifiers not supported, using default

No compatibility mode selected!


Circuit: *** test.cir ***

ngspice 1 -> run
Doing analysis at TEMP = 27.000000 and TNOM = 27.000000

Warning: vs: has no value, DC 0 assumed

No. of Data Rows : 81

実行すると 81個のデータが計算できたと表示される。その後、以下のコマンドでグラフを描画してみる。

ngspice 2 -> plot i(Vi) xlabel 'E[V]' ylabel 'i[A]'

結果として XQuartz の画面上に以下のようなグラフが描画される。電圧可変時の電流値が計算できており、オームの法則が確認できた。

f:id:hkob:20200421143635p:plain
オームの法則

なお、ngspice はquitコマンドで終了できる。


hkob.hatenablog.com