Xschemの紹介
比較的新しい回路図エディタかと思っていたが、開発開始は1998年でした。
私も最近存在を知ったくらいで、あまりメジャーではないのでパッケージは提供されておらず、ソースからインストールする必要があります。
コンパクトなプログラムですが、LSI設計に必要な機能は備えており、LTspiceが使えない状況では代替ツールとして大いに活躍できると思われます。オープンソースであるのは大きな強みです。
インストール
Ubuntu18.04では特に何もしなくてもMakeできましたが、CentOS 7の場合、yum insall gtk3-develし、
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig
する必要がありました。(波形表示のgawも同様です。)
configureは用意されておらず、Makefileをいじります。以下が変更部分です:
prefix=/usr/local
userconfdir=~/.xschem
TCLVER=8.5
回路例は、ソースのtarballに入っているので、/usr/local/share/xschem/ xschem_library/examples にコピーしてください。
画面表示や拡張機能の実現にTcl/TKを使っているので、Windows対応も容易と思われますが、2020年8月時点では、Visual Studio 2019のドキュメントに従ってmakeはできるものの正常動作を確認できてません。バイナリの配布が望まれるところです。cygwinでは、Linuxと同じようにインストールできました。
ミニマルEDAサーバにインストール済みなので、まずは触ってみてください。
実行準備
波形表示ツールgawとの連携のため、~/.gaw/gawrcで、up_listenPortを以下のように変更する:
up_listenPort = 2020
Ubuntu18.04の場合、環境変数を設定する必要がありました。
export NO_AT_BRIDGE=1
起動して回路を開く
初期画面から、File→Openして、回路を開きます。
https://gyazo.com/92458575ad7cfacaf03848d483064deb
この状態では、デバイス(シンボル)のフォルダが選択されているので、□で囲った ..をクリックして一つ上のディレクトリに移動するとexamplesフォルダを選択できます。0_examples_top.schを開いてみましょう。Xschemのいろいろな特長が書いてあります。
https://gyazo.com/58ac45b1f2e3f721270c248177f337e3
左側のピンクの丸で囲った部分から回路例を選ぶことができます。マウスをスクロールして画面を拡大し、左マウスボタンで選択して ‘e’キーを押してください。
これは、cmos_example.schの例です。(CTRL+’e’キーでもとに戻ります。)
https://gyazo.com/34026670f25bee3e92b7488ac9c1c316
‘O’キー(大文字のo)で、バックグラウンドの白黒を反転できます。キー割り当ての表は、Helpから見ることができます。
シミュレーション
verilog, VHDLのシミュレーションもできますが、ここではデフォルトのNGspiceを使います
1. ネットリストの作成
Options → Show netlist winにチェックを入れて、メニュ右上のNetlistをクリックすると以下のようにネットリストが表示されます。作成される場所は、 ~/.xschem/simulations/ の下です。
https://gyazo.com/45785e60479b55db5d1ffc18eaa4b15f
シミュレーションの実行ボタンは、メニュ右上のSimulateです。実行すると、CMOS用のMOSトランジスタモデルは例に含まれてないので、以下のようにエラーで止まります。
https://gyazo.com/d3262c9b275456020351beb580b2984d
シミュレーションモードには、対話モードとバッチモードがあり、この例は対話モードです。このコンソールはNGspiceに付属するものであり、以下のようなコマンドを使うことができます:
source (ネットリストファイル) --- 入力ファイルを読み込む
run — シミュレーションを実行する
display — プリント/プロットできる変数を表示する
plot (ノード名など変数のリスト)
新規回路の作成
素子モデルの不要なシンプルな回路を作成し、gaw波形ビューアを使ってみます。
File → New Schematicで新規回路を開きます。素子は(SPICEのコマンドも)Insキー(Insertキー)を押して現れるウィンドウから選択します。
https://gyazo.com/e792c47737012481504627dd03b1766b
電圧源から選択をはじめて、以下のような回路を作りました。
https://gyazo.com/63a73920b32885711bf226e80fc6a2ba
素子を回転するには、’R’ キーを使います。素子の値を変更するには、素子の上で、マウスの右ボタンをクリックするか、’q’キーを入力します。すると以下のようなフォームが現れますので、valueのところを変更します。
https://gyazo.com/cc15e58ad4dea7c887c61a28798d55fc
配線は、Tools → Insert wireで行います。
シミュレーションと波形表示
Netlistボタンでネットリストを生成します。今回は、gawを使って波形表示するために、Simulation → Configure simulators and toolsにより、以下のようにNgspiceのバッチモードを選択します。Simulateを実行すると、rawファイルが作られます。つぎにWavesを実行するとgawがrawファイルからデータを読み込んで、波形表示できるようになり2つのウィンドウが表示されます。左下のウィンドウから表示したい変数を選ぶこともできるし、下の回路図の赤線のようにネットをselectし、メニュからHighlight → Send selected nets/pins to GAWを実行してselectしたネットの波形を右下のウィンドウに表示することもできます。
https://gyazo.com/13772dc121200d747a581e4b82354c34
ドキュメント
のマニュアルにはわかりやすいビデオチュートリアルもついています。
以上