Forum: Analoge Elektronik und Schaltungstechnik LTSpice: Mehrere Bauteile in lib-File


von Jan (Gast)


Lesenswert?

Hallo LT-Spice Experten,
ich habe hier zum Simulieren eine Spice-Library mit mehreren Bauteilen 
(~1000). In diese lib werden in den Bauteil-definitionen einige 
Berechnungen durchgeführt. Wenn ich die lib einbinde, erhalte ich dann 
aber einen Fehler "Missing Expression in: .PARAM t01={1/sqrt(1+2/Vn)}".

Da der Ausdruck ".PARAM t01={1/sqrt(1+2/Vn)}" aber 159 mal in der lib 
auftaucht, erscheint mir eine Fehlersuche mit einzelne Bauteile 
rauskopieren recht aufwändig. Ich dachte erst, das entweder das 
mehrfache Auftreten der Variablen, z.b. t01 das Problem ist, oder der 
Ausdruck an sich. Eine mit zwei Bauteilen versehene test.lib lässt sich 
aber laden, das Ersetzen des Ausdrucks t01={1} bringt ebenfalls den 
Fehler. Da im normalen log-File nichts zu finden ist, ist meine Frage, 
gibt es noch eine bessere Debug-Möglichkeit für so etwas? Offensichtlich 
wird die library ja schon beim starten der Simulation auf Fehler hin 
geparst.

Danke für die Hinweise,
Jan

Anbei ein kurzer Ausschnitt (nicht Vollständigkeit, nur zur 
Verdeutlichung)

.SUBCKT Bxxx1234_NF drain gate source
.PARAM h2=3.23578125E-14  Fn=3.23578125E-14  Vn=0.841373315949588
.PARAM t02={1/((1+2/Vn)**1.5*Vn)}
.PARAM t01={1/sqrt(1+2/Vn)}
.PARAM t3 ={0.25*(t01-Acfgs2+t02)}
.FUNC  li1(Uds,Ugs)  {SL(Iges(Uds,Ugs),-1000,1000)}
G_G1 d s 
VALUE={li1(V(d,s),V(g,s))+if(Time>100p,SL(DDT(V(d,s))*Cds(V(d,s)),
+ -500,500),0)}
R1 gate source 2G
Rd0 d s 500Meg
.ENDS

.SUBCKT Bxxx1234_NF drain gate source
.PARAM h2=3.23578125E-14  Fn=3.23578125E-14  Vn=0.841373315949588
.PARAM t02={1/((1+2/Vn)**1.5*Vn)}
.PARAM t01={1/sqrt(1+2/Vn)}
.PARAM t3 ={0.25*(t01-Acfgs2+t02)}
.FUNC  li1(Uds,Ugs)  {SL(Iges(Uds,Ugs),-1000,1000)}
G_G1 d s 
VALUE={li1(V(d,s),V(g,s))+if(Time>100p,SL(DDT(V(d,s))*Cds(V(d,s)),
+ -500,500),0)}
R1 gate source 2G
Rd0 d s 500Meg
.ENDS

von Jan (Gast)


Lesenswert?

Hallo,
nach manuellem Bubble-Sort in ein neues File habe ich in Zeile 44000 den 
Fehler gefunden. Es waren zwei Zeilen in einer. Die Antwort, ob man den 
Fehler auch in einem versteckten Logfile finden könnte würde mich aber 
trotzdem interessieren.


.PARAM g13=219199.666431687  g14=30467.720685112  g15=-1.01170893842911
.PARAM g16=-26.1603856063749  g17=3.80943803117763E-09  al=0.5
1
.PARAM t02={1/((1+2/Vn)**1.5*Vn)} .PARAM t01={1/sqrt(1+2/Vn)}
.PARAM t3 ={0.25*(t01-Acfgs2+t02)}
.PARAM t2 ={-0.25*t02}

Jan

von Helmut S. (helmuts)


Lesenswert?

Ich halbiere die Datei immer weiter um so einen Fehler zu finden.
Sozusagen eine "sukzessive Approximation".

von Jan (Gast)


Lesenswert?

Na in dem Fall haben wir die gleiche Suchstrategie und es scheint wohl 
kein anderes Mittel zu geben. Ich hab dann noch 3 ähnliche Fehler mit 
zusammenhängenden Zeilen entdeckt. Jetzt funktioniert alles.

Danke, Jan

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.