LtSpice-Berechnungsbeschränkung: Welche Bedingungen wirken sich darauf aus?

Ich versuche, eine Schaltung auf Transistorebene in LtSpice zu simulieren. Es gibt mehr als 200 Transistoren im Design und ein paar Operationsverstärker. Meist logische Strukturen.

Das Problem ist, dass LtSpice die Gleichungen nach einiger Zeit (wie 100 uns) nicht lösen kann. Die CPU-Auslastung erreicht 100 %. Aber hier ist das Merkwürdige, wenn ich (etwas große) Kondensatoren an jeden Ausgang jeder Struktur stecke, kann LtSpice die Schaltung vollständig lösen (immer noch sehr langsam mit 100% CPU-Auslastung, aber es kommt immerhin zum Ende). Also hier ist die Sache: Ich kann keine großen Kondensatoren auf jeden Ausgang legen. Aus Effizienzgründen kann ich das nicht!

Können Sie mir dabei helfen? Ich habe keinen Supercomputer und muss diese Simulation durchführen. Gibt es Lösungen für LtSpice in einem Deadlock? Danke.

Versuchen Sie Folgendes: groups.yahoo.com/group/LTspice

Antworten (3)

LTspice hat keine Begrenzung der Anzahl der Komponenten oder Knoten.

Wahrscheinlich ist nicht die Anzahl der Komponenten oder die Gesamtgröße Ihres Schaltplans das Problem, aber Sie könnten mit einigen No-Gos konfrontiert werden, die Ihre Schaltung schwer zu lösen machen.

Wenn Sie Kondensatoren haben, versuchen Sie, einen kleinen ESR hinzuzufügen, indem Sie die Komponenteneigenschaften bearbeiten. Wenn Sie Induktoren haben, ist das Hinzufügen eines DC-Widerstands (Kupfer) noch wichtiger.

Außerdem werden ideale Dioden oder ideale Transistoren manchmal nicht gut gelöst. Versuchen Sie, Modelle realer Komponenten zu verwenden (z. B. 1N4148 anstelle der generischen, unbeschrifteten Diode). Vielleicht interagieren Ihre Logik- oder Opamp-Modelle auf seltsame Weise mit ihrer Nachbarschaft.

Es ist auch möglich, dass etwas in Ihrem Schaltplan versucht, mit einer sehr hohen Frequenz zu schwingen, wenn dies in Wirklichkeit nicht der Fall wäre. (3 GHz um einen Audiofrequenz-BJT? Auf keinen Fall!) Ein solches Verhalten wird oft durch unerwünschte Resonanz von zu idealen Parasiten oder L / C-Tanks verursacht. Versuchen Sie, die Ursache für diese möglichen Schwingungen zu finden, und fügen Sie hier und da einige zusätzliche Widerstände hinzu. Genauso schlimm wie starke Schwingungen sind sehr, sehr steile Spitzen. Sehen Sie einige Spuren, die bis in den kA- oder kV-Bereich reichen, wenn Sie nur eine kleine Kleinsignalschaltung haben?

Ich bin nicht so gut mit Erklärungen, aber ich werde es versuchen.

Mike, der Schöpfer von LTspice, hat große Anstrengungen unternommen, um sicherzustellen, dass der Solver nicht auf abrupte Änderungen stößt, die Probleme aufwerfen könnten. Das bedeutet, dass sogar die ideale Diode, wenn sie simuliert wird, eine kleine Rundung um das Knie zeigt. Fügen Sie genügend Punkte hinzu und es wird schärfer, aber zoomen Sie hinein und Sie erhalten immer noch eine kleine Rundung. Dies gilt für (so wie ich es kenne) für alle nichtlinearen Elemente.

Es gibt jedoch Fälle, in denen zwei oder mehr nichtlineare Elemente, wenn sie gekoppelt sind, eine Übertragungsfunktion erzeugen können, die zu abrupt werden kann, was bedeutet, dass der Solver seinen Zeitschritt reduzieren muss, um sich an die zunehmend größeren Änderungen anzupassen, und er wird immer langsamer , bis es, wenn es nicht mehr geht, "Zeitschritt zu klein" hustet, oder ähnliches. Das gilt meiner Meinung nach für alle SPICE-Engines.

Eine Ursache (insbesondere für LTspice) ist die Verwendung von "steifen" Spannungsquellen, die eine (Maschinen-)Null-Ohm-Quelle haben und Konvergenzprobleme verursachen können. Die offizielle Hilfe besagt, dass es besser ist, Stromquellen zu verwenden, die mit geeigneten Widerständen abgeschlossen sind, da diese nicht nur schneller konvergieren, sondern auch kein Problem für die Schaltung darstellen. Warum erwähne ich das? Ob Sie es glauben oder nicht, kürzlich gab es einen Fall, in dem jemand einen einfachen Operationsverstärker wegen seiner Versorgungsquellen nicht simulieren konnte (das Modell war eine Blackbox, stimmt, also wer weiß, was im Inneren vor sich ging). Sobald er Rserdie Vorräte ergänzte, funktionierte alles! Sie wissen das wahrscheinlich, aber das Hinzufügen Rserzu einer Spannungsquelle veranlasst LTspice, diese intern in eine Stromquelle umzuwandeln.

