agentee

Моделирование

Симуляция схемы

Запуск аналоговой части схемы из ее списка цепей: рабочая точка, переменный ток, переходные процессы и шум, с моделированием операционных усилителей и диодов по их датаситам и проверкой результатов.

Симуляция цепи запускает аналоговую часть схемы напрямую из её netlist: рабочую точку всегда, а AC-развёртку, переходный процесс и анализ шума, когда спецификация их требует. Топология платы не нужна, поэтому она отвечает на вопросы, которые решают схему: лежит ли смещение там, где должно, каково усиление на 1 кГц, где выход клиппирует, насколько громкий шипение.

Начните с одного

agentee new sim preamp-ac --kind circuit

Пример preamp прогоняет операционный усилитель на 9 В через все анализы. Вот его AC и шумовой прогон, сокращённый:

name = "preamp-ac"
kind = "circuit"
schematic = "preamp"
record = ["VCC", "VREF", "GAIN_OUT", "FILT_OUT", "OUT"]

[[drives]]
net = "VBAT"
dc = "9V"

[[drives]]
net = "IN"
ac = 1
resistance = "100ohm"

[ac]
from = "1Hz"
to = "1MHz"
points = 20

[noise]
output = "OUT"
input = "IN"
from = "20Hz"
to = "20kHz"

[[checks]]
v = "VREF"
min = 4.1
max = 4.3

[[checks]]
v = "OUT"
at = "1kHz"
min = 18.3
max = 19.3

[[checks]]
noise = "OUT"
at = "1kHz"
max = "500n"

[[blocks]]
ref = "U1"
kind = "opamp"
gain = 1e5
gbw = "0.7MHz"
en = "40n"
vos = "3mV"
headroom_high = "1.5V"
headroom_low = "5mV"
agentee sim preamp-ac
agentee render sim:preamp-ac -o preamp-ac.png

Прогон записывает preamp-ac.result.json рядом со спецификацией, с рабочей точкой каждой цепи, током через каждый компонент, каждой проверкой и её значением, и кривыми записанных цепей. Просмотрщик и render строят усиление, фазу и шум.

Источники

Цепь питает только источник, поэтому дайте каждому питанию один. Источник это источник напряжения к земле, или к цепи в return, с resistance в последовательном соединении. current = true делает его источником тока, так preamp снимает статический ток операционного усилителя с его шины. ac помечает вход для AC и шумовых анализов. Для переходного процесса источник принимает steps (кусочно-линейный), pulse или sine.

Земля это все цепи, названные GND, 0V, GROUND или начинающиеся с VSS.

Анализы

  • Рабочая точка: всегда. Итерация Ньютона с ограничением переходов, затем gmin stepping, затем source stepping, если она не сходится.
  • AC: [ac] развёртка от from до to с points на декаду, линеаризованная в рабочей точке. Усиления в дБ относительно источника ac.
  • Переходный процесс: [tran] работает до stop с step как максимальным шагом. Он также хранит спектр каждой записанной цепи за её вторую половину.
  • Шум: [noise] даёт плотность на output и, с input, входную приведённую кривую, плюс RMS по полосе. Резисторы, токи переходов, каналы MOSFET и en операционного усилителя все вносят вклад.

Проверки

Проверка читает одно число и держит его между min и max. Что она читает, зависит от at:

проверкачитает
v = "NET"напряжение в рабочей точке
v = "NET", at = "5ms"напряжение в переходном процессе
v = "NET", at = "1kHz"AC-усиление в дБ
phase = "NET", at = "1kHz"фаза в градусах
noise = "NET", at = "1kHz"плотность шума в В/корень Гц
i = "R1"ток через двухвыводной компонент, от вывода 1 к выводу 2
peak, trough, rms, freq, thdпереходный процесс между from и to

Проверка, которая не проходит, это ошибка симуляции. Поднимите проверку на 1 кГц выше до min = 19, и прогон упадёт, а agentee check сообщит об этом как об ошибке, пока этот результат актуален:

error: ./preamp-ac.sim.toml: preamp-ac result: v(OUT) at 1kHz is 18.7870 dB, wanted 19 to 19.3 dB

Результат устаревает, когда меняется спецификация или netlist схемы: проверка помечает его как устаревший и отбрасывает его ошибки, пока симуляция не запустится снова, поэтому перезапускайте симуляцию после каждого изменения цепи. Начинайте диапазон thd или freq после того, как цепь установится, иначе шаг запуска читается как искажение.

Модели берутся из даташита

Каждый компонент становится элементом по его обозначению: R, C и L по значению, D как диод, Q как BJT или MOSFET по именам выводов. Разъёмы, контрольные точки, отверстия и кварцевые резонаторы исключаются, а всё остальное является ошибкой, пока для него нет блока или пока оно не находится в ignore.

Встроенные элементы, это универсальные заменители: кремниевый диод, малосигнальный биполярный транзистор, MOSFET логического уровня. Результат, который опирается на один из них, описывает заменитель, а не вашу деталь. Для каждой важной детали создайте запись [[blocks]] со значениями из её даташита:

  • Операционные усилители, это однополюсная модель с gain, gbw, rout, vos, en, ib, slew, psrr и плавным ограничением headroom от каждого источника питания. Каждый канал двойного или четырёхканального усилителя, это отдельный операционный усилитель на общих шинах питания.
  • Диоды принимают is и n. Подберите их по двум типовым точкам VF, отличающимся на порядок по току: n = dV / (Vt ln 10), затем is = I / exp(V / (n Vt)).
  • Биполярные транзисторы и MOSFET принимают is, bf, va или vth, k, lambda и их ёмкости.
  • Линейные стабилизаторы удерживают vout, пока вход не приблизится к dropout, после чего следуют за ним вниз.
  • Подстроечные резисторы принимают position от 0 до 1, поэтому ползунок нагружает и нагружается так же, как в реальной детали.

Укажите в description симуляции даташит и таблицу, из которой взято каждое значение. Следующий, кто прочитает результат, часто агент, будет знать, на что он опирается.

Примеры

  • examples/preamp: рабочая точка, усиление и шум каскада усиления и фильтра Саллена-Кея на LM358, щелчок при включении, клиппинг и диод защиты от обратной полярности.
  • examples/ladder-vcf: транзисторный лестничный фильтр, симуляции которого проверяют отслеживание 1 В/октава при трёх управляющих напряжениях, пик резонанса и самовозбуждение в переходном процессе.
  • examples/lna: lna-supply проверяет OR-соединение двух входов питания через диоды Шоттки, а lna-biastee показывает, сколько СВЧ-мощности bias tee пропускает на шину питания.

Все ключи описаны в справочнике по цепям.

Улучшить это руководство · Markdown для агентов