1
\$\begingroup\$

I am trying to use the Infineon spice model for BFP640ESD (link for library file), but it has two emitter terminals and I'm not sure how to use it since the BJT models have only 3 terminals and I need 4.

Spice code added below:

***************************************************************
*   Infineon    Technologies    AG
*   GUMMEL-POON MODEL   IN  SPICE   2G6 SYNTAX
*   VALID   UP  TO  10  GHZ
*   >>> BFP640ESD   <<<
*   (C) 2012    Infineon    Technologies    AG
*   Version 2.1 November    2012
***************************************************************
* - Please use the global SPICE GP parameter TEMP to specify the
*   junction temperature of the device in your application to get
*   correct simulation results. This procedure is necessary because
*   the GP model does not consider the self heating of the device.
* - TEMP is calculated by TEMP=TA+Pdc*(RthJS+RthSA). The junction
*   temperature TEMP is the sum of the ambient temperature TA and
*   the increment of temperature caused by the dissipated DC power Pdc.
* - RthJS is the thermal resistance between the junction and the
*   soldering point. RthJS for this device is 310 K/W. RthSA is the
*   thermal resistance of the PCB, from the soldering point to the
*   ambient. For determination of RthSA please refer to Infineon's
*   Application Note "Thermal Resistance Calculation" AN077.
* - The model has been verified in the junction temperature range
*   -25°C to +125°C.
* - TNOM=25 °C is the nominal ambient temperature during measurement
*   for the parameter extraction. Please do not change this value.
****************************************************************
*.OPTION TNOM=25, GMIN= 1.00e-12
*BFP640ESD C B E1 E2
.SUBCKT BFP640ESD 1 2 3 4
*
CBEPAR 22 33 2.29E-013
CBCPAR 22 11 7.095E-014
CCEPAR 11 33 2.024E-013
LB    22 20 6.623E-010
LE   33 30 1.519E-010
LC   11 10  6.522E-010
CBEPCK 20 30  4.4E-014
CBCPCK 20 10  1E-015
CCEPCK 10 30  4.4E-014
LBX    20 2 3.607E-010
LEX   30 35 5.524E-011
LCX   10 1  2.452E-010
*
RE1 35 3 1E-03
RE2 35 4 1E-03
*
D1 33 25 M_D1
D2 41 25  M_D2
*
RBLfdb 22 25 1.754
*
R_PW_fbd 41 33 7.5
R_PW_e11g 42 33 2.1
R_sub_fbd 41 5 477
R_sub_e11g 42 5 350
R_CS_npn 55 5 424.1
RSUB 30 5 0.001
*
D3 42 15 M_D3
D4 23 33 M_D4
D5 23 15 M_D5
*
RLDNBL 15 11 10.63
*
Q1 11 22 33 55 M_BFP640ESD
*
.MODEL M_D1 D(
+ IS=3.5E-015
+ N=1
+ RS=6.1
+ CJO=1E-014)
*
.MODEL M_D2 D(
+ IS=6E-015
+ N=1
+ RS=0.01
+ CJO=9E-015)
*
.MODEL M_D3 D(
+ IS=9E-015
+ N=0.9973
+ RS=160
+ CJO =2E-014)
*
.MODEL M_D4 D(
+ IS=3.5E-015
+ N=1
+ RS=0.2
+ CJO =2E-014)
*
.MODEL M_D5 D(
+ IS=3.5E-015
+ N=1.02
+ RS=4.7
+ CJO =3.003E-014)
*
*
.MODEL  M_BFP640ESD NPN(
+   TNOM = 25
+   IS  =   9.658E-016
+   BF  =   557.2
+   NF  =   1
+   VAF =   192.2
+   IKF =   0.09128
+   ISE =   3.626E-014
+   NE  =   2
+   BR  =   246.5
+   NR  =   0.9955
+   VAR =   1.577
+   IKR =   0.004397
+   ISC =   1.27E-014
+   NC  =   1.322
+   RB  =   4.406
+   IRB =   0.0006534
+   RBM =   0.8094
+   RE  =   0.2638
+   RC  =   4.042
+   XTB =   -2.576
+   EG  =   1.11
+   XTI =   0.15
+   CJE =   3.798E-013
+   VJE =   1
+   MJE =   0.1016
+   TF  =   2.172E-012
+   XTF =   1.084
+   VTF =   0.5626
+   ITF =   0.3839
+   PTF =   0.28
+   CJC =   5.346E-014
+   VJC =   0.7186
+   MJC =   0.8649
+   XCJC    =   1
+   TR  =   2E-009
+   CJS =   1.404E-013
+   MJS =   0.07264
+   VJS =   0.4
+   FC  =   0.3
+   KF  =   7.116E-011
+   AF  =   1.7)
***************************************************************
.ENDS BFP640ESD
\$\endgroup\$
  • \$\begingroup\$ That link requires a myInfineon account. \$\endgroup\$ – Ste Kulov Nov 21 at 22:16
  • \$\begingroup\$ Hi Ste, I dont see an attach file option so I edited the post and just pasted the model code. Notice the pin configuration BFP640ESD C B E1 E2. That E2 is what I need to know how to connect \$\endgroup\$ – Josiah Cochran Nov 21 at 23:00
  • \$\begingroup\$ OK, I just made a symbol, but when I run it I get all this error "Error on line 4 : v1 n003 0 v Unknown parameter "v"" and a ton of warning about less than two connection and empty pin current \$\endgroup\$ – Josiah Cochran Nov 21 at 23:38
  • \$\begingroup\$ Thanks. I understand how to solve this now. Can you tell us what SPICE program you are using? \$\endgroup\$ – Ste Kulov Nov 21 at 23:39
  • \$\begingroup\$ Im using LTSpice. Is there something better for this I should try? \$\endgroup\$ – Josiah Cochran Nov 21 at 23:42
