Ограничение вычислений LtSpice: какие условия на него влияют?

Я пытаюсь смоделировать схему уровня транзистора в LtSpice. В конструкции более 200 транзисторов и несколько операционных усилителей. Преимущественно логические структуры.

Проблема в том, что LtSpice не может решить уравнения через некоторое время (например, 100 нас). Загрузка процессора достигает 100%. Но вот что странно, если я поставлю (немного большие) конденсаторы на каждый выход каждой структуры, LtSpice сможет полностью решить схему (все еще очень медленно при 100% загрузке ЦП, но по крайней мере доходит до конца). Так вот в чем дело: я не могу поставить большие конденсаторы на каждый выход. Из соображений эффективности я не могу!

Итак, вы можете помочь мне с этим? У меня нет суперкомпьютера, и мне нужно сделать эту симуляцию. Есть ли какие-либо решения для LtSpice, находящегося в тупике? Спасибо.

Попробуйте это: groups.yahoo.com/group/LTspice

Ответы (3)

LTspice не имеет ограничений на количество компонентов или узлов.

Скорее всего, проблема заключается не в количестве компонентов или общем размере вашей схемы, а в том, что вы можете столкнуться с некоторыми «нет-нет», которые затрудняют решение вашей схемы.

Если у вас есть конденсаторы, попробуйте добавить небольшое ESR, отредактировав свойства компонента. Если у вас есть катушки индуктивности, добавление сопротивления постоянному току (медь) еще более важно.

Кроме того, идеальные диоды или идеальные транзисторы иногда не подходят. Попробуйте использовать модели реальных компонентов (например, 1N4148 вместо обычного немаркированного диода). Возможно, ваша логика или модели операционных усилителей странным образом взаимодействуют со своим окружением.

Также возможно, что что-то в вашей схеме пытается колебаться на какой-то очень высокой частоте, хотя на самом деле это не так. (3 ГГц вокруг звуковой частоты BJT? Ни в коем случае!) Такое поведение часто вызвано нежелательным резонансом слишком идеальных паразитов или баков L/C. Попробуйте найти основную причину этих возможных колебаний и добавьте несколько дополнительных резисторов здесь и там. Очень и очень крутые всплески так же плохи, как и сильные колебания. Видите ли вы какие-то дорожки, идущие к диапазону кА или кВ, когда все, что у вас есть, это небольшая схема со слабым сигналом?

Я не силен в объяснениях, но попробую.

Майк, создатель LTspice, приложил немало усилий, чтобы гарантировать, что решатель не столкнется с внезапными изменениями, которые могут создать проблемы. Это означает, что даже идеальный диод при моделировании покажет небольшое закругление в районе колена. Добавьте достаточное количество точек, и изображение станет более четким, но при увеличении масштаба вы все равно получите небольшое округление. Это верно (насколько мне известно) для всех нелинейных элементов.

Однако бывают случаи, когда два или более нелинейных элемента при соединении могут создавать передаточную функцию, которая может стать слишком резкой, что означает, что решателю необходимо уменьшить свой временной шаг, чтобы приспособиться к все более значительным изменениям, и он становится все медленнее и медленнее. , пока, если он больше не может работать, он не кашляет «Шаг по времени слишком мал» или что-то подобное. Думаю, это справедливо для всех двигателей SPICE.

Одной из причин (в частности, для LTspice) является использование «жестких» источников напряжения, которые имеют (машинный) источник с нулевым сопротивлением и могут вызывать проблемы сходимости. В официальной справке указано, что лучше использовать источники тока с соответствующими резисторами, так как они не только будут быстрее сходиться, но и не будут проблемой для схемы. Почему я упоминаю об этом? Хотите верьте, хотите нет, но недавно был случай, когда кто-то не смог смоделировать простой операционный усилитель из-за его источников питания (модель была, правда, черным ящиком, так что кто знает, что творилось внутри). Как только добавил Rserв поставки, все заработало! Вы, наверное, знаете это, но добавление Rserк источнику напряжения заставляет LTspice внутренне преобразовывать его в источник тока.

