Split Collector Lateral PNP Transistor SPICE Subcircuit

This question relates to the book Designing Analog Chips by Hans Camenzind.

I need to simulate a simple (one transistor) lateral PNP current mirror:

I am trying to understand how one can model a "split collector lateral PNP transistor" (Q1) using a SPICE sub-circuit.

The book provides a SPICE sub-circuit for lateral PNP transistors (to model substrate currents at saturation, in addition to normal device operation):

Mainly:

* Lateral PNP Transistor subcircuit
* (modeling substrate currents at saturation and normal operation)
* Inputs: 1 (collector), 2 (base), 3 (emitter), 4 (substrate)
.SUBCKT pnp1 1 2 3 4
* dev   <nets>  model
* -----------------
QP11    1 2 3   qp1
QP21    4 2 1   qp2
QP31    4 2 3   qp3
.ENDS


In addition to the PNP device model parameters. (which I am not providing here).

My main question is how do I go about changing the lateral PNP sub-circuit to a split collector type?

I was inclined to simply add an extra port to the Lateral PNP sub-circuit (i.e. c1, c2, b, e) and keep the collector of Q11 as an internal net, then split this net into two wires connected to the c1 and c2 ports, however:

• How does one add "wires" to a SPICE sub-circuit (i.e. to divide currents but keep voltages the same). "Wires are not valid circuit elements, transmission lines are, but this seems really overkill.

I also thought about adding 0 Ohms resistors as "wires" but this seems like a rather hacky solution.

Also is simply splitting the currents a decent model for a split collector lateral PNP?

I know I am probably over-looking something or over-thinking a simple problem.

Any pointer in the right direction will help.

Use two PNP devices with emitters and bases tied together. Place the collectors where you wish.

The layout is the key. Vertical PNPs, with a common EB feeding into collector well with 2 well connections to form the 2 collector outputs, may not model your actual lateral PNP. But who will know?

Here is what I ultimately did to model the split-collector lateral PNP to be able to simulate the current mirror in NGSPICE.

First, where I was wrong: While it turned out that you can add a repeated (same name) port to your SPICE sub-circuit declaration to model two equal leads out of the device, i.e:

.SUBCKT pnp1 1 1 2 3 4
* dev   <nets>  model
* -----------------
QP11    1 2 3   qp1
QP21    4 2 1   qp2
QP31    4 2 3   qp3
.ENDS


A split-collector lateral PNP is not simply a single PNP with two collector leads (this is obvious once you draw it in a schematic). In other words:

Duh!

Otherwise there would be absolutely no sense in using this device. (you would just use a single PNP with two leads out of the collector)

In a real split collector PNP device, the emitter and base are one and the same (see image below), while the collectors are internally separate (two different isolated p-type diffusions)

It is more or less akin to two PNP's sharing base and emitter voltages with independent collectors. (albeit this is not quite right)

More specifically:

I settled for the following subcircuit to model a split-collector lateral PNP device (while still modeling substrate currents at saturation and normal operation, as recommended in the book):

And the SPICE sub-circuit (with labeled ports and nets):

* Split-collector Lateral PNP Transistor subcircuit
* (modeling substrate currents at saturation and normal operation)
* Inputs: 1 (collector1), 1 (collector2), 3 (base), 4 (emitter), 5 (substrate)
.SUBCKT split_coll_lat_pnp1 collector1 collector2 base emitter substrate
* dev   <nets>                     model
* --------------------------------------
QP11    collector1 base emitter    qp1_lat_pnp1
QP12    collector2 base emitter    qp1_lat_pnp1
QP21    substrate  base collector1 qp2_lat_pnp1
QP22    substrate  base collector2 qp2_lat_pnp1
QP31    substrate  base emitter    qp3_lat_pnp1
.ENDS

.MODEL qp1_lat_pnp1 PNP  (
+is     = 1e-16     bf  = 89    vaf = 35        ikf = 1.2e-4    nkf = 0.58
+ise    = 3.4e-15   ne  = 1.6   br  = 5         re  = 100       rc  = 800
+kf     = 1e-12     af  = 1.2   xti = 5         isc = 1e-12     cje = 0.033e-12
+mje    = 0.31      vje = 0.75  cjc = 0.175e-12 mjc = 0.38      vjc = 0.6
+tf     = 5e-8      tr  = 5e-8  xtf = .35       itf = 1.1e-4    vtf = 4
+xtb    = 2.3e-1   )

.MODEL qp2_lat_pnp1 PNP is = 5e-15 bf = 150 re = 100 tf = 5e-8 xti = 5

.MODEL qp3_lat_pnp1 PNP (
+is = 1e-18 bf = 25 cjc = 0.85e-12 mjc = 0.42 vjc = 0.6 xti = 5 re = 100 )


This allowed me to simulate the Lateral PNP current mirror with NGSPICE as needed: here is the simulation

Please let me know if this is not correct (I am learning, thus the simulations) and feel free to modify this comment as per Stack Exchange guidelines