# Decoding SPICE Model for onsemi SZ1SMB5939BT3G 30V Zener

I would like to model using the onsemi 1SMB5936BT3G (30V Zener Diode) SPICE model, but the SPICE model is not acting as I am expecting. Built-in LTspice Zeners clamp the kickback no problem but the 3rd party model lets the kickback soar into the kV range (voltage trace is measured at the node between the mosfet drain, zener, and inductor). I'm learning about SPICE models and nomenclature/formatting. I followed a tutorial to create my own rudimentary Zener model and experimented with the alias technique.

I would like to ask a few questions -

What are the blue model lines in this .subckt? Why are there multiple 'models' in this file? What do the models represent? I assume text with a star is 'commented out' and not part of the code. Why does BV= inf in the commented out section? BV should be 30 V and not commented out correct? Since BV is not declared, does this model assume you will manually declare BV and other parameters in an alias (i.e. it is incomplete, and competent electrical engineers know SPICE models from 3rd parties typically require revisions to be functional?)

Side note for anyone looking at the circuit BSZ065N06LS5 is filling in for SiS176LDN because I can't find a SPICE model for SiS176LDN.

• Are you trying to start with the 1SMB5913BT3G.LIB from onsemi's website and then tweak the settings trying to convert it from 1SMB5913BT3G -> 1SMB5936BT3G? Mar 9 at 0:46
• Hi, no I started down that path, but then found the SPICE for 1SMB5936BT3G directly linked to the Mouser page for 1SMB5936BT3G. And it says ".SUBCKT 1smb5936bt3"
– Mike
Mar 9 at 0:58
• Ah, got it. So it's the model they made for the non_G version. This is the link you're talking about: onsemi.com/pub/Collateral/1SMB5936BT3.LIB Mar 9 at 1:04
• I'm in a rush so can't really give a thorough answer, but the general jist is that a subcircuit model is usually more sophisticated and better characterizes the different aspects of a real-world device. All the built-in models in LTspice use a single .model statement, thus aren't as accurate (but simulate much faster). I believe this simulation shows you that your pulse results in edges too fast for the zener to react in time (see datasheet 8/20us graphs) and thus you might need a TVS diode instead. Mar 9 at 1:12
• @Mike I would not recommend using Program Files to be touched in any way. LTspice(XVII) doesn't even read the files from there, but from either My Documents or %LocalAppData%. And R3 is quite useless there. I'll also wait for Ste's answer, but I have to say the model doesn't make much sense to me (the EV1, RBV, IBV group -- why not use a simplve voltage source of 29.2455 V?), unless there's more? Mar 9 at 9:30

First, I'm going to paste in the text of the subcircuit you are working with so others can play along.

.SUBCKT 1smb5936bt3 2 1
**************************************
*      Model Generated by MODPEX     *
*   Contains Proprietary Information *
*      Which is The Property of      *
*     SYMMETRY OR ITS LICENSORS      *
*Commercial Use or Resale Restricted *
*   by Symmetry License Agreement    *
**************************************
* Model generated on Jan 23, 03
* MODEL FORMAT: PSpice
*     anode cathode
*node: 2      1
*    Forward Section
D1 2 1 MD1
.MODEL MD1 D IS=6.39889e-20 N=1 XTI=1 RS=1
+ CJO=3.1e-10 TT=1e-08
*    Leakage Current
R 1 2 MDR 4.56e+07
.MODEL MDR RES TC1=0 TC2=0
*    Breakdown
RZ 2 3 5.81829
IZG 4 3 0.06
R4 4 3 1000
D3 3 4 MD3
.MODEL MD3 D IS=2.5e-12 N=4.29432 XTI=0 EG=0.1
D2 5 4 MD2
.MODEL MD2 D IS=2.5e-12 N=5.73292 XTI=0 EG=0.1
EV1 1 5 6 0 1
IBV 0 6 0.001
RBV 6 0 MDRBV 29245.5
.MODEL MDRBV RES TC1=0.000957071
*-- PSpice DIODE MODEL DEFAULT PARAMETER
*  VALUES ARE ASSUMED
*IS=1E-14 RS=0 N=1 TT=0 CJO=0
*VJ=1 M=0.5 EG=1.11 XTI=3 FC=0.5
*KF=0 AF=1 BV=inf IBV=1e-3 TNOM=27
.ENDS 1smb5936bt3


Then I'll begin with your explicit questions:

What are the blue model lines in this .subckt?