Другим известным решением является добавление (небольших) конденсаторов к проблемным узлам, так что производная вокруг резких переходов становится более плавной, что позволяет решателю перепрыгивать через нее. Емкость должна быть достаточно малой, чтобы не возникало дополнительных нежелательных полюсов s , но в то же время достаточно большой, чтобы влиять на возможный разрыв. Типичные значения: fF ~ pF. Другим решением может быть добавление gminв помощь постоянных токов, также со значениями, которые не должны искажать реакцию исходной схемы, но, в то же время, помогать. Значения обычно не менее ГОм и выше.

Поскольку схема, подобная вашей, - как вы говорите - состоит из подавляющего большинства транзисторов, то есть нелинейных элементов, поиск «нарушающих узлов» может быть обременительным, если это вообще возможно, поэтому для этого есть официальный вариант .opt cshuntи .opt gshunt, что, согласно руководству, добавляет емкости и проводимости во всех узлах. Я должен добавить, что это решение следует использовать с осторожностью, так как, даже если в реальной жизни емкости есть везде, они могут не везде быть одинаковыми или иметь значения, которые имеют значение, поэтому используйте их с осторожностью. Например, добавление .opt cshunt 1nможет устранить любые проблемы сходимости, но у вас останется емкость 1 нФ на каждом узле относительно земли.

Не в последнюю очередь сами модели/подсхемы иногда могут быть громоздкими, поскольку тот, кто их сделал, не проделал такой большой работы, или они могут работать лучше в одном симуляторе, чем в другом. Решения здесь настолько обширны, что заслуживают, по крайней мере, еще одного сайта SE.

Помимо того, что уже было сказано, в настоящее время я не могу найти, что еще сказать, поэтому я просто добавлю удачи, поскольку, даже если у LTspice нет ограничений, кроме вашего оборудования (как заметил @zebonaut), это по-прежнему зависит от аппаратного и программного обеспечения, особенно при возрастающей сложности схемы. Удачи.

Отличный ответ Zebonaut касался схемных аспектов, которые могут повлиять на симуляцию. Добавлю пару моментов по аспектам программной стороны:

  • Попробуйте увеличить точность, которую LTspice использует при выполнении вычислений. По умолчанию используется одинарная точность. Если вы добавите директиву .options numdgt=12на схему, она будет использовать двойную точность. Это может помочь конвергенции (а в некоторых системах может также повысить скорость. Иногда в аппаратном обеспечении двойная точность обрабатывается лучше, чем одинарная точность. YMMV.)

  • Используйте диалоговое окно параметров LTspice и поиграйте с параметрами механизма моделирования на SPICEвкладке. В частности, вы можете использовать альтернативный решатель, который работает медленнее, но имеет более высокую внутреннюю точность, что может привести к схождению некоторых симуляций. Дополнительную информацию см. в файле справки.

  • Попробуйте разбить схему на более простые части и посмотреть, можно ли их смоделировать отдельно. Иногда небольшую часть схемы трудно смоделировать, и она вызывает проблемы, даже если она включена в большую схему. Если вы обнаружите такого виновника, вы можете попытаться сузить круг проблемы, так как вы сможете быстрее смоделировать меньшую схему (это не значит, что если все подсхемы работают изолированно, они будут хорошо работать вместе; иногда вы не повезло!)

Обратите внимание, что выходные данные графика сигнала можно экспортировать как пары значений времени; это позволяет моделировать отдельные подсхемы, экспортировать данные и использовать эти выходные данные для управления следующей схемой из файла данных PWL.
@PeterSmith А! Я знал об этой функции, но никогда не думал использовать ее для такого случая использования. Я всегда думал, что средство экспорта предназначено для комплексного анализа данных с использованием внешних инструментов. Полезно знать, спасибо!