Eine andere bekannte Lösung besteht darin, (kleine) Kondensatoren über störende Knoten hinzuzufügen, sodass die Ableitung um die scharfen Übergänge herum glatter wird, sodass der Solver darüber springen kann. Die Kapazität sollte klein genug sein, um keinen zusätzlichen ungewollten Pol s nachzuweisen , aber gleichzeitig groß genug, um sich auf die mögliche Diskontinuität auszuwirken. Typische Werte sind fF ~ pF. Eine andere Lösung könnte darin bestehen gmin, DC-Ströme hinzuzufügen, um zu helfen, auch mit Werten, die die Reaktion der ursprünglichen Schaltung nicht verzerren sollten, aber gleichzeitig helfen. Werte sind normalerweise mindestens GOhms, up.

Da eine Schaltung wie Ihre - wie Sie sagen - aus einer großen Mehrheit von Transistoren, also nichtlinearen Elementen, besteht, kann das Auffinden der "störenden Knoten" nach Möglichkeit umständlich sein, daher gibt es dafür die offizielle Option .opt cshuntund .opt gshunt, die laut Handbuch Kapazitäten und Leitwerte über alle Knoten hinzufügt. Ich sollte hinzufügen, dass diese Lösung mit Vorsicht verwendet werden sollte, da, selbst wenn es im wirklichen Leben überall Kapazitäten gibt, diese möglicherweise nicht überall gleich sind oder wichtige Werte haben, also mit Vorsicht verwenden. Beispielsweise .opt cshunt 1nkann das Hinzufügen alle Konvergenzprobleme auslöschen, aber Sie werden mit 1 nF-Kapazitäten über jeden Knoten gegen Erde belassen.

Nicht zuletzt können die Modelle/Teilschaltkreise selbst manchmal umständlich sein, da derjenige, der sie erstellt hat, keine so gute Arbeit geleistet hat, oder es kann in einem Simulator besser funktionieren als in einem anderen. Die Lösungen hier sind so umfangreich, dass sie zumindest eine weitere SE-Site verdienen.

Abgesehen von dem, was bereits gesagt wurde, kann ich derzeit nichts anderes sagen, also füge ich nur viel Glück hinzu, denn selbst wenn LTspice keine anderen Grenzen als Ihre Hardware hat (wie von @zebonaut bemerkt), ist es immer noch der Gnade von Hard- und Software ausgeliefert, insbesondere bei wachsender Schaltplankomplexität. Viel Glück.

Die großartige Antwort von Zebonaut betraf die Schaltungsaspekte, die sich auf die Simulation auswirken können. Ich werde ein paar Punkte zu den Aspekten der Softwareseite hinzufügen:

  • Versuchen Sie, die Genauigkeit zu erhöhen, die LTspice bei der Durchführung der Berechnungen verwendet. Standardmäßig wird einfache Genauigkeit verwendet. Wenn Sie die Direktive .options numdgt=12zum Schaltplan hinzufügen, wird doppelte Genauigkeit verwendet. Dies kann zur Konvergenz beitragen (und auf einigen Systemen kann es auch die Geschwindigkeit verbessern. Manchmal wird in der Hardware doppelte Genauigkeit besser gehandhabt als einfache Genauigkeit. YMMV.)

  • Verwenden Sie den Optionsdialog von LTspice und spielen Sie mit den Parametern der Simulationsmaschine auf der SPICERegisterkarte herum. Insbesondere können Sie den alternativen Solver verwenden, der langsamer ist, aber eine höhere interne Genauigkeit aufweist, was dazu führen kann, dass einige Simulationen konvergieren. Weitere Informationen finden Sie in der Hilfedatei.

  • Versuchen Sie, Ihren Schaltplan in einfachere Teile zu zerlegen und zu sehen, ob sie separat simuliert werden können. Manchmal ist ein kleiner Teil einer Schaltung schwer zu simulieren und verursacht Probleme, selbst wenn er in einem größeren Schaltplan enthalten ist. Wenn Sie einen solchen Schuldigen identifizieren, können Sie versuchen, das Problem leichter einzugrenzen, da Sie den kleineren Schaltkreis schneller simulieren könnten (das heißt nicht, dass alle Teilschaltkreise gut zusammenarbeiten, wenn sie isoliert arbeiten; manchmal Sie haben Pech!)

Beachten Sie, dass die Ausgabedaten des Signalplots als Zeitwertpaare exportiert werden können; Dadurch ist es möglich, separate Teilschaltkreise zu simulieren, die Daten zu exportieren und diese Ausgabe zu verwenden, um den nächsten Schaltkreis aus einer PWL-Datendatei anzusteuern.
@PeterSmith Ah! Ich kannte das Feature, aber ich habe nie daran gedacht, es für einen solchen Anwendungsfall zu verwenden. Ich dachte immer, dass die Exportfunktion für komplexe Datenanalysen mit externen Tools gedacht ist. Gut zu wissen, danke!