Limitación del cálculo de espacio: ¿Qué condiciones lo afectan?

2

Estoy intentando simular un circuito de nivel de transistor en LtSpice. Hay más de 200 transistores en el diseño y algunos opamps. Principalmente estructuras lógicas.

El problema es que LtSpice no puede resolver las ecuaciones después de un tiempo (como 100 us). El uso de la CPU llega al 100%. Pero aquí hay algo extraño: si pongo (un poco grande) condensadores en cada salida de cada estructura, LtSpice puede resolver el circuito a tiempo completo (aún muy lentamente con un uso de CPU del 100%, pero al final llega al menos). Así que aquí está la cosa: no puedo poner grandes condensadores en cada salida. Debido a algunas consideraciones de eficiencia, ¡no puedo!

Entonces, ¿puedes ayudarme con esto? No tengo una súper computadora y necesito hacer esta simulación. ¿Hay alguna solución para que LtSpice esté en un punto muerto? Gracias.

    
pregunta Alper91

3 respuestas

7

LTspice no tiene un límite en el número de componentes o nodos.

El problema es probable, no el número de componentes o el tamaño general del esquema yor, pero es posible que tenga que hacer frente a algunos números de referencia que dificultan la solución de su circuito.

Si tiene condensadores, intente agregar una ESR pequeña editando las propiedades del componente. Si tiene inductores, agregar una resistencia de CC (cobre) es aún más importante.

Además, los diodos ideales o los transistores ideales no se resolverán bien algunas veces. Intente usar modelos de componentes reales (por ejemplo, 1N4148 en lugar del diodo genérico sin etiqueta). Tal vez sus modelos de lógica u opamp interactúan de formas extrañas con su vecindario.

También es posible que algo en tu esquema intente oscilar a una frecuencia muy alta cuando, en realidad, no lo haría. (¿3 GHz alrededor de una frecuencia de audio BJT? ¡De ninguna manera!) Tal comportamiento a menudo es causado por una resonancia no deseada de parásitos demasiado ideales o tanques de L / C. Intente localizar la causa raíz de estas posibles oscilaciones y agregue algunos resistores adicionales aquí y allá. Tan malo como varias oscilaciones son picos muy, muy empinados. ¿Ves algunos rastros que van al rango de kA o kV cuando todo lo que tienes es un pequeño circuito de pequeña señal?

    
respondido por el zebonaut
5

No soy tan bueno con las explicaciones, pero lo intentaré.

Mike, el creador de LTspice, hizo grandes esfuerzos para asegurarse de que el solucionador no encuentre cambios bruscos que puedan plantear problemas. Esto significa que incluso el diodo ideal, cuando se simula, mostrará un pequeño redondeo alrededor de la rodilla. Agregue suficientes puntos y se volverá más nítido, pero amplíe y obtendrá un pequeño redondeo. Esto es cierto para (como lo sé) todos los elementos no lineales.

Sin embargo, hay casos en que dos o más elementos no lineales, cuando están acoplados, pueden producir una función de transferencia que puede ser demasiado abrupta, lo que significa que el solucionador debe reducir su tiempo para adaptarse a los cambios cada vez mayores, y se obtiene Más lento y más lento, hasta que, si ya no puede seguir, tose "Tiempo demasiado pequeño", o similar. Esto es cierto para todos los motores SPICE, creo.

Una causa (para LTspice, en particular), es el uso de fuentes de voltaje "rígido", que tienen una fuente (ohmios) de cero ohmios y pueden causar problemas de convergencia. La ayuda oficial indica que es mejor usar fuentes de corriente terminadas en resistencias apropiadas, ya que estas no solo convergerán más rápido, sino que no serán un problema para el circuito. ¿Por qué menciono esto? Créalo o no, recientemente ha habido un caso en el que alguien no pudo simular un simple amplificador operacional debido a sus fuentes de suministro (el modelo era una caja negra, es cierto, así que quién sabe qué sucedió dentro). Tan pronto como agregó Rser a los suministros, ¡todo funcionó! Probablemente lo sepa, pero agregar Rser a una fuente de voltaje hace que LTspice lo convierta, internamente, a una fuente actual.

Otra solución conocida es agregar (pequeños) condensadores a través de nodos ofensivos, de modo que la derivada alrededor de las transiciones bruscas se vuelva más suave, lo que permite al solucionador saltar sobre ella. La capacitancia debe ser lo suficientemente pequeña como para no demostrar un polo no deseado adicional s , pero al mismo tiempo lo suficientemente grande como para que tenga un efecto en la posible discontinuidad. Los valores típicos son fF ~ pF. Otra solución podría ser agregar gmin para ayudar a las corrientes de CC, también con valores que no deben distorsionar la respuesta del circuito original, pero, al mismo tiempo, ayuda. Los valores suelen ser al menos GOhms, arriba.

Dado que un circuito como el suyo, como usted dice, está compuesto por una gran mayoría de transistores, por lo tanto elementos no lineales, encontrar el "nodo (s) ofensivo" puede ser engorroso, si es posible, así que para esto hay la opción oficial .opt cshunt y .opt gshunt , que, según el manual, agrega capacitancias y conductancias en todos los nodos. Debo agregar que esta solución debe usarse con cuidado, ya que, incluso si en la vida real hay capacitancias en todas partes, es posible que no sean las mismas en todas partes o que tengan valores importantes, así que úselo con cuidado. Por ejemplo, agregar .opt cshunt 1n puede eliminar cualquier problema de convergencia, pero se le dejará con capacidades de 1nF a través de cada nodo, a tierra.

No menos importante, los modelos / subcircuitos, en sí mismos, a veces pueden ser engorrosos, ya que quien los hizo no hizo un trabajo tan bueno, o puede funcionar mejor en un simulador que en otro. Las soluciones, aquí, son tan vastas que merecen otro sitio SE, al menos.

Además de lo que ya se ha dicho, no puedo encontrar, actualmente, algo más que decir, así que solo añadiré buena suerte, ya que, aunque LTspice no tenga otros límites que su hardware (como lo señala @zebonaut) ), todavía está a la merced del hardware y el software, especialmente con la creciente complejidad de los esquemas. Buena suerte.

    
respondido por el a concerned citizen
3

La gran respuesta de Zebonaut fue sobre los aspectos circulatorios que pueden afectar la simulación. Agregaré un par de puntos sobre los aspectos secundarios del software:

  • Intente aumentar la precisión que usa LTspice al realizar los cálculos. Por defecto usa una sola precisión. Si agrega la directiva .options numdgt=12 en el esquema, usará doble precisión. Esto puede ayudar a la convergencia (y en algunos sistemas también puede mejorar la velocidad. A veces, en el hardware, la precisión doble se maneja mejor que la precisión simple. YMMV.)

  • Use el diálogo de opciones de LTspice y juegue con los parámetros del motor de simulación en la pestaña SPICE . En particular, puede utilizar el solucionador alternativo, que es más lento pero tiene mayor precisión interna, lo que podría hacer que algunas simulaciones converjan. Consulte el archivo de ayuda para obtener más información.

  • Intente desglosar su esquema en partes más simples y vea si se pueden simular por separado. A veces, una pequeña parte de un circuito es difícil de simular y causa problemas incluso cuando se incluye en un esquema más grande. Si identifica a un culpable, puede tratar de reducir el problema más fácilmente, ya que podría simular el circuito más pequeño más rápido (eso no quiere decir que si todos los circuitos secundarios funcionan de forma aislada, funcionarán bien juntos; a veces tienen mala suerte!)

respondido por el Lorenzo Donati

Lea otras preguntas en las etiquetas