agentee

仿真

电路仿真

原理图网表的模拟仿真:工作点、交流、瞬态和噪声,包含运放、LDO 和器件模块以及检查。

直接从原理图的网络表进行模拟电路仿真:始终进行工作点分析,并在要求时进行 AC 扫描、瞬态和噪声分析。求解器是带牛顿迭代的改进节点分析(结限制,然后 gmin 步进,然后当工作点无法稳定时源步进),梯形积分,每个断点后向后欧拉法,牛顿失败时步长减半,工作点处的复数 AC,以及伴随方法噪声。agentee new sim NAME --kind circuit(MCP new_item 带 sim_kind = "circuit")写入起始文件。agentee sim NAME 写入 NAME.result.json;查看器绘制瞬态、增益、相位和噪声,旁边是工作点和检查,agentee render NAME 无头绘制相同内容。

name = "lna-supply"
kind = "circuit"
schematic = "lna"              # default: the only top-level schematic
ignore = ["D3"]                # parts to leave out
record = ["VCC", "LED_A"]      # nets in the curves, default every net
# temperature = 27             # deg C, for the noise and the junctions

[[drives]]                     # only drives drive a net: give every supply one
net = "VEXT"
dc = "5V"
# return = "VNEG"              # default ground
# current = true               # a current source into `net`, in A
# ac = 1                       # the AC and noise input, in V (or A)
# resistance = "50ohm"         # in series (in parallel for a current source)
steps = [["0s", "0V"], ["1ms", "0V"], ["2ms", "5V"]]   # piecewise linear, for the transient
# pulse = { low = "0V", high = "5V", delay = "1ms", rise = "1us", fall = "1us", width = "1ms", period = "2ms" }
# sine = { offset = "0V", amplitude = "1V", frequency = "1kHz", delay = "0s" }

[ac]
from = "10Hz"
to = "10MHz"
points = 20                    # per decade

[tran]
stop = "10ms"
step = "10us"                  # the largest step

[noise]
output = "OUT"
input = "VIN"                  # a drive with `ac`: adds the input referred curve
from = "10Hz"
to = "100kHz"

[[checks]]
v = "VCC"                      # a net voltage at the operating point
min = 4.55
max = 4.85

[[checks]]
i = "R1"                       # the current through a two-pin part, pin 1 to pin 2
at = "5ms"                     # a time reads the transient
min = "2mA"

[[checks]]
v = "OUT"
at = "1kHz"                    # a frequency reads the AC gain in dB against the ac drive
min = 19.5
# phase = "OUT"                # degrees at a frequency
# noise = "OUT"                # V/rtHz at a frequency, at the [noise] output

[[checks]]
thd = "OUT"                    # over the transient: peak, trough, rms, freq or thd
from = "2ms"                   # the span read, default the whole transient
# to = "10ms"
max = "1%"
# peak = "OUT"                 # highest voltage in the span; trough is the lowest
# rms = "OUT"                  # RMS about the span's mean, V
# freq = "OUT"                 # from the rising crossings of the mean, Hz

[[blocks]]                     # a model for a part, by `ref` or by `value` (every such part)
ref = "U1"
kind = "opamp"
gain = 1e5
gbw = "1MHz"
# rout = "10ohm"
# vos = "0V"
# en = "10n"                   # input voltage noise, V/rtHz
# headroom = "0.1V"            # how close the output swings to its rails
# headroom_high = "1.5V"       # per rail, default `headroom`
# headroom_low = "5mV"
# slew = "0.3V/us"             # slew rate, transient only
# ib = "-20nA"                 # input bias current, into each input pin
# psrr = "100dB"               # supply changes about the operating point, referred to the input
# fc = "100Hz"                 # 1/f corner of `en`
# pins = { inp = "3", inn = "2", out = "1", vcc = "8", vee = "4" }

[[blocks]]
ref = "RV1"
kind = "potentiometer"         # pins 1 and 3 are the ends, 2 the wiper
position = 0.25                # 0 puts the wiper at pin 1, 1 at pin 3; default 0.5
# resistance = "10k"           # the end to end value, default the part's value

thd 是相对于基波的 2 到 10 次谐波,以百分比表示,覆盖跨度内平均值的第一个和最后一个上升交叉之间的整个周期。freq 和 thd 需要那里至少一个完整周期。在电路稳定后开始跨度,否则启动步骤会被读作失真。

瞬态还存储每个记录网络后半段的频谱(Hann 窗,dBV,2048 个 bin),在查看器中绘制在瞬态下方。