They are .model statements. They define the parameters for a device (typically a semiconductor device but not always) and give it a name. Then you can create many different instances of this device using this name. For example, the .model line:

.MODEL MD1 D IS=6.39889e-20 N=1 XTI=1 RS=1


Defines a diode model (indicated by the D) and gives it the name MD1. All the MD1's you want to create all have those same parameter values for: IS, N, etc. Then the following line creates an instance of MD1 called D1 from nodes 2 to 1:

D1 2 1 MD1


Why are there multiple 'models' in this file?

This file is that of a SPICE subcircuit (indicated by the .subckt at the top) which contains a bunch of simpler devices connected together. The designers of this subcircuit seemed to use various diodes with different parameters to construct an overall behavioral model of this zener diode. Subcircuits for semiconductors will typically contain several .model statements, depending on how sophisticated the behavior they want to achieve.

What do the models represent?

In general, they are there to fulfill some function the designer wants. Most commonly they are used to implement certain desired behaviors. However, you can find subcircuits which model an entire IC on the transistor level.

I assume text with a star is 'commented out' and not part of the code. Why does BV= inf in the commented out section?

This comment section you are referring to is simply letting the user be aware of the assumed defaults for a D-device. If you don't specify an explicit value for a .model's parameters, the defaults are used. Therefore, in this case BV=inf is the default so any D-device .model without a BV defined will have it set to infinity (i.e. no breakdown happens). One interesting thing to note here is that PSpice defaults are assumed and they're not all the same as LTspice defaults. If you inspect them you'll notice that IBV is different (1e-3 vs 1e-10). However, because BV=inf for all diode .model's in this file then IBV never comes into play so it's luckily irrelevant for this specific subcircuit.

BV should be 30 V and not commented out correct? Since BV is not declared, does this model assume you will manually declare BV and other parameters in an alias (i.e. it is incomplete, and competent electrical engineers know SPICE models from 3rd parties typically require revisions to be functional?)

No. The designers used a different structure to model the breakdown voltage (see below).

Understanding SPICE subcircuits authored by someone else is usually a very complicated task. Fortunately, this is (1) a small subcircuit and (2) the designer put a couple comments to help understand the different sections. The easiest way to analyze this subcircuit is to "decompile" it back into a schematic. It's quite a time-consuming task, especially if you're a beginner, but dealing with a small subcircuit helps make it go quick.

Using this subcircuit, your 1SMB5936BT3 zener diode:

Looks like this inside:

I did my best to try and visually place everything in an intuitive way, but that's subjective without fully understanding the designer's intent. You can check that I reverse engineered it correctly by looking at the schematic's netlist [Menu -> View -> SPICE Netlist] and comparing it to the subcircuit's netlist in the .lib file:

I don't understand all of what's going on here, but the 30V breakdown voltage is formed by EV1, IBV, and RBV. IBV $$\\times\$$ RBV calculate the breakdown voltage, so change RBV to adjust it.

If you want to try to understand more of what's going on and how this subcircuit works, you can save the following text to a .ASC file and open it in LTspice. Then connect nodes 1 and 2 to a stimulus and probe all the inner workings to help you figure it out.

