Qucs‑S является программой с открытым исходным кодом для моделирования электронных схем. Qucs‑S кроссплатформенный (поддерживаются Linux и Windows) и написан на С++ с использованием набора библиотек Qt. Для работы Qucs рекомендуется использовать также открытый движок моделирования Ngspice. Первый релиз Qucs, на котором основан Qucs‑S, состоялся в 2003 году. В декабре этого года программе исполняется 20 лет. Актуальным релизом Qucs‑S на текущий момент является версия 2.1.0. Далее будет рассказано о функциях, добавленных в релизах, вышедших в этом году.
Тюнер элементов
Тюнер был добавлен в версии 2.1.0. Данный режим симуляции позволяет производить подстройку компонентов при помощи ползунков в специальном окне и сразу видеть результат на графиках. Тюнер в ряде случаев может быть удобнее, чем параметрический анализ. Чтобы запустить тюнер следует выбрать в главном меню Simulation→Tune или нажать кнопку на панели инструментов. Предварительно в схеме должны быть заданы симуляции. Если ни того, ни другого нет, то будет выдано предупреждение. Открывается пустое диалоговое окно. Затем требуется выбрать компоненты, которые нужно подстроить, щёлкнув по ним мышью. Можно также добавлять в диалог и свойства компонентов. Теперь в диалоговом окне появятся ползунки. Можно двигать их мышью и на графиках смотреть результат. Данный процесс иллюстрирует анимированный GIF. Схема представляет собой полосовой фильтр на любительский КВ диапазон 7 МГц.
Быстрое переключение движков моделирования
Особенностью Qucs‑S является то, что этот симулятор позволяет выбирать между несколькими движками моделирования. Движком по умолчанию начиная с версии 0.0.23 предлагается Ngspice, который лучше всего подходит для моделирования любых электронных схем. Всего в Qucs‑S доступно три движка моделирования:
Ngspice, упомянутый ранее https://ngspice.sourceforge.io/
Qucsator https://github.com/qucs/qucsator
Наибольший интерес из них представляет Qucsator, который был движком по умолчанию в старом Qucs. Он содержит расширенный набор компонентов для анализа СВЧ устройств, таких как модели волноводов и микрополосковых линий. Реализовать данные компоненты в SPICE проблематично. Но Qucsator имел проблемы с моделированием во временной области особенно при импульсных сигналов и не совместим со SPICE по синтаксису нетлиста, поэтому в Qucs‑S я от него отказался и перешёл на Ngspice по умолчанию. Но оказалось, что полностью списывать Qucsator в утиль пока рано.
К сожалению, разработчик, который сейчас занимается Qucsator, не развивает этот уникальный симулятор и не собирает бинарные пакеты. Для Linux придётся собирать Qucsator из исходников. От Qt он не зависит. Для Windows можно добыть Qucsator из версии Qucs-0.0.19. Если нужна последняя версия 0.0.20, то опять же придётся собирать из исходников.
В настоящее время имеются планы вернуть Qucsator в состав Qucs‑S в качестве особого движка моделирования для анализа ВЧ схем. Подробнее можно прочитать здесь: https://github.com/ra3xdh/qucsator_rf/issues/1
В Qucs‑S начиная с версии 2.0.0 можно переключаться между движками моделирования на ходу без перезагрузки программы. Для этого рядом с кнопкой запуска симуляции на панели инструментов добавлен выпадающий список, из которого можно выбрать симулятор. При этом компоненты на левой панели будут автоматически перезагружены, и остаются только совместимые с выбранный движком. Несовместимые компоненты также помечаются в самой схеме. Процесс иллюстрирует анимированный GIF:
Цифровое моделирование при помощи IcarusVerilog
Начиная с версии 1.1.0 Qucs‑S поддерживает два режима цифрового моделирования:
Моделирование цифровых компонентов в аналоговом режиме. Возможно для ограниченного круга компонентов, таких как логические элементы и триггеры. Можно комбинировать цифровые и аналоговые компоненты в одной схеме.
Моделирование чисто цифровой схемы при помощи IcarusVerilog https://sourceforge.net/projects/iverilog/ При этом аналоговые компоненты в схеме не допускаются.
Пример моделирования генератора на логических элементах с делителем частоты в аналоговом режиме показан на скриншоте.
Пример цифрового моделирования схемы с демультиплексором с движком Icarus Verilog показан ниже. Icarus Verilog должен быть установлен в системе и доступен через $PATH. Цифровое моделирование запускается автоматически, если на схему добавлен компонент Digital simulation.
Поддержка моделей Verilog-A при помощи компилятора OpenVAF
Verilog‑A — это язык описания аналоговых моделей. При этом возможно добавить в симулятор собственные модели компонентов без перекомпиляции всего симулятора. Чтобы использовать модели Verilog‑A нужна специальная программа‑компилятор, которая формирует двоичный подгужаемый модуль. Старый Qucs использовал для поддержки моделей Verilog‑A компилятор ADMS. В 2022 году был разработан новый компилятор OpenVAF https://openvaf.semimod.de/ , который совместим с Ngspice. Поддержка OpenVAF добавлена в Qucs‑S начиная с версии 1.0.1. Процедура добавления моделей Verilog‑A точно такая же, как и для старого Qucs. Путь к компилятору должен быть указана в настройках программы в диалоге File→Application Settings на вкладке Locations. Описание можно найти в данной презентации https://www.mos‑ak.org/venice_2014/publications/T_4_Brinson_MOS‑AK_Venice_2014.pdf На скриншоте можно видеть пример компонента, заданного в виде модели Verilog‑A:
Расширена библиотека компонентов
В недавних релизах добавлено много новых библиотек компонентов, в том числе с тиристорами и оптопарами. Добавлена библиотека BJT Extended с дополнительными моделями транзисторов. На скриншоте можно видеть пример моделирования тиристорного регулятора мощности с компонентами из новой библиотеки.
В релизе 0.0.24 добавлена библиотека Crystal, которая содержит модель кварцевого резонатора, которая специально адаптирована для моделирования радиолюбительских кварцевых фильтров. На скриншоте пример моделирования QER фильтра для КВ трансивера.
Новые системные компоненты
Добавлены новые системные компоненты. Наибольший интерес представляют катушки и конденсаторы с добротностью (INDQ и CAPQ), а также файловый компонент для файлов s2p. На скриншоте пример параметрического анализа зависимости коэффициента усиления реверсивного усилителя на 8 МГц от добротности катушки в резонансном контуре. Подобная схема используется для построения трактов ПЧ в радиолюбительских трансиверах.
Векторные иконки
В релизе 2.1.0 переделаны все иконки. Растровые иконки 22×22 больше не используются. Теперь для панелей инструментов используются вектроные SVG иконки, а иконки для компонентов генерируются автоматически. Данное новшество улучшает внешний вид программы на HiDPI мониторах. Примеры можно видеть на всех скриншотах в данной статье.
Инженерная нотация на диаграммах
Числа на всех диаграммах теперь можно переключить в инженерную нотацию (будет отображаться 1k вместо 1e3 или 2.1u вместо 2.1e-6). Данный настройки доступны в диалоге свойств диаграммы (выпадающий список Number notation).
Ресурсы по Qucs-S:
Сайт проекта: https://ra3xdh.github.io/
Сайт Ngspice: https://ngspice.sourceforge.io/
Репозиторий исходных кодов: https://github.com/ra3xdh/qucs_s
Актуальный релиз: https://github.com/ra3xdh/qucs_s/releases/tag/2.1.0
Страница на Boosty, где можно поддержать проект финансово: https://boosty.to/qucs_s
Предыдущие статьи по Qucs-S:
Введение в программу https://habr.com/ru/articles/678526/
Моделирование высокочастотных схем https://habr.com/ru/articles/735508/
Комментарии (17)
aax
05.12.2023 16:23Классно, что Qucs-S развивается. Еще в этой версии адекватно поддерживаются HiDPI дисплеи(что норма для разработчика РЭА).
Из замеченных проблем: ngspice выше 36-й чаще всего не работает со spice моделями компонентов предоставляемых их разработчиками - симуляция завершается сообщением от ngspice "Note: No compatibility mode selected!"(в KiCAD 7-й версии для этого появилась дополнительная настройка для использования библиотек Pspice/LTspice).
Из пожеланий: в свойствах графиков по умолчанию установить "инженерный режим". Люди имеющие дело с разработкой РЭА, на которых программа Qucs-S и ориентирована, в отличии например от чистых математиков, применяют расчеты с размерностями физических величин.
Еще очень не хватает редактора символов для создания компонетов со сторонними билиотеками - использование голого компонента SpiceLibComp с выводами промаркированными внутренними обозначениями Net-листа spice-моделей от разработчиков компонетов, и/или всего нескольких типовых вариантов графического обозначения компонета в реальной работе малоприменимо, а делать дополнительную иерархическую подсхему, чтобы решить проблему адекватности условного графического обозначения компонентов со стронними spice-моделями - тот еще костыль.
vv_kuznetsov Автор
05.12.2023 16:23симуляция завершается сообщением от ngspice "Note: No compatibility mode selected!"
Само по себе это сообщение не является ошибкой. Оно только извещает, что режим совместимости не выставлен. Определить, что данному компоненту требуется режим совместимости Ngspice не может. Проблема со схемой в чём-то ещё. Если используется самосборный Ngspice, то он может быть неправильно собран. Просьба написать багрепорт со схемой, которая работает в Ngspice-36 и не работает в Ngspice-37.
Режим совместимости можно выставить при помощи spiceinit https://github.com/ra3xdh/qucs_s/issues/25
в свойствах графиков по умолчанию установить "инженерный режим"
Да, рассматриваю, чтобы переключить на engineering notation по дефолту со следующего релиза.
Еще очень не хватает редактора символов для создания компонетов со сторонними билиотеками
Этот функционал не доделан, хотя планы на расширение есть https://github.com/ra3xdh/qucs_s/issues/147 Сейчас рекомендуется вместо SpiceLibComp использовать SpiceFile и оборачивать его в подсхему. Для подсхемы редактор УГО вызывается по F9
aax
05.12.2023 16:231). В до конца недели напишу багрепорт со схемой, которая работает в Ngspice-36 и не работает в Ngspice-40.
2). "Compatibility mode Pspice/LTspice" для моделей от разработчиков элементной базы, в KiCAD 7-й версии задается, до симуляции, в параметрах моделирования KiCAD, а не детектируется внутри Ngspice.
aax
05.12.2023 16:23С редактором подсхемы все понятно, но для создания элемента костыльно, ибо есть так сказать обычные библиотечные элементы Qucs-S, а есть подсхемы. С точки зрения работы с программой это заметно разное, подсхему нужно добавлять в директорию проекта, а библиотечный компонент просто добавляется в библиотеку.
vv_kuznetsov Автор
05.12.2023 16:23+1Про то, как сделать свои библиотеки, скоро напишу статью. Может быть прояснит некоторые вопросы.
aax
05.12.2023 16:23+1Багрепорт отправил письмом на мейл с домашней странички программы, посмотрите. Первый раз мог попасть в спам.
UPD: паранойя Гугла отклонила письмо с архивом(This message was blocked because its content presents a potential 552-5.7.0 security issue). По хорошему для багрепортов от не имющих гитхаб-аккунта нужна более надежная почта.
vv_kuznetsov Автор
05.12.2023 16:23Багрепорт отправил письмом на мейл
Информация в чём было дело: использовался самосборный Ngspice и при сборке не была включена поддержка XSPICE расширений. Поэтому модели не работали. При сборке Ngspice вручную нужно задавать опцию --enable-xspice для configure
для багрепортов от не имющих гитхаб-аккунта нужна более надежная почта
Где бы такую найти. По-моему сейчас все бесплатные почтовые сервисы режут нестандартные вложения.
aax
05.12.2023 16:23Из российских бесплатных почтовых сервисов излишней паранойи пока не замечал за Рамблером.
RV3EFE
05.12.2023 16:23+1Вот это вообще классно. Тюнинга такого не хватало. Всё более становится похоже на ads!
vv_kuznetsov Автор
05.12.2023 16:23+1С ADS я раньше никогда не работал и особо не интересовался как он выглядит. Сейчас нашёл скриншоты и понял откуда разработчики оригинального Qucs взяли концепцию интерфейса.
checkpoint
05.12.2023 16:23+2Большое спасибо за Qucs-S. Радует, что в репозитории FreeBSD (в packages) всегда доступна самая свежая версия.
quaer
05.12.2023 16:23У вас есть оптимизация номиналов для получения указанных параметров схемы? Если нет, планируете ли делать? Алгоритмы интересуют :)
vv_kuznetsov Автор
05.12.2023 16:23Ngspice поддерживает ASCO https://asco.sourceforge.net/ , при помощи которого реализуется оптимизация. Со стороны Qucs-S нужно добавить оптимизацию в графический интерфейс. Пока интерфейс для связки Ngspice+ASCO не реализована. В будущем планирую сделать, но не могу сказать когда точно. Сейчас сделать оптимизацию можно только экспортировав нетлист и запустив ASCO из командной строки. Для Qucsator оптимизация должна работать, для этого имеется специальный вид моделирования.
quaer
05.12.2023 16:23А можете коротко рассказать, что может и каким образом ему скармливаются данные? Вот скажем есть схема фильтра, надо подогнать АЧХ, которая съехала из-за GBW ОУ или паразитиков. Или надо подогнать схему согласования импедансов имея s-параметры источника и нагрузки в заданном диапазоне.
vv_kuznetsov Автор
05.12.2023 16:23С ASCO надо самому разбираться. Пока использовать его не было необходимости. Знаю, что для него нужно сформировать нетлист особого вида, где указываются входные и выходные параметры для оптимизации. Далее оно выдаёт результат. Как работает алгоритм не могу точно сказать.
AlexAV1000
Как оно, по сравнению с бесплатным теперь MicroCap?
vv_kuznetsov Автор
Бесплатный MicroCAP не просто так стал бесплатным. SpectrumSoft обанкротился, и программа стала abandonware. По этой причине из официального источника MicroCAP не скачать, так как у SpectrumSoft просрочен домен. MicroCAP к тому же только под Windows. В отличие от MicroCAP Qucs-S живое и кроссплатформенное. Моделирования S-параметров в MC нет и не будет, так как проект более не поддерживается. Моделирования МПЛ нет. Использовать в MicroCAP например модели от Google SkywaterPDK проблематично.