Qucs — open-source САПР для моделирования электронных схем

    В настоящее время существует не так уж и много open-source САПР. Тем не менее, среди САПР для электроники (EDA) есть весьма достойные продукты. Этот пост будет посвящён моделировщику электронных схем с открытым исходным кодом Qucs. Qucs написан на С++ с использованием фреймворка Qt4. Qucs является кроссплатформенным и выпущен для ОС Linux, Windows и MacOS.

    Разработку данной САПР начали в 2004 году немцы Michael Margraf и Stefan Jahn (в настоящее время не активны). Сейчас Qucs разрабатывается интернациональной командой, в которую вхожу и я. Руководителями проекта являются Frans Schreuder и Guilherme Torri. Под катом будет рассказано о ключевых возможностях нашего моделировщика схем, его преимуществах и недостатках по сравнению с аналогами.

    Главное окно программы показано на скриншоте. Там смоделирован резонансный усилитель на полевом транзисторе и получены осциллограммы напряжения на входе и выходе и также АЧХ.



    Как видно, интерфейс интуитивно понятен. Центральную часть окна занимает собственно моделируемая схема. Компоненты размещаются на схеме методом перетаскивания из левой части окна. Виды моделирования и уравнения также являются особыми компонентами. Более подробно принципы редактирования схем описаны в документации к программе.

    Формат схемного файла Qucs основан на XML и к нему поставляется документация. Поэтому схема Qucs может быть легко сгенерирована сторонними программами. Это позволяет создавать ПО для синтеза схем, которое является расширением Qucs. Проприетарное ПО как правило использует бинарные форматы.

    Перечислим основные компоненты, имеющиеся в Qucs:

    1. Пассивные RCL-компоненты
    2. Диоды
    3. Биполярные транзисторы
    4. Полевые транзисторы (JFET, MOSFET, MESFET и СВЧ-транзисторы)
    5. Идеальные ОУ
    6. Коаксиальные и микрополосковые линии
    7. Библиотечные компоненты: транзисторы, диоды и микросхемы
    8. Файловые компоненты: подсхемы, spice-подсхемы, компоненты Verilog


    Библиотека компонентов использует собственный формат, основанный на XML. Но можно импортировать существующие библиотеки компонентов, основанные на Spice (приводятся в даташитах на электронные компоненты).

    Поддерживаются следующие виды моделирования:
    1. Моделирование рабочей точки на постоянном токе
    2. Моделирование в частотной области на переменном токе
    3. Моделирование переходного процесса во временной области
    4. Моделирование S-параметров
    5. Параметрический анализ


    Результаты моделирования можно экспортировать в Octave/Matlab и выполнить там постобработку данных.

    Qucs основан на вновь разработанном движке схемотехнического моделирования. Отличительной особенностью этого движка является встроенная возможность моделирования S-параметров и КСВ, что важно для анализа ВЧ-схем. Qucs может пересчитывать S-параметры в Y- и Z-параметры.

    На скриншотах показан пример моделирования S-параметров широкополосного усилителя высокой частоты.





    Итак, отличительной особенностью Qucs является возможность анализа комплексных частотных характеристик (КЧХ), построение графиков на комплексной плоскости и диаграмм Смита, анализ комплексных сопротивлений и S-параметров. Эти возможности отсутствуют в проприетарных системах MicroCAP и MultiSim, и здесь Qucs даже превосходит коммерческое ПО и позволяет получить недостижимые для симуляторов электронных схем, основанных на Spice результаты.

    Недостатком Qucs является малое количество библиотечных компонентов. Но этот недостаток не является препятствием к использованию, так как Qucs совместим с форматом Spice в котором приводятся модели электронных компонентов в даташитах. Также моделировщик работает медленнее, чем аналогичные Spice-совместимые моделировщики (например MicroCAP (проприетарный) или Ngspice (open-source)).

    В настоящее время мы работаем над возможностью предоставления пользователю выбора движка для моделирования схемы. Можно будет использовать встроенный движок Qucs, Ngspice (spice-совместимый консольный моделировщик, похожий на PSpice) или Xyce (моделировщик с поддержкой параллельных вычислений через OpenMPI )

    Теперь рассмотрим перечень нововведений в недавнем релизе Qucs 0.0.18 перспективных направлений в разработке Qucs:

    1. Улучшена совместимость с Verilog
    2. Продолжается портирование интерфейса на Qt4
    3. Реализован список недавних открытых документов в главном меню.
    4. Реализован экспорт графиков, схем в растровые и векторные форматы: PNG, JPEG, PDF, EPS, SVG, PDF+LaTeX. Эта функция полезна при подготовке статей и отчётов, содержащих результаты моделирования
    5. Возможность открытия документа схемы из будущей версии программы.
    6. Исправлены баги, связанные с зависанием моделировщика при определённых условиях.
    7. Ведётся разработка системы синтеза активных фильтров для Qucs (ожидается в версии 0.0.19)
    8. Ведётся разработка сопряжения с прочими open-source движками для моделирования электронных схем (Ngspice, Xyce, Gnucap). В последующих версиях будет добавлена возможность выбора движка для моделирования схемы.


    Можно заключить, что несмотря на свои недостатки Qucs представляет собой весьма достойную альтернативу проприетарным САПР для моделирования электронных схем.

    Ресурсы по Qucs:

    Сайт проекта: qucs.sourceforge.net
    Репозиторий на Github: github.com/Qucs/qucs
    Библиотека отечественных компонентов для Qucs: github.com/ra3xdh/qucs-rus-complib
    Share post

    Similar posts

    Comments 45

      +1
      Выглядит очень неплохо! Напомните, какие есть ещё подобные свободные программы для сравнения?
        0
        Kikad?
          0
          kicad*.
          Она даже чуть более функциональной будет, но и сама по себе сложнее в понимании, имхо.
            0
            KiCAD не моделирует режимы работы схемы. Он нужен, чтобы делать из схем печатные платы. Вот если бы схемы KiCAD можно было сразу моделировать в Qucs, было бы очень и очень круто.
              0
              Формат списка цепей у них совместим. Оба пакета понимают Spice.
                0
                А подробности, пожалуйста? Допустим есть схема KiCAD, для каждого элемента схемы есть модель (например, Spice). Какие манипуляции позволяют моделировать упомянутую схему?..
                  +1
                  В идеале, из KiCad (eeschema) экспортируем список цепей в формате spice и передаем в эмулятор.
                  Так как spice — текстовый формат, в случае нестыковок можно попытаться огрехи импорта/экспорта исправить.
                  Чтобы точно проверить эту идею, нужно провести эксперимент.
                    0
                    Спасибо. Есть такая опция. В Кикад, оказывается, даже есть кнопка «запустить симулятор» во вкладке сохранения списка цепей в формате Спайс. Надо будет погуглить и потестить.
                      +1
                      KiCAD не имеет встроенных средств визуализации результатов моделирования, а у Ngspice — графический интерфейс для этих целей очень и очень примитивен.

                      Я считаю, что объединять симулятор и разводчик ПП в одну программу не следует. Иначе получится монстр наподобие Multisim, который ни для того ни для другого не годится.
                      0
                      Правильней было бы схему из эмулятора портировать в КiCAD для дальнейшей разводки, а не наоборот…
                        +1
                        Существует вот этот проект github.com/Valber/qucs2kicad. Как видно из названия, это скрипты на Питоне, которые конвертируют схему из Qucs в KiCAD. Кому нужно, можете пробовать.
                  +1
                  Схемы из KiCAD как правило предназначены для разводки ПП. Они содержат много элементов, моделей которых нет (например микроконтроллеры, разные сложные микросхемы и т.п.). Для моделирования схему как правило разбивают на мелкие функциональные узлы, иначе схема целиком будет моделироваться очень долго. Как уже здесь ответили, из KiCAD можно если схема простая заэкспортировать spice-netlist и промоделировать его.
                    0
                    Согласен. Объединять симулятор и разводчик ПП точно не надо. Наверное, было бы все-таки удобно уметь экспортировать в Qucs из разводчика функциональные блоки или просто выделенный мышкой участок схемы (не плохая идея), а не всю схему, но это уже пожелания к KiCAD.
                  +1
                  Как ниже уже ответили, KiCAD и Qucs выполняют разные функции. KiCAD — это САПР для проектирования ПП, она схему не моделирует. А Qucs — симулятор схем, печатную плату в нём развести нельзя.
                  +2
                  Из свободных open-source моделировщиков:
                  Ngspice — консольный симулятор, как следует из названия spice-совместимый.
                  Xyce — новейший spice-совместимый консольный симулятор, поддерживает параллельные вычисления. Вышел в 2014 году.
                  Gnucap — консольный spice-симулятор. Проект по-видимому скончался.

                  Мы работаем над тем, чтобы использовать Qucs в качестве фронтенда для Ngspice и Xyce.

                  Симуляторы только цифровых схем: KSimus, KTechLab (оба живые), TkGate (проект неактивен), все с графическим интерфейсом.

                  Всё вышеперечисленное доступно для Linux.

                  Ещё стоит упомянуть про форк проекта Qucs — он называется QucsStudio и разрабатывается бывшим лидером проекта Qucs. Распространяется свободно с частично закрытым кодом. Он работает только под Windows, до сих пор использует Qt3. Собственно движок моделирования имеет закрытый код, а GUI открытый код.

                  Из полностью закрытых бесплатных симуляторов:
                  LTSpiceIV Работает только под Windows, для Linux заявлена wine-совместимость
                  Демо-версия (с урезанным функционалом и библиотекой) MicroCAP.
                    0
                    Спасибо!
                  0
                  Возможно ли полностью внешнее управление моделированием схемы? Т.е. файл задан, я хочу извне изменить параметр элемента, промоделировать схему и получить svg картинки на выходе? Имеется в виду файл сценария какой-нибудь.
                    0
                    Ну тут проще любой spice-симулятор использовать.
                    Я в студенческие годы ngspice использовал.
                    Параметризовал то что нужно, а потом перебираешь. А ещё там есть встроенный скриптовый язык.
                      0
                      Честно говоря — новая тема для меня, но интересная.

                      Вот есть такая информация: A Tutorial Qucs Simulation of SPICE Netlists [pdf]

                      This tutorial note describes how SPICE netlists can be simulated using Qucs. The
                      text is much more than a basic outline of the processes needed to link SPICE circuit
                      files to Qucs.

                      То есть на вход Qucs можно подавать SPICE netlists.
                        0
                        Кстати для публикации схем в документацию удобная возможность может быть, отсюда: github.com/Qucs/qucs/issues/32

                        qucs -p -i schematic.sch -o printout.[png, svg, pdf, eps]
                          +1
                          Данная возможность ожидается в следующем релизе Qucs.
                          0
                          У Qucs симулятор выполнен в виде отдельной программы qucsator. Её можно запускать с командной строки, передав в качестве параметра netlist. А netlist можно генерировать при помощи скрипта и подставлять туда нужные параметры. Потом данный моделирования можно обработать gnuplot'ом и получить svg.

                          Qucstaor выдаёт результаты моделирования в виде XML. Преобразовать его в CSV можно при помощи утилиты qucsconv, которая тоже запускается с командной строки.
                          0
                          А можно немного подробностей про Verilog?
                            +2
                            Сам я Verilog никогда не использовал, поэтому дам только общую информацию.

                            Для цифровых схем есть файловый компонент «Устройство Verilog». Ему надо дать исходный текст Verilog и он создаёт нужный компонент.

                            Для аналоговых схем можно вкомпилировать компонент Verilog прямо в Qucs при помщи генератора моделей ADMS. Для этого есть руководство здесь
                            0
                            Смотрю очень хорошая программа. Скажите а вот как она в сравнении с gEDA?
                              +1
                              Несмотря на внешнее сходство Qucs и gEDA выполняют разные задачи. При помощи gEDA разрабатывают печатную плату, схему она смоделировать не может. А Qucs — это моделировщик электронных схем, для разработки печатной платы он не предназначен. Сравнивать их сложно. Единственная похожая функция — это только то, что из gEDA можно заэкспортировать spice-netlist и смоделировать его в Ngspice.
                              +2
                              Рад, что Qucs вызвал интерес. Нужно в дальнейшем мне информировать хабрасообщество о ходе разработки Qucs и о новых функциях в нём?
                                +1
                                Конечно нужно! Программа очень хорошая для тех кто работает с электроникой (ну или как я, изучает).
                                0
                                Поддерживаются ли BSIM4 Level 54 модели? Возможно ли загрузить параметры автоматически (Если есть SPICE файл от фабрики )?
                                  +1
                                  BSIM4 модели есть. Они находятся в группе Компоненты->Устройства Verilog. Что понимается под файлом «SPICE от фабрики». Если есть библиотека SPICE, то её можно сконвертировать в библиотеку Qucs при помощи утилиты qucsconv.
                                    0
                                    Ну например есть следующие параметры для транзисторов:
                                    www.mosis.com/cgi-bin/cgiwrap/umosis/swp/params/ibm-90/t96w_9sf_9m_lb_3-params.txt

                                    Можно ли их загрузить в Qucs чтобы промоделировать схему на этих транзисторах?
                                      0
                                      Файл не совсем обычный. Нужно вырезать из него то что относится к модели транзистора ( .MODEL и то что идёт за ним ) и сохранить отдельно как библиотеку spice, затем при помощи qucsconv сконвертировать её в библиотеку Qucs. Оттуда можно вставить транзистор.
                                        0
                                        Попробовал, генерирует файл где всё закомментировано
                                        # .MODEL:CMOSP PMOS (LEVEL=54 VERSION=4.3…

                                        В GUI (Components -> Verilog-A), если выбрать bsim4v30 компонент можно задать все параметры вручную (Edit->Properties). Не слишком удобно, хотя один раз на проект можно сделать.

                                        Как мне видится использование формата netlist'а отличного от SPICE вредная идея, т.к. большинство других симуляторов SPICE поддерживают.

                                        Например в LTSPICE (Бесплатном, но закрытом) можно добавить свои SPICE команды при необходимости.
                                          +1
                                          В qucsconv могли не добавить поддержку BSIM. Нужно будет посмотреть исходник на этот счёт.
                                          Относительно совместимости нетлиста здесь нужно читать работы основателей проекта, чем они мотивировали разработку своего собственного формата. Согласен, что идея была не очень хорошая. Все остальные свободные симуляторы имеют SPICE-совместимый нетлист. Мы сейчас работает над тем, чтобы подключать к Qucs spice-совместимые симуляторы (ожидается примерно через релиз). В том числе будет компонент, который будет передавать ядру пользовательские spice-параметры.
                                            0
                                            Правильная идея, например у ngspice нет нормального gui, но как симулятор он вполне хорош.
                                0
                                Поддерживается ли сборка CMake'ом под Windows? Попробовал собрать — пока не получилось.

                                Когда планируете переход с Qt4 на Qt5?
                                  0
                                  CMake под Windows должен собирать. Возможно связано что-то с этими багами github.com/Qucs/qucs/issues/171. Подробнее не подскажу, т.к. Windows у меня нет.

                                  Переход на Qt5 планируется примерно через год. До конца года мы должны закончить портирование на Qt4 (сейчас собирается через Qt3Support )
                                    0
                                    Существуют ли где-нибудь инструкции по сборке под windows?

                                    Сколько человек сейчас активно работают над проектом?
                                      0
                                      Инструкция для сборки под Windows есть здесь github.com/Qucs/qucs/wiki/Build-Windows.

                                      Сейчас над проектом работают не менее 6 человек. В основном специалисты по GUI. Собственно ядром моделирования занимаются 2 человека.
                                  0
                                  Промахнулся веткой
                                    0
                                    А цифровое моделирование не планируется?

                                    Уж очень «вкусно» всё выглядит, и хочется чего-то, подобного Протеусу, с его симуляцией микроконтроллеров и логическими анализаторами…
                                      0
                                      Цифровые компоненты есть и модель в виде файла verilog можно подключить. Simulavr еще привинтить бы…
                                        0
                                        «Фишка» протеуса в том, что не надо разбираться с verilog, а можно взять .hex/.elf от «реального» чипа и посмотреть, что выйдет. Не говоря уж про всякие индикаторы и анализаторы протоколов. (ещё б он под вайном не через раз работал...)

                                        Но, в целом, надо пробовать )
                                          +2
                                          Цифровое моделирование МК не планируется. Сейчас можно использовать VHDL/Verilog, если нужно подключать сложные цифровые ИС. Простые логические элемены/триггеры/регистры тоже реализованы. Зато планируем добавить через несколько релизов цифроаналоговое моделирование (ЦАП/АЦП, цифровые схемы в аналоговом включении).

                                          По поводу добавление симуляции МК… Данную функцию добавить у нас неоднократно просили. Трудоёмкость создания интерактивного симулятора, подобного Proteus большая, а нужность и полезность — сомнительная.

                                          Целиком полагаться на симулятор при отладке устройства на МК — очень вредная идея. Взять и смоделировать схему с МК целиком можно далеко не всегда. По опыту работы с Proteus, он корректно симулирует только AVR. Уже для PIC-контроллеров я искал у себя в программе несуществующие баги, так как симулятор неправильно неправильно смоделировал прошивку. Есть жалобы на некорректную реализацию MSP430.

                                          Протеус имел смысл, когда МК прошивали самодельным программатором от LPT-порта, а профессиональные программаторы были недоступны. Сейчас внутрисхемные отладчики и простое контрольное оборудование доступны даже студентам, отладочные платы для любых МК тоже продаются в огромных количествах, так что все действия, которые выполняются при помощи Протеуса можно выполнить при помощи современных отладочных комплектов.

                                          Вобщем, я считаю, что с МК лучше работать в железе на отладочное плате, а не в симуляторе.

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