Version 4
SHEET 1 1732 1112
WIRE 416 128 320 128
WIRE 576 128 416 128
WIRE 1536 128 576 128
WIRE 1536 160 1536 128
WIRE 416 176 416 128
WIRE 576 176 576 128
WIRE 416 288 416 240
WIRE 416 288 320 288
WIRE 576 288 576 256
WIRE 576 288 416 288
WIRE 896 288 576 288
WIRE 1520 288 1376 288
WIRE 1536 288 1536 240
WIRE 1536 288 1520 288
WIRE 1664 288 1536 288
WIRE 1056 304 944 304
WIRE 1136 304 1056 304
WIRE 896 336 896 288
WIRE 1056 336 1056 304
WIRE 1136 336 1136 304
WIRE 1536 336 1536 288
WIRE 1664 336 1664 288
WIRE 944 352 944 304
WIRE 1376 352 1376 288
WIRE 944 448 944 400
WIRE 1056 448 1056 416
WIRE 1056 448 944 448
WIRE 1136 448 1136 416
WIRE 1136 448 1056 448
WIRE 1376 448 1376 416
WIRE 1536 448 1536 416
WIRE 1536 448 1376 448
WIRE 1664 448 1664 416
WIRE 1664 448 1536 448
WIRE 944 464 944 448
WIRE 896 512 896 416
WIRE 1136 512 896 512
WIRE 1216 512 1136 512
WIRE 1520 512 1280 512
WIRE 1536 512 1536 448
WIRE 1536 512 1520 512
FLAG 944 464 0
FLAG 1520 512 4
FLAG 1136 512 5
FLAG 1136 304 6
FLAG 320 128 2
FLAG 320 288 1
FLAG 1520 288 3
SYMBOL diode 400 176 R0
SYMATTR InstName D1
SYMATTR Value MD1
SYMBOL res 560 272 M180
WINDOW 0 36 76 Left 2
WINDOW 3 36 40 Left 2
SYMATTR InstName R
SYMATTR Value MDR 4.56e+07
SYMBOL res 1520 144 R0
SYMATTR InstName RZ
SYMATTR Value 5.81829
SYMBOL current 1664 416 R180
WINDOW 0 24 80 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName IZG
SYMATTR Value 0.06
SYMBOL res 1552 432 R180
WINDOW 0 36 76 Left 2
WINDOW 3 36 40 Left 2
SYMATTR InstName R4
SYMATTR Value 1000
SYMBOL diode 1360 352 R0
SYMATTR InstName D3
SYMATTR Value MD3
SYMBOL diode 1216 528 R270
WINDOW 0 32 32 VTop 2
WINDOW 3 0 32 VBottom 2
SYMATTR InstName D2
SYMATTR Value MD2
SYMBOL e 896 320 M0
SYMATTR InstName EV1
SYMATTR Value 1
SYMBOL current 1056 416 R180
WINDOW 0 24 80 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName IBV
SYMATTR Value 0.001
SYMBOL res 1120 320 R0
SYMATTR InstName RBV
SYMATTR Value MDRBV 29245.5
TEXT 528 624 Left 2 !.MODEL MD1 D IS=6.39889e-20 N=1 XTI=1 RS=1 CJO=3.1e-10 TT=1e-08 \n.MODEL MDR RES TC1=0 TC2=0\n.MODEL MD3 D IS=2.5e-12 N=4.29432 XTI=0 EG=0.1\n.MODEL MD2 D IS=2.5e-12 N=5.73292 XTI=0 EG=0.1\n.MODEL MDRBV RES TC1=0.000957071
TEXT 424 64 Center 1 ;Forward Section
TEXT 664 64 Center 1 ;Leakage Current
TEXT 1248 64 Center 1 ;Breakdown
RECTANGLE Normal 496 336 352 80 2
RECTANGLE Normal 784 336 528 80 2
RECTANGLE Normal 1728 576 816 80 2



I would like to model using the onsemi 1SMB5936BT3G (30V Zener Diode) SPICE model, but the SPICE model is not acting as I am expecting. Built-in LTspice Zeners clamp the kickback no problem but the 3rd party model lets the kickback soar into the kV range (voltage trace is measured at the node between the mosfet drain, zener, and inductor).

I made an attempt to address this in your question's comment, but after playing around a little bit I tend to agree more with [a concerned citizen] that the EV1 structure is suspect and could cause instabilities. It might be why your KV spikes are occurring. You can try playing around with the schematic version of the subcircuit to see if you can figure out the cause or what mitigates the issue. But if you still have trouble with this subcircuit model, you can try asking onsemi for assistance......or use a different part with a less troublesome model.

• Nice, +1. Instead of the whole EV1 group, I would have reused Rz with a current source in parallel, with a value equal to BV/RZ. That eliminates the (possible) floating voltage source problem, and has only current sources, preferred by LTspice. Still, the way they're using BV is by direct polarizing the D2, so they're using the knee region for forward conduction as BV. I suppose they have their reasons. Mar 11 at 12:45
• @aconcernedcitizen I realized a bit after I posted that the RBV resistor is used to add temperature dependence to the breakdown voltage. You can probably do it better a different way, but that was their strategy and why that structure is there. Mar 11 at 12:57
• You're right, I missed the .model MDRBV part. When I tried to recreate the model I simply placed default R & co. to "get a feel" of it, missing details. I am abashed. It could be calculated and adapted for RZ`, if you're fighting for elements/nodes, but then the whole thing would have been a very obscure voodoo. Mar 11 at 14:57
• @SteKulov thank you very much for the detailed analysis. I'm going to need to take some time understanding this but you have provided an excellent resource for me to work through.
– Mike
Mar 12 at 0:00