I'm having some difficulty getting LTSpice to like a TRIAC model.

The specific error it throws is "Missing model definition for VGT-0.65". The trouble is that VGT is a subcircuit parameter, not a model.

The thyristor library is one I found while googling for a SPICE model for the MAC97 (MAC97A8 specifically). It's located here and looks like a decent, well-built thyristor library. It abstracts a single SCR and single Triac subcircuit, and then lists dozens of models of various thyristors which call up one of these two models.

The subcircuit line that is throwing the error is this one:

Rseries  gate    gate1   {(Vgt-0.65)/Igt}

Now I've tried putting Vgt in parentheses all by itself (to try to separate the "-0.65" from the "Vgt", but then the LTSpice error just says it's got a missing model for VGT.

The specific model for the MAC97A8 also looks fine, and defines Vgt:

.subckt MAC97A8         MT2 gate MT1
* Min and Max parameters
X1 MT2 gate MT1 Triac params:
+ Vdrm=600v  Idrm=10u     Ih=10ma      dVdt=25e6   Ton=2u
+ Igt=5ma    Vgt=2.0v     Vtm=1.9v     Itm=.85
* 90-5-18    Motorola     DL137, Rev 2, 3/89

I've tried a few other TRIAC models to see if there was something specifically goofy about this one but that does not appear to be the case. At this point I'm starting to wonder if there is something odd about LTSpice's handling of the Triac subcircuit, but LTSpice is a pretty decent SPICE program so I'm hesitant to blame it, especially with a thyristor library found out on the random 'net.

Has anyone simulated TRIAC circuits with LTSpice before? Is there something specific that I am missing?


1 Answer 1


From the LTSPice IV manual:

X. Subcircuit 
Syntax: Xxxx n1 n2 n3... <subckt name> 
Subcircuits allow circuitry to be defined and stored in a 
library for later retrieval by name. Below is an example of 
defining and calling a voltage divider and invoking it in a 
* calling a subcircuit 
* This is the circuit 
X1 in out 0 divider top=9K bot=1K 
V1 in 0 pulse(0 1 0 .5m .5m 0 1m) 
* This is the subcircuit 
.subckt divider A B C 
R1 A B {top} 
R2 B C {bot} 
.ends divider 
.tran 3m 

Notice that params: never appears in the LTSpice syntax for a subcircuit call.

I am guessing that including this token in your X card has confused LTSpice about how the subcircuit should be called.

  • \$\begingroup\$ Sometimes the solution is staring you right in the face but you can't see it. This is exactly what the problem was. Removing the "params:" from the library was all it took. Thank you very much, excellent answer and hopefully it helps others in the future. \$\endgroup\$
    – akohlsmith
    Commented Nov 11, 2013 at 3:06
  • \$\begingroup\$ To be fair, while googling around to find this answer, I found a document for another simulator that claims that LTSpice does use params: here. \$\endgroup\$
    – The Photon
    Commented Nov 11, 2013 at 3:25
  • \$\begingroup\$ Sorry about the delay in assigning the bounty; I thought that accepting the answer automatically did that. \$\endgroup\$
    – akohlsmith
    Commented Nov 15, 2013 at 16:44
  • \$\begingroup\$ No worries...I think it would have eventually happened on its own. \$\endgroup\$
    – The Photon
    Commented Nov 15, 2013 at 17:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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