GrabDuck

Новости проекта Qucs: доступен кандидат в релизы с поддержкой моделирования схем в SPICE

:

Qucs — это симулятор электронных схем с открытым кодом. О нём рассказывают мои предыдущие статьи на хабре.

Сейчас наш проект готовится к следующему релизу 0.0.19, который выйдет в ближайшие недели. Данная заметка содержит обзор наиболее ожидаемого за все последние годы нововведения: поддержки моделирования схем Qucs в SPICE-совместимых симуляторов.

Qucs использует ядро моделирования Qucsator, разработанное с нуля. Это ядро имеет много преимуществ (моделирование S-параметров, расширенный постпроцесоор), но также имеет многочисленные баги, связанные с моделированием во временной области (Transient analysis). Эти баги в частности не позволяют моделировать в Qucs силовую электронику. Теперь в Qucs можно смоделировать, например такую схему:

Скачать пакеты для Linux и Windows с поддержкой Ngspice можно здесь:
github.com/ra3xdh/qucs/releases/tag/0.0.19S-rc1

UPD от 21.10.15: сейчас доступен RC3: github.com/ra3xdh/qucs/releases/tag/0.0.19S-rc3

Буква «S» в номере релиза означает SPICE. По-видимому вместе с релизом 0.0.19 выйдет два набора пакетов: с индексом «S» и с обычной нумерацией, так как дальнейшая судьба spice4qucs неясна.

Документация для spice4qucs находится здесь: qucs-help.readthedocs.org/en/spice4qucs

Под катом будет кратко рассмотрено использование spice4qucs.

Предыстория

В течение примерно 10 месяцев я и Mike Brinson (London Metropolitan University) занимались разработкой подсистемы spice4qucs, которая позволяет моделировать схемы Qucs с использованием внешних консольных симуляторов Ngspice qucs-help.readthedocs.org/en/spice4qucs и Xyce xyce.sandia.gov. Наибольший интерес представляет Ngspice, который является лучшим open-source симулятором схем, но не имеет графического интерфейса. С нашим набором патчей Qucs может служить интерфейсом для Ngspice.

Ход разработки можно отследить здесь:

github.com/Qucs/qucs/issues/226

github.com/Qucs/qucs/issues/77

github.com/Qucs/qucs/issues/181

Назначение spice4qucs

Spice4qucs представляет собой стройную систему костылей и подпорок набор патчей, который позволяет подключать внешние SPICE-совместимые симуляторы к Qucs. Исходный код находится в главном репозитории Qucs в ветке rebase_spice4qucs: github.com/Qucs/qucs/tree/rebase_spice4qucs Код получился достаточно насыщенный костылями, так как использование нетлиста отличного от SPICE в дефолтном симуляторе Qucs было изначально вредной идеей. Это могло только породить костыли.

Итак, spice4qucs выполняет следующие функции:

  • Преобразует схему Qucs в SPICE-netlist
  • Запускает сторонний симулятор
  • Преобразует вывод от симулятора в XML-формат данных Qucs

Примеры схем, которые могут быть смоделированы в SPICE находятся в каталоге $QUCSDIR/share/qucs/doc/examples/ngspice Где $QUCSDIR — это корень установки Qucs, например /usr или C:/Program Files/Qucs.

Установка

В дистрибутивы Linux данный пакет пока не входит, поэтому нужно всё откомпилировать вручную:

tar xvfz qucs-0.0.19-S1.tar.gz
cd qucs-0.0.19-S1
./configure --prefix=/path_to_install/
make -jчисло_процессоров
make install

Должен быть установлен Qt4 для разработчиков и GCC.

Рекомендуется использовать configure c ключом --prefix, чтобы не повредить системную установку Qucs, а поставить его куда-либо в отдельный каталог, напрмер в /opt. Вместо make install лучше использовать checkinstall, который соберёт пакет под ваш дистрибутив.

Установка для Windows проста. Нужно запустить инсталлятор, выбрать путь для установки и нажать Next->Next->Finish.

Также нужно установить Ngspice. В сборки он не входит и его нужно ставить отдельно. В Linux такой пакет уже есть и его можно установить при помощи пакетного менеджера, например:

apt-get install ngspice

Использование

Рассмотрим использование. Предполагается, что читатель уже раньше работал с Qucs и знает как моделировать в нём схемы. Наибольший интерес для практики представляет Ngspice. По использованию Xyce — читайте нашу документацию (ссылка до ката).

В качестве примера смоделируем колебательный контур. Посмотрим АЧХ в диапазоне частот от 1 до 10 Мгц (AC analysis) и отклик колебательного контура на синусоидальное воздействие частотой 7,5 МГц и амплитудой 0,6 В. (Transient analysis).

Сначала собираем следующую схему. Сохраняем схему как RCL.sch Эту схему можно промоделировать в Qucs, нажав Simulation->Simulate (F2) и убедиться, что всё работает.

