Autodesk Fusionで回路図作成 →LTspiceでシミュレーション

# 発端
　Autodesk Fusionを用いて、定番のオペアンプ、NJM4580を含む回路を設計しようとしていた。製造元から配布されているspiceモデルをダウンロード、ライブラリに追加しようとした。
 　ところが、ライブラリ中の、パラメータを中かっこでくくって後に書く記法にはFusionの回路シミュレータが対応していないようである。（ngspiceでは、LTspiceやPspiceとは .paramコマンドの書き方が異なるのかもしれない）
　しかしFusionの回路図エディタは非常に使いやすいので、どうにかそのままシミュレーションもできたらいいなということで、LTspiceを用いてシミュレーションすることにした。

 # （Autodesk Fusion側の）ライブラリの準備
　spiceでのシミュレーションにかかわらない部分（シンボルのピンの配置など）については準備済みとする。
 
 ## 抵抗
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735823/9ad61ce3-7b5b-7a4d-a0c9-19c36e3a9403.png)

　まずはシンボル。「97 Info」レイヤーに「>SPICEMODEL」「>SPICEEXTRA」を書いておいて、回路図でspiceモデルが反映されるようにする

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735823/49f870d1-b112-7e38-5e88-3fc838610f4e.png)

 　次に、コンポーネントの画面上部から、「spiceモデルを追加」。Spice Typeを「R: Resistor」として、Mapボタンからマッピング。

## オペアンプ
 　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735823/c4a150d1-ee76-2631-2a84-24acc95815f3.png)

　抵抗と同様に、シンボルに「>SPICEMODEL」「>SPICEEXTRA」を書いておく。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735823/cb0d06c8-d1f4-cce9-336e-3317e5069293.png)

　spiceモデルの追加について。spice typeはX: Subcircuitとしておく。Mapボタンから、subcktの設定に移る。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735823/2ecf2d8b-85a1-474c-9d81-241d0d8a59b6.png)

　姑息なやり方にはなってしまうが、「NJM4580_Fusion」というsubcktを定義し、その中で「NJM4580」というsubcktを参照することにする。これなら、複数のsubcktを定義せずに済む。「NJM4580」は、後ほどLTspiceに移ったとき読み込む。
 
 　ピンのマッピングについては、データシートとにらめっこしながら割り当てていく。

## その他
　電源やGNDについては、公式から配布されている「ngspice-simulation」ライブラリを使用する。（特に、GNDについては基板設計でもそのまま使える）

# 回路図を書く

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735823/b1aeb34c-712d-9265-71ff-1b7e041b6a0d.png)


　簡単のために、抵抗とオペアンプと電源周りのみを使って、増幅率-2倍の反転増幅回路と増幅率3倍の非反転増幅回路をつなげた回路を書いた。
 入力には、振幅0.1Vの1kHzの正弦波を入れている。（V3に対して「値の設定」で、「sine(0 0.1 1k)」を直打ちした）
　電源は±9Vを供給している。また、ネットの名前は上の図の通り。

 # ネットリストをエクスポートする
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735823/779c42e6-6bce-3996-ae6c-418b267feac5.png)

　コマンドラインの窓にexportと入力する。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735823/4274dd21-9a2a-3841-4b72-d8116acbb959.png)

　Enterを押すと何やらいろいろ候補が出てくる。ここから、「SpiceNetList」を選択。適当な場所に名前を付けて保存しておく。とりあえず、piyo.cirで保存した。

 # LTspiceで編集
　ここからは、作業場所をLTspiceに移す。LTspiceで、先ほど作ったpiyo.cirを開く。
 
```
（略）

.TEMP=25.0
* --------- .OPTIONS ---------
* --------- .PARAMS ---------

* --------- devices ---------
V_V2 POW_POS 0 +9V 
R_R4 IN2_INV OUT2 20k 
R_R5 0 IN2_INV 10k 
V_V3 IN 0 sine(0 0.1 1k) 
R_R2 IN1_INV OUT1 20k 
V_V1 POW_NEG 0 -9V 
R_R6 0 OUT2 470k 
X_U1 OUT1 IN1_INV 0 POW_NEG OUT1 IN2_INV OUT2 POW_POS NJM4580_FUSION 
R_R1 IN IN1_INV 10k 
R_R3 0 OUT1 1Meg 

* --------- models ---------

* (model found in library)

*
.SUBCKT NJM4580_Fusion 1 2 3 4 5 6 7 8
XU1 1 2 3 4 5 6 7 8 NJM4580
.ENDS subnam


* --------- simulation ---------
.print DC V(OUT2) V(IN) V(IN2_INV) V(IN1_INV) V(POW_POS) V(POW_NEG) V(OUT1) I(V_V3) I(V_V1) I(V_V2)
.print AC V(OUT2) V(IN) V(IN2_INV) V(IN1_INV) V(POW_POS) V(POW_NEG) V(OUT1) I(V_V3) I(V_V1) I(V_V2)
.print TRAN V(OUT2) V(IN) V(IN2_INV) V(IN1_INV) V(POW_POS) V(POW_NEG) V(OUT1) I(V_V3) I(V_V1) I(V_V2)
.END
```

 　LTspiceのライブラリの入っているフォルダに、配布されていたライブラリファイル「njm4580_v2.lib」を放り込み、piyo.cirの適当な場所に「.lib "njm4580_v2.lib"」と追記。
  また、simulationの行の次あたりに「.tran 10m」を追記しておく。

# シミュレーション実行
　左上のRunボタンを押して実行。
　Runボタンの右隣にいくつかいったところにある「pick visible traces」から、V(in)、V(out1)、V(out2)を選択。
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735823/b960ab89-421b-ee2e-178a-2cdd91249d80.png)

　1段目で-2倍、2段目で3倍となっている様子が分かる。

# 感想
　Fusionのシミュレーションの部分だけLTspiceで行うことで、配布されているライブラリにも対応できるようになった。Fusionでの基板設計がはかどりそうだけど、もうちょっと効率のいいやり方は探せばありそう。特にシミュレーションのオプションとライブラリ読み込みの追記の部分は、毎度するのはちょっとめんどくさい。

 　おしまい。