Ngspice руководство на русском

SPICE (Simulation Program with Integrated Circuit Emphasis) — алгоритм моделирования процессов, протекающих в электрических схемах, разработанный в конце 70-х годов в университете Беркли (Калифорния). NGSPICE является расширением оригинального Spice3f5 с открытым кодом.

Наиболее часто используются 5 видов анализа электронных схем:

  • OP: Замер значений напряжения/тока при устойчивом состоянии системы. Например замер потребляемой мощности системы при отсутствии входного сигнала

  • DC: анализ по постоянному току посредством изменения параметров источников постоянного напряжения и/или тока. Пример — снятие вольт-амперной характеристики диода

  • AC: анализ по переменному току посредством изменения частоты. Пример — анализ частотной характеристики RC фильтра

  • Transient: Анализ поведения системы во времени. Например подбор параметров схемы генератора электрических колебаний

  • Fourier: Разложение функции в ряд Фурье. Позволяет качественно оценить нелинейные искажения сигнала

Начнём с проверки законов Кирхгофа с помощью простого OP анализа.

screenshot

На вход ngspice приходит схема в формате netlist. В данном материале для редактирования электрических схем используется gschem + gnetlist.

~$ gnetlist -g spice-sdb -o kirghof.net kirghof.sch

схема | netlist | ngspice.js

screenshot

ngspice 1 -> source kirghof.net
ngspice 2 -> op
ngspice 3 -> show v1 v2 v3
ngspice 4 -> print i(v1) i(v2) i(v3)

Результат: i(v1) = -2.54545 | i(v2) = -1.18182 | i(v3) = -3.72727

Первый закон Кирхгофа: алгебраическая сумма токов, сходящихся в любом узле, равна нулю ( -2.54545 -1.18182 = -3.72727 )

Второй закон Кирхгофа: алгебраическая сумма падений напряжений на отдельных участках замкнутого контура, произвольно выделенного в сложной разветвленной цепи, равна алгебраической сумме ЭДС в этом контуре ( 2.54545*10 - 1.18182*30 = 40-50 )

Далее RC — цепочка.

В этой статье мы поставим все необходимые инструменты для того, чтобы начать разработку микросхемы. Также мы установим Process Design Kit, про который мы говорили в предыдущей статье.

Напоминаю, что я продолжаю идти к цели — сделать свой собственный Отечественный Процессор (TM). Продолжение процесса разработки можно посмотреть под катом.

Как разработать микросхему, от идеи до результата. Ссылки на все статьи։

Установка необходимых инструментов.

За основу возьмём Ubuntu 21.04. Если у вас другой дистрибутив рекомендую установить именно Ubuntu 21.04 в виртуалку. С другими дистрибутивами, либо версиями вы сами по себе.

  1. Установите систему и проверьте, чтобы у вас было хотя бы 20GB свободного места в /opt

  2. Я установил build-essential и VirtualBox extension, поскольку я установил систему в виртуальной машине.

  3. ВАЖНО! Сохраняйте очерёдность

  4. Я установил Docker

  5. Я установил Magic VLSI и KLayout

  6. Я установил Netgen

  7. Затем я установил XSCHEM используя шаги снизу.

  8. Я установил NGSPICE: sudo apt install ngspice

  9. И напоследок я установил OpenPDK и caravel_user_project

Также мы рассмотрим работу транзисторов MOSFET и логику CMOS.

▍ Docker

Для установки Docker я использовал данный скрипт.

sudo apt-get update
sudo apt-get install 
    apt-transport-https 
    ca-certificates 
    curl 
    gnupg 
    lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo 
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu 
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

sudo groupadd docker
sudo usermod -aG docker $USER

Затем я перезагрузился и выполнил следующую команду, чтобы проверить Docker.

docker run hello-world # Run a test image

Источник

▍ KLayout

Для компиляции KLayout из папки /opt:

git clone -b v0.27.4 --depth 1 https://github.com/KLayout/klayout.git klayout-v0.27.4
sudo apt-get install gcc g++ make qtcreator build-essential python3 python3-dev libz-dev ruby ruby-dev
cd klayout-v0.27.4
./build.sh -qt5 -j2

Если у вас многоядерный процессор поменяйте -j2 на количество ваших процессорных потоков. К сожалению, у меня очень медленный процессор, поэтому сборка у вас точно займёт значительно меньше. Эта команда скомпилирует KLayout, для меня это процесс занял 2 часа. Но для того, чтобы запустить его вам нужно использовать следующую команду, поскольку линкер не знает местонахождения динамических библиотек:

 LD_LIBRARY_PATH=/opt/klayout-v0.27.4/bin-release /opt/klayout-v0.27.4/bin-release/klayout -e -nn $PDK_ROOT/sky130A/libs.tech/klayout/sky130A.lyt  -l $PDK_ROOT/sky130A/libs.tech/klayout/sky130A.lyp  /home/armleo/Desktop/armleo_io/gds/armleo_io.gds

Учтите, что вы должны были выполнить source sourceme.sh, до того, как вы запустите KLayout, иначе при запуске будет ошибка. Так же стоит указать правильный путь к .gds файлу, поскольку у вас он будет отличаться.

Если Klayout запустился, то закрываем его и идём дальше. Если будут проблемы с библиотеками QT, в вашем дистрибутиве, то разберитесь сами как её установить.

Источники установка QT, сборка KLayout и документация по LD_LIBRARY_PATH.

▍ Magic VLSI

Для компиляции Magic VLSI из папки /opt:

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install m4 tcsh csh libx11-dev libcairo2-dev mesa-common-dev libglu1-mesa-dev
git clone -b 8.3.227 https://github.com/RTimothyEdwards/magic magic-8.3.227
cd magic-8.3.227/
./configure 
make && sudo make install

Учтите, что без ключа -b 8.3.227 гит скопирует последний стабильный билд. Тут вы сами по себе, ибо весь код протестирован именно в этой версии.

▍ Netgen

Для Netgen я использовал следующий скрипт:

git clone -b 1.5.210 https://github.com/RTimothyEdwards/netgen
cd netgen
./configure
make
sudo make install

У Netgen есть требования, которые были установлены во время установки Magic VLSI/KLayout. Инструкции я нашёл тут.

▍ NGSPICE

Для установки вполне подойдёт версия из репозитория Ubuntu. Если у вас другой дистрибутив удостоверьтесь, что ngspice имеет версию 34.

sudo apt install ngspice

▍ XSCHEM

Для XSCHEM я использовал следующий скрипт:

sudo apt-get install -y libx11-6 libx11-dev libxrender1 libxrender-dev libxcb1 libx11-xcb-dev libcairo2 libcairo2-dev tcl8.6 tcl8.6-dev tk8.6 tk8.6-dev flex bison libxpm4 libxpm-dev gawk
git clone -b 2.9.9 https://github.com/StefanSchippers/xschem.git
cd xschem
./configure
make
sudo make install

Источник

▍ Установка caravel_user_project.

Давайте скопируем репозиторий с изменениями, которые я опишу внизу. Из папки /opt запускаем следующие команды:

git clone https://github.com/armleo/habr_nand_sky130.git

За основу взял caravel_user_project_analog. Я создал sourceme.sh с переменными. Переменные взял отсюда. Исходный код можно взять на GitHub-е вот тут.

Затем я модифицировал xschemrc, чтобы он ссылался на файл в папке $PDK_ROOT/xschemrc. Это необязательно, тем не менее далее туториал предполагает, что данное изменение уже сделано. Взглянуть на него можно тут.

С репозиторием и его изменениями познакомились. Теперь к установке.

OpenPDKs и Google говорят, что они не будут предоставлять билды PDK, потому что «it’s too big after it was built».

Все пути установки абсолютные, поэтому нужно установить его именно в папку /opt. В итоге у вас должна быть папка /opt/pdk_root/sky130A/libs.tech. Проверьте его наличие. Если её нет, значит вы что-то сделали не так. Удостоверьтесь, что в папке Caravel есть файлы. Проблемы с символами резисторов исправлены в последней версии, но возможности собрать PDK с новыми символами у меня не было, поэтому рекомендую собрать PDK с нуля.

Для того, чтобы собрать с нуля։

cd habr_nand_sky130
source sourceme.sh
make install
sudo chown -R $USER /opt/
make pdk-nonnative

Иногда pdk build вылетает с ошибкой. Для того, чтобы обойти этот баг, я использую коммиты, которые не содержат этого бага. Если пожалуется на Permission во время запуска докера, значит вы что-то сделали не так во время установки докера.

Давайте распакуем .gds файлы. Для того, чтобы распаковать .gds файлы:

make uncompress

Чтобы упаковать .gds файлы, для того, чтобы отправить их в Гит репозиторий:

make compress

Нам нужны пока распакованные .gds файлы, так что вторую команду упаковки не нужно выполнять.

Установка OpenLane и тестовый запуск

export PDK_ROOT=/opt/pdk_root

Переходим в папку /opt и выполняем следующий шаг:

git clone -b 2021.08.17_03.26.57 --depth 1 https://github.com/The-OpenROAD-Project/OpenLane.git OpenLane_habr

sudo apt-get install python3-pip
python3 -m pip install pyyaml click
cd OpenLane_habr
make pull-openlane

Учтите, что это древняя версия OpenLane, если хотите установить новую версию, на гитхабе всё очень подробно описано.

Если у вас возникли проблемы в этом шагу, дальше идти не имеет смысла, поскольку у вас есть проблема в вашей установке.

PDK ранних версий, которые мы использовали наверху имеют несовместимости с OpenLane последних версий. А ещё в OpenLane, который я использовал есть баг, из-за чего у вас будут проблемы с таймингами, которые у вас не будут отображаться. Поэтому если вы захотите установить последнюю версию используйте скрипт внизу:

Как установить последнюю версию

Открываем новый терминал, ставим место установки PDK:

export PDK_ROOT=/opt/openlane_pdk_root

Устанавливаем, например эту версию:

git clone -b 2021.11.20_01.52.16 --depth 1 https://github.com/The-OpenROAD-Project/OpenLane.git OpenLane_habr
sudo apt-get install python3-pip
python3 -m pip install pyyaml click
cd OpenLane_habr
make pull-openlane
make pdk

Она скачает и установит последнюю версию + PDK доступную на момент публикации статьи. Если хотите получить САМУЮ последнюю стабильную версию уберите ключ -b 2021.11.20_01.52.16, но тут вы уже на свой страх и риск.

Наконец для того, чтобы запустить тест выполните:

make test

Если же у вас нет проблем мы увидим, что OpenLane сгенерировал нашу цифровую макро ячейку. Её можно найти в папке designs/spm/openlane_test/results/magic/spm.gds. Давайте откроем KLayout-ом наш .gds файл:

source /opt/habr_nand_sky130/sourceme.sh

 LD_LIBRARY_PATH=/opt/klayout-v0.27.4/bin-release /opt/klayout-v0.27.4/bin-release/klayout -e -nn $PDK_ROOT/sky130A/libs.tech/klayout/sky130A.lyt  -l $PDK_ROOT/sky130A/libs.tech/klayout/sky130A.lyp  designs/spm/runs/openlane_test/results/magic/spm.gds

Видим результат:

В папке designs мы можем видеть, очень большое количество примеров, а документация очень подробно описывает все параметры. Да, OpenLane далёк от Fusion Compiler-а от Synopsys, но это первые, очень даже удачные, шаги Open-Source программного обеспечения, к тому, чтобы составить коммерческим инструментам конкуренцию.

Теперь перейдём, немного к теории, поскольку следующая статья будет уже практическая.

MOSFET транзисторы на пальцах

Как мы уже знаем, в микросхеме используются транзисторы, но как именно работает этот самый транзистор? Для этого возьмём NMOS транзистор. Как видим на картинке, NMOS состоит из трёх полупроводников: DRAIN, SOURCE, BULK и область между DRAIN и SOURCE.

Также мы можем заметить, что в регионе, который находится между DRAIN и SOURCE находится область с противоположным типом полупроводника. В случае NMOS области DRAIN и SOURCE имеют тип N, а область посередине имеет тип P. Очевидно, что если N тип имеет потенциал выше, чем P тип, то у нас образуется «закрытый» диод.

Если по какой-то причине на область P мы подадим электроны, то этот полупроводник начнёт проводить ток, ибо у нашего диода, почти равные (либо выше) потенциалы с полупроводником типа N. Таким образом управляя количеством электронов в области между DRAIN и SOURCE мы сможем управлять током, который проходит между DRAIN-ом и SOURCE-ом. Но, как именно этого достигнуть?

Для этого мы создаём очень тонкий слой диэлектрика, который состоит из оксида силикона (SiO2). Обычно для этого используется термическая обработка. Над этим тонким слоем диэлектрика, мы создаём металлический слой.

Если подать на этот металл называемый Gate-ом положительный заряд, то в полупроводнике, который находится прямо под Gate-ом образуется область с отрицательным зарядом, то есть скопление электронов, и как мы уже узнали, в этом случае между DRAIN-ом и SOURCE-ом образуется канал. Точка, когда количество электронов между DRAIN и SOURCE достигает равного значения с количеством «дырок» называется Vth.

Стоит отметить, что на самом деле «открытый» NMOS имеет два состояния, в зависимости от напряжения Drain-Source:

Также стоит отметить, что DRAIN и SOURCE у NMOS-ов симметричный, но SOURCE-ом обычно называют ножку, которая подключена к земле. У PMOS SOURCE-ом называется ножка, которая находится на линии питания.

Ещё стоит дополнить то, что значение напряжение BULK меняет характеристики транзистора. Подробнее можно узнать, загуглив Body effect.

NMOS находится в открытом положении, когда значение Vgate-to-source ровно, либо больше, чем Vth. PMOS в отличие от NMOS состоит из двух полупроводников P типа и BULK, как и область между двумя P полупроводниками находится полупроводник N типа. Похожим образом работает PMOS, но PMOS находится в открытом состоянии только тогда, когда напряжение Vgate-to-source < Vth. Именно поэтому у транзистора NMOS символ не имеет кружочка над Gate-ом, а у PMOS-а этот кружочек присутствует.

Важно отметить, что всё это объяснение на пальцах ОЧЕНЬ не соответствует реальности. Если вас интересует физика, то рекомендую почитать книжки по этой тематике. Лично я запоминаю только объяснение на пальцах, ибо так проще.

CMOS логика на пальцах

Мы научились управлять током используя транзистор, теперь давайте попробуем сделать из этого транзистора, что-то полезное. Например инвертор.

Возьмём транзистор NMOS и подключим резистор. Когда NMOS выключен, ток течёт из резистора в подключенный вход дальнейшей логики. Если включить NMOS подав на Gate напряжение — NMOS откроется и ток из резистора практически полностью пройдёт через транзистор к земле.

НО! Есть одна неприятная проблема. Ток через транзистор будет идти даже тогда, когда выход находится в нулевом состоянии. Ах, если бы у нас был бы транзистор, который бы закрывался, когда ты подаёшь на вход единицу… Он называется PMOS. Очевидно, что когда на входе единица, то PMOS выключен, и на выход подаётся нулевое значение, поскольку NMOS в свою очередь открыт.

А давайте по той же логике сделаем буфер. Подключаем NMOS к VDD и PMOS к VSS. По нашей логике, когда на входе мы подадим единицу, то на выходе мы получим также единицу, круто получается, правда?

Симулируем и получается…

Эмм… Че-то у нас выходы имеют напряжение меньше, чем VDD и выше, чем VSS. Это связано с тем, что NMOS плохо проводят единицу, поскольку SOURCE-ом становится выход, и NMOS будет открыт до тех пор, пока Vgs выше Vth. Если Vsource (выход) достигает значения VDD-Vth, то транзистор закроется, оставив на выходе напряжение VDD-Vth, что очень плохо. Аналогично, для PMOS.

Как мы будем решать эту проблему? Давайте решим, что NMOS всегда подключен к нулю, а PMOS всегда будет подключён к единице. Идея отличная, но как нам сделать буфер используя эту логику?

Помните булеву логику, две инверсии на выходе дают такое же значение, что и на входе. Давайте просто подключим два инвертора подряд:

Наконец-то!

Ну научились мы делать инверторы и буферы, давайте сделаем простые логические ячейки вроде NAND и NOR.

Если подключить два NMOS последовательно, то земля на выход пойдёт, только когда оба входа имеют высокое напряжение. Также давайте подключим два PMOS параллельно. Если хотя бы один из транзисторов имеет на Gate значение ноль, тогда транзистор PMOS открыт, а значит на выходе находится единица.

Ничего не напоминает? Правильно, это NAND:

Получившееся схема:

Если вы поставите PMOS последовательно, а NMOS параллельно, очевидно у вас будет NOR.

У вас возникнет логичный вопрос: «Что если и NMOS, и PMOS будут открыты?». Ответ прост: ваша схема должна иметь такую структуру, чтобы NMOS и PMOS никогда не оставались одновременно открытыми на долгое время. Если вы нарушите это правило, ваша схема будет потреблять большой ток и нагреваться, а если оставить транзистор с большим током, то ваша микросхема скоро сломается из-за электромиграции.

В следующей статье рассмотрим схемотехническое представление и Layout.

Об авторе

Меня зовут Арман и я окончил институт Synopsys по профилю VLSI разработки микросхем. В основном я занимаюсь разработкой цифровых компонентов для микросхем и IP для ПЛИС. В прошлом я был программистом, писал бекенд на Node.js и разрабатывал под микроконтроллеры, но решил пересесть на что-то сложнее, попробовать себя, так сказать.

Я открыт к найму, поэтому, если вас интересует найм разработчика цифровых микросхем с тремя годами опыта и очень интересными проектами (Радио модемы, преобразователи интерфейсов, процессоры и очень многое), напишите мне в личку.

Как разработать микросхему, от идеи до результата. Ссылки на все статьи։

ЧитатьОфициальная версия документа NGSPICE PDFЗахватить.

ngspice

RUN

source EX1.cir
run
plot v(5)

CMD

.TITLE line

//Examples:
POWER AMPLIFIER CIRCUIT
* additional lines following
*...
Test of CAM cell
* additional lines following
*...

//.TITLE line example:
******************************
* additional lines following
*...
.TITLE Test of CAM cell
* additional lines following
*...

//Internal input deck:
Test of CAM cell
* additional lines following
*...
*TITLE Test of CAM cell
* additional lines following
*...

.END Line

.end

Comments

// $ *
* <any comment>
* RF=1K Gain should be 100
* Check open-loop gain and phase margin

model device models

//.model mname type(pname1=pval1 pname2=pval2 ... )
.model MOD1 npn (bf=50 is=1e-13 vbf=50)

SUBCIRCUITS

// .SUBCKT subnam N1 <N2 N3 ...>
.SUBCKT OPAMP 1 2 3 4
//.ENDS <SUBNAM>
.ENDS OPAMP
//XYYYYYYY N1 <N2 N3 ...> SUBNAM
X1 2 4 17 3 1 MULTI
* The following is the instance card:
*
xdiv1 10 7 0 vdivide
* The following are the subcircuit definition cards:
*
.subckt vdivide 1 2 3
r1 1 2 10K
r2 2 3 5K
.ends

.GLOBAL

// .GLOBAL nodename
.GLOBAL gnd vcc

.INCLUDE

//.INCLUDE filename
.INCLUDE /users/spice/common/bsim3-param.mod

.LIB

// .LIB filename libname
.LIB /users/spice/common/mosfets.lib mos1

###.PARAM Parametric netlists