Теперь смоделируем схему в Ngspice. Нажимаем Simulation->Simulate with Spice. Открывается диалоговое окно.

В раскрывающемся списке (1) можно выбрать симулятор. Выбираем Ngspice. Если симулятор установлен в нестандартном месте, то нужно задать путь к исполняемому файлу симулятора. Для этого следует нажать Settings и перейти в следующее диалоговое окно:

Этот шаг обязателен для Windows. Нужно указать в верхнем поле (Ngspice executable location) путь к файлу ngspice.exe. Для Linux как правило подходит путь по умолчанию. Теперь возвращаемся в предыдущий диалог и нажимаем Simulate. В диалоговом окне видим, что моделирование прошло успешно:

Также можно экспортировать схему в Spice-netlist, нажав копку Save Netlist. Вот так выглядит нетлист для нашей схемы:

* Qucs 0.0.19  /home/vvk/qucs/examples/ngspice/RCL.sch
V1 _net0 0 DC 0 SIN(0 0.6 7.5MEG 0 0) AC 0.6
VPr1 _net0 vIn DC 0 AC 0
L1 vIn _net1  10U 
R1 0 vR  30
C1 _net1 vR  40P 
.control
set filetype=ascii
AC LIN 1000 1MEG 10MEG 
write RCL_ac.txt VPr1#branch v(vIn) v(vR) 
destroy all
TRAN 4.97512e-09 1e-06 0 
write RCL_tran.txt VPr1#branch v(vIn) v(vR) 
destroy all
exit
.endc
.END

Нажимаем Exit, переходим на страницу просмотра и строим диаграмму. Размещаем декартовскую диаграмму. Открывается диалог свойств диаграммы.

В выпадающем списке (1) выбираем RCL, в выпадающем списке (2) выбираем Ngspice. Потом выбираем переменные, графики которых нужно построить (двойным щелчком мыши). Они переходят в список в правой части окна (показано стрелкой). Всё, моделирование завершено, получаем АЧХ (ток виртуального датчика тока — ac.i(pr1)) и осциллограммы напряжения (tran.v(vIn), tran.v(vR) ). Их нужно построить на разных графиках.

Обратите внимание, что имена узлов схемы имеют форму записи, принятую в SPICE. Префикс указывает тип моделирование (tran. или ac.) и симулятор (ngspice/).

Возможности

  • Большинство комопонентов Qucs совместимо со SPICE. Поддерживаются подсхемы, библиотечные компоненты. О несовместимых компонентах во время моделирования выдаётся сообщение об ошибке: These components are SPICE-incompatible… Система уравнений (Equations) Qucs частично совместима со SPICE. Об ограничениях читать документацию.
  • Добавлены виды моделирования совместимые со SPICE: .FOURIER, .NOISE и .DISTORTION Моделирование S-параметров не работает со spice4qucs.
  • Spice4qucs позволяет моделировать схемы, недоступные дефолтному симулятору
    Qucsator. Прежде всего это силовая электроника, ключевые схемы, схемы на полупроводниковых приборах, работающих с заходом в режим отсечки, и схемы с большим количеством компонентов. Например вот так можно смоделировать высококачественный усилитель звука на транзисторах:

  • Добавлено множество SPICE-совместимых компонентов и видов моделирования. Они расположены в группах: Spice components, Spice sections, и Spice simulations. Подробнее о них написано в документации. Все эти компоненты не будут работать с дефолтным симулятором Qucsator. Они реализуют задание параметров, начальных условий и команды построцессора в стиле Ngspice. Также добавлены модели полупроводниковых компонентов с полным описанием модели в формате SPICE. Это позволяет просто копировать модель из существующих библиотек, минуя конвертеры. Вот пример схемы с такой моделью:

  • В библиотеки теперь разрешено включение SPICE-нетлиста. Он напрямую передаётся SPICE-совместимому симулятору, минуя конвертации. Пример такой библиотеки здесь: github.com/ra3xdh/qucs-rus-complib/blob/master/Opamp.lib

Дальнейшие перспективы

Дальнейшая судьба проекта spice4qucs неясна. Вместе с релизом 0.0.19 выйдет два комплекта пакетов — с поддержкой spice4qucs и без неё. Вопрос о включении данного набора патчей в upstream остаётся открытым.

В дальнейшем будут добавляться новые компоненты и виды моделирования, в частности цифроаналоговые модели. Можно будет назначать каждой схеме дефолтный симулятор: Ngpsice, Qucsator или Xyce и выполнять моделирование, используя системный диалог (F2).

Возможно осенью я начну параллельно разработку собственного открытого проекта, базирующегося на исходных кодах Qucs и spice4qucs и нацеленного на глубокую интеграцию со SPICE и моделирование аналоговой электроники. Дефолтный симулятор Qucsator будет выпилен и заменён на Ngspice и будет обеспечена совместимость с библиотекам SPICE, реализованы компоненты полностью совместимые со SPICE и т.п.

Мои предыдущие публикации по Qucs: