Новости проекта 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:



    • Qucs — open-source САПР для моделирования электронных схем habrahabr.ru/post/248005
    • Новости проекта Qucs: подготовка к релизу 0.0.19 habrahabr.ru/post/259193
    • Мои методички по Qucs: github.com/ra3xdh/RTUiS-labs (Начиная с л.р. №4 PDF+LaTeX, распространение запрещено! )
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 11

      +1
      Qucs 0.0.15 виснет на модели простейшего усилка на ОУ. Хотел попробовать, пришлось и дальше использовать ltspice.
      Попробуем еще раз с новым моделированием в spice!
        –1
        Хотя, прочитав пост полностью, буду и даальше использовать ltspice. Если запилите qucs с полной интеграцией spice, вот тогда буду пользовать ваш продукт. Изначально не понимал зачем городить qucs с самостоятельной системой моделирования, если действительно нужная штука это удобный гуй к spice под линем.

        Кстати, может подскажете, есть ли удобный гуй под линем для spice? Может я просто не знаю.
          0
          Есть KJwaves, но он на Java. Так что это изделие на любителя. Я его не использовал. Попробуйте его, может быть понравится.

          Ещё gschem умеет экспортировать схему в spice-netlist.
          0
          Да, теперь ОУ работают вместе с Qucs. Нужно использовать не ОУ из стандартной библиотеки (т.к. они прошли двойную конвертацию Spice->Qucs->Spice), а применять специальный компонент «Схема SPICE» (находится в группе «Файловые компоненты»). Ему нужно указать на файл со SPICE-моделью ОУ. В этом случает SPICE-модель напрямую передаётся SPICE-симулятору. Подробнее этот процесс описан здесь: qucs-help.readthedocs.org/en/spice4qucs/SubLib.html#using-manufacturers-component-data-libraries

          В следующих версия ожидаются библиотеки, которые будут включать в себя неконвертированные SPICE-модели. Если выбран дефолтный симулятор, то будет подгружаться Qucs-netlist, а если выбран SPICE-симулятор, то SPICE-netlist.
          0
          Spice сам по себе существует в исходниках и проверен временем ( 25 лет уже по-моему). Любая контора типа Intel пользуется его оригинальным кодом, добавляя свои уравнения состояния для MOSFET-о-в и прочих элементов. А вот обработки результатов расчетов не хватает. Или Ваше моделирование законов Кирхгофа эффективнее?
            +1
            Совершенное верно, SPICE существует ещё с 80-х годов.

            Если интересна мотивация авторов симулятора Qucsator, то можете поискать их статьи по имени авторов (Michael Mrgraf и Stefan Jahn). Они публиковались в International Journal of Numeric Modelling. Если вкратце, то авторы хотели создать симулятор, который содержал встроенные модели длинных линий, моделирование S-параметров и т.п. Их ещё не устраивала методика расчёта шумов в SPICE. Авторы работали в области СВЧ-электроники, и должное внимание моделированию во временной области не уделили (там остались баги). Около 2009 года они прекратили разработку GUI Qucs и симулятора Qucsator, и перестали отвечать на все вопросы, связанные с симулятором. Казалось, что симулятор умер. Но примерно с 2011-2012 года за симулятор и GUI взялась новая команда некромантов разработчиков.

            Ngspice наоборот базируется на коде оригинального SPICE3f5 и его разрабатывает всё время одна команда.

            Лично я считаю, что разработка своего симулятора с нуля было очень вредной идеей. Я тоже не вполне понимаю, что мешало доработать тот же Ngspice, который уже существовал на данный момент. В будущем это могло только породить костыли. Поэтому я придерживаюсь мнения, что наш симулятор должен следовать SPICE. Но есть люди, которые думают иначе.

            Если кому-то интересна тема симуляторов, не основанных на SPICE, то ещё есть такой полуживой консольный симулятор Gnucap. В настоящее время разработка возобновлена по-моему первоначальным автором.
              0
              Любая контора типа Intel пользуется его оригинальным кодом, добавляя свои уравнения состояния для MOSFET-о-в и прочих элементов.
              От оригинального SPICE в подобных разработках мало чего осталось, если вообще осталось.
                0
                По моим данным — осталось много кода из прошлого века. Я бы сказал, процентов 90.
                  0
                  Можно узнать на чем основаны ваши данные?

                  Мои основаны на нескольких годах работы в команде разрабатывающей коммерческий SPICE симулятор.
                    0
                    сотрудником Интела пару лет работал в этом проекте, добавлял хитрый алгоритм вычисления очень нелинейной функции модели полупроводника
              0
              Это шикарно! Удачи вам!

              Only users with full accounts can post comments. Log in, please.