以下内置器件模型是通用替代品(硅二极管、小信号 BJT、逻辑电平 MOSFET),而非原理图上的部件。为每个重要部件提供带有数据手册值的块,并将二极管的 is 和 n 拟合到其两个典型 VF 点:相隔一个数量级电流的两个点给出 n = dV / (Vt ln 10) 和 is = I / exp(V / (n Vt))。依赖于默认值的结果描述的是默认值,而非部件。

值采用 SI 前缀和单位:"4k7"、"100nF"、"1MHz"、"10meg",或裸数字。地是所有命名为 GND、0V、GROUND 或以 VSS 开头的网络,除非驱动源命名它。没有东西支撑的网络坐在到地的 1 pS 电导上。

网络表根据符号的参考字母变为元件:

参考元件
R该值的电阻;0 欧姆、JP、SJ 和 NT 连接其网络
C、L该值的电容、电感
FB0.1 欧姆,除非块给出更多
D、LED、DZ按引脚名称(A、K)的二极管:硅(Is 10 fA,n 1);符号或值带 Schottky、BAT 或 SS1 的是肖特基(10 nA,1.05);LED 是(1 aA,2);齐纳二极管从值获取击穿电压(BZX84C3V3 是 3.3 V),带 1 mA 膝点
带 B、C、E 引脚的 QEbers-Moll BJT,符号或值说明时为 PNP:Is 10 fA,Bf 100,Br 1
带 G、D、S 引脚的 Q、M带平滑阈值的 level 1 MOSFET,符号说明 PMOS 时为 P 沟道:Vth 1.5 V,k 0.5 A/V^2,lambda 0.01
J、P、TP、H、MH、FID、Y、X、SW、BT、T被排除
其他所有元件一个命名错误,除非它在 ignore 中或有一个块

块类型及其字段:

kind引脚(默认按名称)fields
resistor、capacitor、inductor、bead1、2resistance、capacitance、inductance
diode、schottky、zener、leda、kis、n、bv、cj
bjt、npn、pnpc、b、eis、bf、br、va、cje、cjc
mosfet、nmos、pmosd、g、svth、k、lambda、cgs、cgd
opampinp(+、IN+)、inn(-、IN-)、out(~、OUT)、vcc(V+、VCC)、vee(V-、VEE)gain、gbw、rout、vos、en、headroom
ldovin、vout、gndvout、dropout、rout、iq
vcvs、vccsp、n、cp、cn(全部给出)gain(V/V 或 A/V)
open将该元件排除在外

运算放大器是一个单极点:一个跨导进入一个节点,该节点具有 gain 欧姆的电阻和一个电容,使单位增益位于 gbw,然后是一个缓冲器,平滑地钳位在轨电压减去 headroom 之间(如果没有两个轨引脚,则不钳位),位于 rout 之后。增益节点在钳位稍远处停止,因此被削波的运算放大器会像真实器件一样,一旦输入要求它离开轨电压就立即离开,而不是缠绕起来。钳位及其 headroom 在两个轨上相同。多单元运算放大器中,具有三个信号引脚的每个单元都是其自身的运算放大器,共享轨引脚,输出通过名称找到,或者在没有名称时,作为该单元的唯一输出引脚。一个块覆盖元件的所有单元;对同一 ref 的第二个块是一个错误。LDO 保持 vout 高于 gnd,直到输入进入 dropout 范围内,然后跟随输入下降,输入提供输出电流加上 iq。

噪声源:电阻(4kT/R)、驱动电阻、二极管和双极型晶体管集电极和基极电流(2qI)、MOSFET 沟道(8kT gm / 3)以及运算放大器 en。结果包含输出密度、当设置 input 时的输入参考密度,以及频带内的均方根值。

失败的检查在仿真中是一个错误,同时结果是当前的;当规范或原理图的网表更改时,结果变为过期。examples/lna 包含两个:lna-supply,通过肖特基二极管将 5 V 输入或门连接到 U1 的偏置电流,以及 lna-biastee,偏置 tee 如何将射频输出上的信号与 VBIAS 隔离。两者都采用 U1 的 90 mA 静态电流和 BAT60A 的典型 VF,来自两份数据手册;没有零件号的 LED 被排除。examples/preamp 是一个通过所有分析运行的运算放大器设计:双 LM358 上增益级和 Sallen-Key 滤波器的工作点、增益和噪声,中轨偏置稳定时的上电冲击,削波,以及反向电池二极管。examples/ladder-vcf 是一个双极型晶体管梯形滤波器:其仿真检查指数转换器在三个 CV 下的 1 V/oct 跟踪、谐振峰,以及瞬态中的自激振荡。

docs/format.md · 面向智能体的 Markdown