2
\$\begingroup\$

The subcircuit text shows that the two external emitter connections are simply shorted together internally via a 1mΩ resistor each. Nodes 3 and 4 are E1 and E2 respectively, and the resultant node after connecting them together is node 35.

RE1 35 3 1E-03
RE2 35 4 1E-03

There are a few ways to handle this. First, is to convert the subcircuit to 3 terminals so you can use a standard NPN symbol with it. You can either ignore the 2nd emitter connection (since it's negligible) or if you want to be a stickler you can use the parallel equivalent of the two 1mΩ connections to form a single emitter that's 500µΩ. I'll do the latter by changing the .subckt line to .SUBCKT BFP640ESD 1 2 3, change the RE1 line to RE1 35 3 500u and delete the RE2 line completely. After those changes, the beginning of the file would look something like this:

.SUBCKT BFP640ESD 1 2 3
*
CBEPAR 22 33 2.29E-013
CBCPAR 22 11 7.095E-014
CCEPAR 11 33 2.024E-013
LB    22 20 6.623E-010
LE   33 30 1.519E-010
LC   11 10  6.522E-010
CBEPCK 20 30  4.4E-014
CBCPCK 20 10  1E-015
CCEPCK 10 30  4.4E-014
LBX    20 2 3.607E-010
LEX   30 35 5.524E-011
LCX   10 1  2.452E-010
*
RE1 35 3 500u
*
D1 33 25 M_D1
D2 41 25  M_D2
*

The final step to make this work is to ctrl+rightclick the NPN symbol in LTspice to change the "Prefix" field from QN to X which allows you to use it for subcircuits.

enter image description here


A more direct approach (which doesn't require experienced analysis of the .subckt in question) would be to use the npn4 symbol which has a 4th terminal. It's originally meant for the substrate connection, but since you are using a .subckt instead of a .model it doesn't matter and just provides you with an extra terminal. I will use this extra terminal as the 2nd emitter and tie them together in the schematic. We still have to change the "Prefix" field as was done above.

enter image description here


Last is the method you hinted at in your question's comments, which is the auto-generated symbol which can be used with any .subckt. Instead of re-explaining this, I'm just going to link to the Analog Devices website which already has a tutorial on it.

enter image description here


| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Wow thank you for the detailed and speedy response! So I did the third method and built the circuit you show and the output is 0V for me and not 1.2V. Can you share your simulation file? \$\endgroup\$ – Josiah Cochran Nov 22 at 0:37
  • \$\begingroup\$ tried method one and I get "unknown subcircuit called in: xq1 n001 n002 n003 bfp640esd" \$\endgroup\$ – Josiah Cochran Nov 22 at 0:49
  • \$\begingroup\$ ok probably just was referencing and old library file. Pasted a spice directive with the code and it works now! :) \$\endgroup\$ – Josiah Cochran Nov 22 at 1:00
  • \$\begingroup\$ @JosiahCochran Yeah, you need to .lib xxx.lib for the first two examples. There's some kind of hierarchical order for how it attempts to find the file which I don't 100% remember but it's something like it first looks in the schematic directory and then looks in Documents\LTspiceXVII\lib\sub after that. I typically keep all my models in that \sub directory since that is my preference. The auto-generated symbol does an auto .lib command so that's why in my screenshot it's not there. Pasting the library text directly on the schematic has the benefit of making the schematic portable. \$\endgroup\$ – Ste Kulov Nov 22 at 17:38
1
\$\begingroup\$

Looks like the SPICE model already includes the very low inductance of the dual_emitters

| improve this answer | |
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.