//.param <ident> = <expr> <ident> = <expr> ...
.param pippo=5
.param po=6 pp=7.8 pap={AGAUSS(pippo, 1, 1.67)}
.param pippp={pippo + pp}
.param p={pp}
.param pop=’pp+p’

.param a = 123 * 3 b = sqrt(9) // doesn’t work, a <= 123
.param a = ’123 * 3’ b = sqrt(9) // ok.
.param c = a + 123 // won’t work
.param c = ’a + 123’ // ok.
.param c = a+123 // ok.

Subcircuit

* Param-example
.param amplitude= 1V
*
.subckt myfilter in out rval=100k cval=100nF
Ra in p1 {2*rval}
Rb p1 out {2*rval}
C1 p1 0 {2*cval}
Ca in p2 {cval}
# ngspice

## RUN

    source EX1.cir
    run
    plot v(5)

## CMD


### .TITLE line

```verilog
//Examples:
POWER AMPLIFIER CIRCUIT
* additional lines following
*...
Test of CAM cell
* additional lines following
*...

//.TITLE line example:
******************************
* additional lines following
*...
.TITLE Test of CAM cell
* additional lines following
*...

//Internal input deck:
Test of CAM cell
* additional lines following
*...
*TITLE Test of CAM cell
* additional lines following
*...

.END Line

.end

Comments

// $ *
* <any comment>
* RF=1K Gain should be 100
* Check open-loop gain and phase margin

model device models

//.model mname type(pname1=pval1 pname2=pval2 ... )
.model MOD1 npn (bf=50 is=1e-13 vbf=50)

SUBCIRCUITS

// .SUBCKT subnam N1 <N2 N3 ...>
.SUBCKT OPAMP 1 2 3 4
//.ENDS <SUBNAM>
.ENDS OPAMP
//XYYYYYYY N1 <N2 N3 ...> SUBNAM
X1 2 4 17 3 1 MULTI
* The following is the instance card:
*
xdiv1 10 7 0 vdivide
* The following are the subcircuit definition cards:
*
.subckt vdivide 1 2 3
r1 1 2 10K
r2 2 3 5K
.ends

.GLOBAL

// .GLOBAL nodename
.GLOBAL gnd vcc

.INCLUDE

//.INCLUDE filename
.INCLUDE /users/spice/common/bsim3-param.mod

.LIB

// .LIB filename libname
.LIB /users/spice/common/mosfets.lib mos1

###.PARAM Parametric netlists

//.param <ident> = <expr> <ident> = <expr> ...
.param pippo=5
.param po=6 pp=7.8 pap={AGAUSS(pippo, 1, 1.67)}
.param pippp={pippo + pp}
.param p={pp}
.param pop=’pp+p’

.param a = 123 * 3 b = sqrt(9) // doesn’t work, a <= 123
.param a = ’123 * 3’ b = sqrt(9) // ok.
.param c = a + 123 // won’t work
.param c = ’a + 123’ // ok.
.param c = a+123 // ok.

Subcircuit

* Param-example
.param amplitude= 1V
*
.subckt myfilter in out rval=100k cval=100nF
Ra in p1 {2*rval}
Rb p1 out {2*rval}
C1 p1 0 {2*cval}
Ca in p2 {cval}
Cb p2 out {cval}
R1 p2 0 {rval}
.ends myfilter
*
X1 input output myfilter rval=1k cval=1n
V1 input 0 AC {amplitude}
.end

.PARAM PARAMETRIC NETLISTS

* Logical operators
v1or 1 0 {1 || 0}
v1and 2 0 {1 && 0}
v1not 3 0 {! 1}
v1mod 4 0 {5 % 3}
v1div 5 0 {5  3}
v0not 6 0 {! 0}
.control
op
print allv
.endc
.end

.FUNC

// .func <ident> { <expr> }
// .func <ident> = { <expr> }
.func icos(x) {cos(x) - 1}
.func f(x,y) {x*y}
.func foo(a,b) = {a + b}

.CSPARAM

Create a constant vector (see 17.8.2) from a parameter in plot (17.3) const.

//.csparam <ident> = <expr>
.param pippo=5
.param pp=6
.csparam pippp={pippo + pp}
.param p={pp}
.csparam pap=’pp+p’

* test csparam
.param TEMPS = 27
.csparam newt = {3*TEMPS}
.csparam mytemp = ’2 + TEMPS’
.control
echo $&newt $&mytemp
.endc
.end

.TEMP

Sets the circuit temperature in degrees Celsius.

//.temp value
.temp 27

.IF Condition-Controlled Netlist

//.if(boolean expression)
//...
//.elseif(boolean expression)
//...
//.else
//...
//.endif

//Example 1:
* device instance in IF-ELSE block
.param ok=0 ok2=1
v1 1 0 1
R1 1 0 2
.if (ok && ok2)
R11 1 0 2
.else
R11 1 0 0.5 $ <-- selected
.endif
//Example 2:
* .model in IF-ELSE block
.param m0=0 m1=1
M1 1 2 3 4 N1 W=1 L=0.5
.if(m0==1)
.model N1 NMOS level=49 Version=3.1
.elseif(m1==1)
.model N1 NMOS level=49 Version=3.2.4 $ <-- selected
.else
.model N1 NMOS level=49 Version=3.3.0
.endif

3

м параллель

.param madd = 6
X1 a b sub1 m=5
.subckt sub1 a1 b1
Cs1 a1 b1 C=5p m=’madd-2’
.ends
.param madd = 4
X1 a b sub1 m=3
.subckt sub1 a1 b1
X2 a1 b1 sub2 m=’madd-2’
.ends
.subckt sub2 a2 b2
Cs2 a2 b2 3p m=2
.ends
NGSpice
Тип Electronic design automation
Разработчик Paolo Nenzi
Операционная система Кроссплатформенное программное обеспечение
Последняя версия release 28 (2018-06-01)
Лицензия BSD
Сайт ngspice.sourceforge.net

NGSPICE — симулятор электронных схем общего назначения с открытым исходным кодом, обеспечивающий моделирование в режиме смешанных сигналов (mixed-signal) и на смешанном уровне (mixed-level). Является расширением Spice3f5, включившим в себя код проекта Cider, обеспечивающий моделирование на смешанном уровне, и проекта XSPICE, обеспечивающий моделирование смешанных сигналов. Является мощной программой, используемой в разработке как интегральных схем, так и печатных плат для проверки целостности схемы и для анализа её поведения.

Содержание

  • 1 Введение
  • 2 История
  • 3 Дополнительные возможности
    • 3.1 Cider
    • 3.2 XSPICE
    • 3.3 TCLSpice
  • 4 См. также
  • 5 Ссылки

Введение

С широким распространением систем, совмещающих в себе цифровые и аналоговые части, зачастую объединенных на одном кристалле, возникла потребность в моделирующих их симуляторах.

Аналоговое моделирование цифровых устройств требует избыточных вычислительных ресурсов, поэтому для цифровых схем используют моделирование с по событиям (event driven). Для совместного моделирования цифровой и аналоговой части, использующих разные принципы, может использоваться либо комбинированный симулятор, либо два отдельных симулятора, синхронизируемых по специальному протоколу.

История

Дополнительные возможности

По сравнению с исходным проектом Spice3f5 NGSPICE получил возможность моделирования критических устройств в схеме, моделирования пользовательских нодов, отличных от тока, напряжения и логических уровней, а также симулирования аналоговых и цифровых цепей. Появилась возможность в дополнение к классическому интерфейсу командной строки использования графического интерфейса через язык TCL. Кроме того, были добавлены новые модели устройств, а также облегчена возможность добавления пользовательских аналоговых и цифровых моделей.

Cider

Симулятор на уровне устройств из проекта Cider обеспечивает дополнительные возможности для более точного моделирования схем с учетом моделирования критически важных элементов. Для моделирования элементов используются два симулятора: встроенный симулятор DCIM и интерфейс с внешним симулятором устройств GSS TCAD.

Встроенный симулятор DCIM использует язык описания устройств из проекта PISCES, разработанный Станфордским университетом, и классическое для SPICE описание схемы соединений.

XSPICE

NGSPICE использует комбинированный симулятор смешанных сигналов из проекта XSPICE. Фактически, он добавляет в симулятор цифровые ноды, характеризуемые логическим уровнем и мощностью сигнала.

Для добавления моделей цифровых устройств может использоваться либо написание модели на языке C либо использовать специально предусмотренный интерфейс для внедрения цифровых моделей, написанных на языке описания и моделирования аппаратуры Verilog

TCLSpice

Интерфейс позволяет написание графических оболочек для более тесного взаимодействия с симулятором с помощью команд на языке TCL

См. также

  • Spice
  • Advanced Design System Transient Convolution Simulator
  • Input Output Buffer Information Specification (IBIS)
  • List of free electronics circuit simulators
  • Multisim
  • PSpice
  • Spectre Circuit Simulator
  • Transistor models (BSIM4, Модель МОП-транзистора ЭКВ)

Ссылки

  • What is ngspice ?
  • tclspice: ngspice and Tcl scripting
  • XSPICE at Georgia Tech
  • PISCES Advanced 1D and 2D Device Simulation for Silicon

Page 1: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Н. Н. Войт          

Моделирование принципиальных цифро-аналоговых схем в САПР Ngspice

Методические указания к лабораторной работе по дисциплине «Конструкторско-технологическое обеспечение

производства ЭВМ» для бакалавров по направлению 230100.62 «Информатика и

вычислительная техника» и специалистов по специальности 230101.65 «Вычислительные

машины, комплексы, системы и сети»

Ульяновск УлГТУ

2013

Page 2: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

2

УДК 621.3 ББК 32.973я7 В 65

Рецензент доктор технических наук, профессор кафедры ИС Ульяновского государственного технического университета Т. В. Афанасьева. Одобрено секцией методических пособий научно-методическогосовета университета Войт, Н. Н. Моделирование принципиальных цифро-аналоговых схем в САПР Ngspice : методические указания к лабораторной работе / Н. Н. Войт. – Ульяновск : УлГТУ, 2013. – 20 с.

Рассмотрены общие сведения о САПР Ngspice и требования к описанию принципиальных цифро-аналоговых схем, пример выполнения лабораторной работы, контрольные вопросы и варианты заданий.

Приведенные задания к лабораторной работе предназначены для обучения бакалавров и специалистов в рамках дисциплины «Конструкторско-технологическое обеспечение производства ЭВМ» по направлению 230100.62 «Информатика и вычислительная техника» и специальности 230101.65 «Вычислительные машины, комплексы, системы и сети».

Методические указания подготовлены на кафедре «Вычислительная техника».

УДК 621.3

ББК 32.973я7

© Войт Н.Н., 2013.

© Оформление. УлГТУ, 2013.

В 65

Page 3: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

3

СОДЕРЖАНИЕ  

ВВЕДЕНИЕ …………………………………………………………………………………… 4 

1.  Общие сведения о САПР Ngspice ……………………………………………… 5 

1.1. Назначение и состав пакета ………………………………………………………………. 5 

1.1. Экспортирование cir-файлов из САПР KiCAD в Ngspice …………………….. 5 

1.2. Общие требования к описанию принципиальных схем в Xspice ………… 5 

2.  Пример выполнения лабораторной работы ………………………………… 6 

3.  Порядок выполнения работы …………………………………………………… 10 

4.  Контрольные вопросы …………………………………………………………….. 11 

5.  Варианты заданий …………………………………………………………………… 11 

ЗАКЛЮЧЕНИЕ …………………………………………………………………………… 19 

БИБЛИОГРАФИЧЕСКИЙ СПИСОК ……………………………………………. 20 

Page 4: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

4

ВВЕДЕНИЕ  

Лабораторная работа предназначена для формирования

профессиональных компетенций по освоению моделирования

принципиальных схем.

Варианты заданий ранжированы по сложности, что позволяет

учесть индивидуальные особенности студента.

Содержание лабораторной работы ориентировано на

использование пакета САПР Ngspice.

Материал сопровождается примером выполнения лабораторной

работы. В конце приведены контрольные вопросы.

Page 5: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

5

1. Общие сведения о САПР Ngspice

1.1. Назначение и состав пакета САПР Ngspice предназначен для аналогового, цифрового и

цифро-аналогового моделирования типовых элементов замены средств

вычислительной техники и радиоэлектроники [1, 2].

В состав пакета входят инструменты: Spice3f5, Cider1b1 и Xspice.

Spice3 является известным инструментом, де-факт стандарта

моделирования схем уже более 30 лет.

Cider является инструментом анализа зависимости быстродействия от

конструкторских параметров схем.

Xspice является расширением Ngspice и обеспечивает моделирование

цифровых схем.

Веб-версия сервиса моделирования схем находится по адресу [3].

1.1. Экспортирование cir-файлов из САПР KiCAD в Ngspice Запустить Kicad и EEschema, выполнить команду Сформировать

список цепей на верхней панели инструментов. В появившемся окне

выбрать закладку Spice, установить флажки: Формат по умолчанию,

Префикс обозначения, Использовать имена цепей. Нажать Список

цепей, указать место сохранения файла.

1.2. Общие требования к описанию принципиальных схем в Xspice Экспортированные cir-файлы из САПР KiCAD дополняются

кодом на языке описания схем для Xspice [2].

Основные требования к описанию схем.

1. Первая строка файла всегда пропускается или содержит

название.

2. Строка комментариев начинается со знака «*».

3. Каждое устройство унифицировано названием и соединено

электрической цепью.

4. Первая буква в названии устройства соответствует классу

устройств (R – резисторы, C – конденсаторы и т. п.).

Page 6: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

6

5. Название цепей состоит из букв алфавита, только цепь

заземления обозначается как 0.

6. Точка в начале строки означает управляющую директиву, как

правило, декларацию типа устройства.

7. Строка «.end» означает конец файла.

8. Хорошим стилем описания схем считается наличие названия

схемы и п.7.

9. Названия устройств, цепей (идентификаторов) не

чувствительны к регистру (NPN эквивалентно nPn).

10. Длинная строка переносится на следующую строку,

начинаясь с символа «+».

2. Пример выполнения лабораторной работы

Лабораторная работа № 1 «Моделирование принципиальной цифро-аналоговой схемы»

Схема (рис. 1) взята из источника [4], для транзистора КП505

(КП501А) использован импортный аналог BSS295 [5]. Разработанный

код описания схемы представлен в листинге 1 [3, 6].

Рис.1. Схема генератора на транзисторе КП501А

Page 7: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

7

*генератор на микросхеме SN74ALS00AN *и МОП-транзисторе BSS295

*определение источника питания

*постоянное напряжение 5В

v1 vcc 0 5v

*сопротивление на стоке

R3 vcc s 10k

*конденсатор C1

C2 vcc 0 0.1uf

*структура инвертора

*vdd — напряжение на сток

*vss — напряжение на исток

*in — вход инвертора

*out — выход инвертора

.subckt inv vdd vss in out

Mp1 vdd in out vdd pch l=0.35u w=20.0u

Mn1 vss in out vss nch l=0.35u w=10.0u

Cload out vss 100f

.ends

*объявление модели n МОП-транзистора

.MODEL nch NMOS

*объявление модели p МОП-транзистора

.MODEL pch PMOS

*сопротивление R4

R4 6 i 1.5k

Начало

Page 8: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

8

*сопротивление R1

R1 i 0 240

*модель микросхемы SN74ALS00AN

x1 vcc 0 s 3 inv

x2 vcc 0 3 6 inv

x3 vcc 0 6 8 inv

*сопротивление R6

R6 6 rout6 220k

*сопротивление R2

R2 rout6 z 40M

*конденсатор C1

C1 z 0 4.7uf

*определение МОП-транзистора BSS295

*s — сток

*z — затвор

*i — исток

MBSS295 s z i 0 Mx

* декларация модели МОП-транзистора

* VTO — пороговое напряжение открытия транзистора

* KP — крутизна характеристики прямой передачи (полевого транзистора)

.MODEL Mx NMOS (VT0=1.174 KP=2e-2)

*анализ

*1 – 1с, шаг сетки

*12 – 10с длительность моделирования

Page 9: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

9

.tran 1 10

.end

Листинг 1. Код описания схемы

Чтобы получить временные диаграммы, нужно выполнить

команду v(z) v(8) в веб-версии Ngspice [3], а в компьютерной программе

нужно выполнить следующие команды.

1. Запустить файл ngspice.exe.

2. Указать место хранения файла, описывающего работу

устройства, с помощью команды cd. Например,

«cd c:spicegenerator»

3. Загрузить описание в память компьютера с помощью команды

source. Например, source generator.cir.

4. Выполнить команду run.

5. Выполнить команду display.

6. Выполнить команду plot. Например, plot v(z) v(8).

Принципиальная схема с подписанными цепями представлена на

рис. 2, а временные диаграммы моделирования – на рис. 3.

Рис. 2. Подписанные цепи схемы в соответствии с кодом описания

vcc 

rout6

Окончание

Page 10: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

10

Рис. 3. Временная диаграмма моделирования работы схемы:

v(z) – напряжение на конденсаторе C1 и затворе транзистора VT1, v(8) – выход.

3. Порядок выполнения работы

Лабораторная работа № 1 «Моделирование принципиальной

цифро-аналоговой схемы»

Целью выполнения работы является освоение умений

моделирования принципиальных цифро-аналоговых схем.

Порядок выполнения работы.

1. Выбрать вариант принципиальной схемы.

v(8) 

v(z) 

Page 11: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

11

2. Разработать описание составных компонентов типа микросхем,

транзисторов и т. п.

3. Разработать код описания принципиальной схемы.

4. Выполнить моделирование, получить временные диаграммы в САПР

Ngspice или в веб-версии сервиса моделирования схем [3].

4. Контрольные вопросы 1. Что такое Ngspice и его назначение?

2. Каков состав Ngspice?

3. Назовите основные требования к описанию схемы в Ngspice?

4. Какие типы устройств поддерживает Ngspice?

5. Что является результатом моделирования?

5. Варианты заданий

Вариант 1

Принципиальная схема взята из журнала «Схемотехника», 2003

год, июнь, 19 страница.

Page 12: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

12

Вариант 2

Принципиальная схема взята из журнала «Схемотехника», 2003

год, май, 34 страница.

Вариант 3

Принципиальная схема взята из журнала «Схемотехника», 2003

год, февраль, 25 страница.

Page 13: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

13

Вариант 4

Принципиальная схема взята из журнала «Схемотехника», 2002

год, декабрь, 43 страница.

Вариант 5

Принципиальная схема взята из журнала «Схемотехника», 2002

год, ноябрь, 20 страница.

Page 14: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

14

Вариант 6

Принципиальная схема взята из журнала «Схемотехника», 2002

год, июль, 51 страница.

Вариант 7

Принципиальная схема взята из журнала «Схемотехника», 2002

год, июль, 22 страница.

Page 15: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

15

Вариант 8

Принципиальная схема взята из журнала «Схемотехника», 2002

год, июнь, 7 страница.

Вариант 9

Принципиальная схема взята из журнала «Схемотехника», 2001

год, январь, 38 страница.

Page 16: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

16

Вариант 10

Принципиальная схема взята из журнала «Схемотехника», 2001

год, июль, 2 страница.

Вариант 11

Принципиальная схема взята из журнала «Схемотехника», 2001

год, июль, 6 страница.

Page 17: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

17

Вариант 12

Принципиальная схема взята из журнала «Радио», 2000 год, март,

63 страница.

Вариант 13

Принципиальная схема взята из журнала «Радио», 2000 год, март,

31 страница.

Page 18: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

18

Вариант 14

Принципиальная схема взята из журнала «Радио», 2000 год, март,

28 страница.

Page 19: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

19

ЗАКЛЮЧЕНИЕ  

В ходе выполнения лабораторных работ студенты освоят

лучшие практики по моделированию принципиальных цифро-

аналоговых схем в САПР Ngspice, что повысит уровень их

квалификации и профессиональной зрелости. Персонализация задач

по вариантам улучшает качество процесса обучения.

Контрольные вопросы ориентированы на проверку

теоретических знаний студентов и формируют «методическое

мышление» по освоению проектных процедур моделирования схем.

Пример выполнения лабораторной работы дает исчерпывающую

информацию, «как» нужно разрабатывать модель описания схем.

Page 20: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

20

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. САПР ngspice. http://ngspice.sourceforge.net/download.html (дата обращения: 11.02.2013).

2. Документация к языку XSPICE. http://users.ece.gatech.edu/~mrichard/Xspice/Xspice_Users_Manual.pdf, http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/ (дата обращения: 11.02.2013).

3. САПР ngspice. http://www.ngspice.com (дата обращения: 11.02.2013).

4. Бутов, А. Генераторы на транзисторах КП501 / А. Бутов // Схемотехника. – №8. – 2002. — С. 27.

5. SPICE-модель BSS295 транзистора. http://www.datasheetarchive.com/BSS295-datasheet.html, http://www.datasheetarchive.com/files/spicemodels/misc/modelos/spice_complete/bss_l0.lib (дата обращения: 11.02.2013).

6. Руководство для начинающих к Spice3 и PSpice. http://seit.unsw.adfa.edu.au/staff/sites/hrp/teaching/docs/spicetutorial.pdf (дата обращения: 11.02.2013).

Page 21: Моделирование принципиальных цифро ...venec.ulstu.ru/lib/disk/2013/Voit2.pdfсхем в САПР Ngspice Методические указания к

21

Учебное электронное издание

ВОЙТ Николай Николаевич

МОДЕЛИРОВАНИЕ ПРИНЦИПИАЛЬНЫХ ЦИФРО-АНАЛОГОВЫХ СХЕМ В САПР NGSPICE

Редактор Н. А. Евдокимова

Усл. печ. л. 1,16. Объем данных 0,68 Мб. ЭИ № 52.

Печатное издание

Подписано в печать 11.02.2013. Формат 60×84/16. Усл. печ. л. 1,16. Тираж 50 экз. Заказ 148.

Типография УлГТУ, 432027, г. Ульяновск, ул. Сев. Венец, д. 32.

Ульяновский государственный технический университет 432027, г. Ульяновск, ул. Сев. Венец, 32.

Тел.: (8422) 778-113. E-mail: [email protected]

http://www.venec.ulstu.ru

I’ve recently finished some work with hspice, and now I don’t have access to the server. I’ve installed ngspice on my Fedora 15 machine, but I’m unfamiliar with how it works. In hspice, I was able to produce an output file with measured values and a set of waveforms that were plotted out with cosmosscope easily.

However, I’m unsure of how to do this in ngspice. Here’s some basic SPICE code:

Transient Response of a Linear Network

** Circuit Description **

* input signal source
Vi 1 0 SIN ( 0V 10V 60Hz )
* linear network
R1      1   2   1Ohm
C1      2   0   2.65mF
Rload   3   0   10Ohm
E1      3   0   2   0   10

** Analysis Request **
* compute transient response of circuit over three full
* periods (50 ms) of the 60 Hz sine-wave input with a 1 ms
* sampling interval
.TRAN 1ms 50ms 0ms 1ms

** Output Request **
* print the output and input time-varying waveforms
.PRINT TRAN V(3) V(1)
* plot the output and input time-varying waveforms
* set the range of the y-axis between -100 and +100 V
.PLOT TRAN V(3) V(1) (-100,+100)

.END

How to I get ngspice to output the values requested as well as plot the values requested AT ONCE?

UPDATE:
I’ve gotten more familiar with ngspice. It seems it was indeed able to output the data I wanted and it can plot data. However, I have to do this separately with different commands in the ngspice interpreter. I’m wondering how can I get ngspice to simply plot everything and output all the data in a single go. Here’s a picture of how it works:


Недавно я понял, что я не могу делать все легко в ngspice, главным образом потому, что анализ должен выполняться через переводчика. Я подумываю о переходе на новый симулятор SPICE.

Я хотел бы перечислить преимущества и недостатки следующих симуляторов SPICE, а также опыт работы с различными симуляторами:

HSPICE
LTspice
ngspice
PSpice

Я хорошо знаю, что HSPICE — это дорогой проприетарный симулятор, но я могу получить к нему доступ, проблема в том, что мне нужно будет получить к нему доступ через сервер через SSH.

LTspice уже бесплатна, но не установлена ​​на моем компьютере с Windows 7.

Уже использую ngspice в Fedora Linux.

PSpice доступен для меня на компьютерах моего университета. Я отказываюсь устанавливать его на свой компьютер, потому что он слишком сильно портится с реестром.



Ответы:


Я бы сказал, что это сильно зависит от того, для чего это нужно. Часто дорогие специи являются частью, например, инструмента для проектирования печатных плат. Я просто пробую MultiSIm от NI (дорогой инструмент типа orcad), и в нем есть много симпатичных виртуальных инструментов (например, анализатор искажений и т. Д.) И анализ Монте-Карло (который у LTspice нет «удобной» версии — у него есть некоторые функции, которые вы можете использовать, хотя, как указывает Влад, вот ссылка на их использование), но, если честно, я обнаружил, что 99% вещей, которые я мог бы сделать на LTspice.
Я считаю, что настройка LTspice является самой быстрой из всех, которые я пробовал, после того, как вы привыкнете к ключевым командам. R для резистора, D для диода, намного проще, чем щелкнуть изображение (или даже выбрать из всплывающего окна в случае MultiSims, аааа) и перетаскивать его в нужное место каждый раз.
Таким образом, вы можете сделать схему за считанные секунды .

Руководство не так хорошо , как, но вся информация , вам нужно это там о том , как использовать, например. команды .param, .step и .measure для выполнения таких операций, как многократный анализ и изменение параметров. Я просто попытался запустить анализ передаточной функции в MultiSim таким образом (то есть запустить время и изменить параметр, затем отобразить результаты), но, несмотря на то, что он часами считывал / боролся с ним, я не смог справиться с этим, но быстро добавил. шаг V2 -15 15 1, чтобы лист сделал это возможным в LTspice.
Я уверен, что некоторые из вышеперечисленных просто, поскольку я новичок в MultiSim, и, без сомнения, я что-то упустил (так как приведенный выше пример просто должен быть возможным в таком инструменте), и нет, я не работаю для LT: -) но это была единственная специя, которую я регулярно использовалза последние несколько лет. Суть в том, что он будет делать все обычные вещи так же хорошо (и, вероятно, быстрее), чем дорогие инструменты, но если вам нужны дополнительные функции (например, monte carle, анализ уровня PCB на основе реальных моделей маршрутизации / IBIS — Altium делает это превосходно ) и все обернуто в одном инструменте дизайна, тогда вам может понадобиться больше, чем если бы вы могли предложить
На мой взгляд, не так уж больно иметь вокруг себя, даже если вам все равно нужен более мощный инструмент.






Мой короткий ответ — просто использовать LTSpice, это один из лучших симуляторов на рынке и он бесплатный. Вы не можете победить это. Но если вы хотите срыва, не стесняйтесь читать мои личные мнения.

HSPICE:

  • Преимущества: HSPICE широко считается одним из самых точных тренажеров на рынке. Однако у меня нет реального опыта его использования.
  • Недостатки: Как вы сказали, это дорого, запатентовано, и, насколько я знаю, не имеет схематических функций захвата.
  • В целом: если вы ТРЕБУЕТЕ надежных результатов (военного или промышленного класса), то HSPICE — путь. Иначе я бы этого избежал.

LTSpice:

  • Преимущества: если вы занимаетесь силовой электроникой, этот тренажер настроен для имитации событий переключения, а также некоторых других вещей, которые делают его идеальным для этой области. Кроме того, он имеет (IMO) интуитивно понятный интерфейс и не пытается скрыть список соединений от вас. Плюс, это БЕСПЛАТНО.
  • Недостатки: Я не был осведомлен ни о каком, он не считается столь же точным, как HSPICE, но он ни в коем случае не является неточным.
  • В целом: это симулятор, который я бы предложил. Он прост в использовании, бесплатен и поддерживается гораздо более крупной компанией. (Линейная технология)

ngspice:

  • В целом: я не знаю достаточно о ngspice, чтобы дать полный обзор. Я только недавно загрузил его и все еще работаю над его компиляцией. Очевидно, вы обнаружили, что одним из недостатков является ограничение командной строки.

PSPICE:

  • Преимущества: Ну, это как можно ближе к оригинальной SPICE. PSPICE является мощным, имеет хорошо зарекомендовавший себя симулятор, встроенный просмотрщик результатов и обширную библиотеку моделей.
  • Недостатки: К сожалению, в последние годы он стал настолько раздутым, что его трудно рекомендовать. И, как вы, вероятно, хотели бы иметь его на своем компьютере, я бы поспорил, что это вне вашего ценового диапазона, если у вас нет 20 000 долларов.
  • В целом: мощный и устоявшийся, но быстро спускающийся. Дорогой.



У меня нет опыта работы с HSPICE, но я использую LTspice и NGSPICE очень часто. В моей области (силовая электроника) я наблюдал, как коллеги-инженеры активно отказываются работать с Pspice, поставляемым компанией, после контакта с LTspice.

К сожалению, LTspice является закрытым исходным кодом, не имеет возможности сценариев, и вы не можете добавить (свои) модели кода к нему. Когда вам нужны эти более продвинутые варианты (не так много людей заботятся), NGSPICE — путь. Это открытый исходный код, включает в себя XSPICE, KLU, open-mp и CUA, и имеет интерпретатор типа C-shell с очень продвинутыми возможностями (но IMHO ужасный пользовательский интерфейс). Он не имеет схематического ввода, но есть решения для этого (например, LTspice). NGSPICE можно использовать с gnuplot для очень удобного, программируемого графического вывода.



Недавно я сражался в той же битве, что и вы, пытаясь получить приличный пакет специй, и пребывание на машине с Linux определенно не помогло.

Я использовал NI Multisim в школе, и это фантастический интерактивный пакет SPICE. Мне нравится тот факт, что вы можете наблюдать за виртуальным прицелом и поворачивать горшок, чтобы увидеть реальные ответы. Недостатком этого метода является то, что он не совсем точен при работе с малыми сигналами и характеристиками формы сигнала в целом. Я все еще использую его, когда придумываю идеи схем, пока у меня не получится довольно хорошее представление о дизайне, а затем я перейду к лучшему пакету для тонкой настройки.

Лучший пакет, который я использовал для хардкорного SPICE, был SIMetrix . У них есть бесплатная версия, которая работает и на Linux. Это самый точный пакет, который я когда-либо использовал, и в нем есть все сложные опции, для понимания которых необходимо прочитать руководство несколько раз.

Вот примеры того, как я использую оба пакета. В Multisim я делал тестер транзисторов, и мне нужно было создать прямоугольную волну с выходом 0deg, 120deg, 240deg через шестнадцатеричный буфер Шмитта. Multisim проделал отличную работу и визуально загорелся светодиодами, как в реальной жизни, когда в цепь был включен транзистор. Я использовал SIMetrix, когда делал усилитель для звуковой системы, где уровень шума составлял> 100 дБ.


В дополнение к предыдущим ответам LTspice является отличным бесплатным программным обеспечением с ограниченными возможностями для цифровых компонентов: модели ibis не рассматриваются в качестве исключения, если вы владеете / разрабатываете / находите программное обеспечение.

ngspice обрабатывает файл ibis, а также симуляцию смешанного режима (Verilog-AMS + Spice), если вы устанавливаете компоненты ADMSXml. К сожалению, это расширение сложно установить и использовать (создать компонент / скомпилировать его / обновить / использовать).

Pspice, как дочь Каденса, очень могущественна и известна. Тем не менее, бесплатная версия допускает ограниченное количество компонентов и довольно медленная в повседневном использовании.

XSpice похож на многопоточные и совместно используемые процессы для ускорения моделирования.

Тогда вы также можете использовать TINA от Texas Instrument, которая бесплатна и позволяет в качестве LTspice немного дополнительной цифровой модели и модели ibis. Как дизайнеру вы должны часто обращать внимание на шум вашей схемы, и, к сожалению, только коммерческий хорошо поддерживает рассмотрение шума (Cadence, HSpice, UltraSim, … и Xspice).


Ngspice не ограничивается командной строкой. Можно включить блок сценариев в список соединений, который является довольно мощным.

Понравилась статья? Поделить с друзьями:
  • Инструкция по заполнению формы р14001 при смене руководителя
  • Ремонт 4216 руководство по ремонту
  • Руководство материально ответственных лиц
  • Руководство пользователя по программе старт
  • Руководство по эксплуатации прицела 1пн 140