以前 KiCAD でシミュレーションを行う方法を紹介した記事を書きましたが、TL072 といった同じ回路ユニットを複数持った部品に SPICE モデルをうまく当てられずに、応急処置でごまかしました。その後そういった部品のためのモデルの作り方がわかったので記事にしておきます。
KiCAD でシミュレーションを行う場合、実際に製作する回路にシミュレーションをかける場合が多々ありますか。そういう場合プリント基板の設計に影響が出るため、シミュレーションのためにデバイス番号・ユニット番号を変えることは避けたいです。でも、通常 SPICE モデルファイルには 1 ユニット分のモデルしか入っていません。例えばテキサス・インスツルメンツは TL072 の SPICE モデルを配布していますがモデルは一ユニット分です。TL072 の複数ユニットに対して一個のモデルしか割り当てられませんから、そのモデルは 2 ユニット分が含まれていけないといけません。
そこでモデルファイルを少し改造する必要があります。以下のスクリーンショットは KiCAD の TL072 シンボルに当ててあるシミュレーションモデルを見たもの。TL072 のほかに DUAL、QUAD というモデルが用意されていて DUAL モデルが使われています。

この DUAL モデルを使ってピンの割り当ても行います。以下はユニット A の設定。モデルのピン番号は DUAL サブサーキットとして定義されています。

同様にユニット B のモデル設定も必要です。同じモデルを使って、ピン番号 5, 6, 7 を割り当てます。

こういう風に複数ユニットモデルを作ってユニットごとにピン番号を割り当てます。例えば 4 ユニットの TL074 のモデルも同じ要領で作れます。
このモデルはどんな風に作るか?おおもとは TI から配布されている TL072 モデルを使っています。これを加工して以下のように DUAL サブサーキットを作ります。
.SUBCKT DUAL 1 2 3 4 5 6 7 8
XUA 3 2 8 4 1 TL072
XUB 5 6 8 4 7 TL072
.ENDS
* TL072 OPERATIONAL AMPLIFIER "MACROMODEL" SUBCIRCUIT
* CREATED USING PARTS RELEASE 4.01 ON 06/16/89 AT 13:08
* (REV N/A) SUPPLY VOLTAGE: +/-15V
* CONNECTIONS: NON-INVERTING INPUT
* | INVERTING INPUT
* | | POSITIVE POWER SUPPLY
* | | | NEGATIVE POWER SUPPLY
* | | | | OUTPUT
* | | | | |
.SUBCKT TL072 1 2 3 4 5
*
... the model definition follows
PlaintextXUA と XUB の行で下にある TL072 モデルのピンと DUAL モデルのピンの関係を定義します。頭がこんがらがりますが XUA、XUB の行に書いてある数字は DUAL モデルのピン番号、数字の順序は下にある TL072 モデルの数字の順序と対応しています。こんな感じに読めます。
NON-INVERTING-INPUT : In+
INVERTING-INPUT : In-
POSITIVE POWER SUPPLY : Vcc
NEGATIVE POWER SUPPLY : Vee
OUTPUT : Out
XUA (In+ -> 3) (In- -> 2) (Vcc -> 8) (Vee -> 4) (Out -> 1) TL072
XUB (In+ -> 5) (In- -> 6) (Vcc -> 8) (Vee -> 4) (Out -> 7) TL072
+----------+
1 -| Out Vcc |- 8
2 -| In- Out |- 7
3 -| In+ In- |- 6
4 -| Vee In+ |- 5
+----------+
Plaintextデュアルトランジスタも同様にサブサーキットを作って対応します。以下は BC557 のモデルを使ってデュアルトランジスタ BC857BDW1 のモデルを使った例です。トランジスタのモデルをサブサーキットとして定義する方法がわからなかったので、デュアルトランジスタのサブサーキットの中にモデルの定義を含めました。

これらの SPICE モデルファイルを参考のため gist に置きました。
https://gist.github.com/naokiiwakami/f763b7cf2317974d36bd6139de019bb9