agentee

仿真

电路仿真

从原理图的网表运行模拟部分:工作点、交流、瞬态和噪声,运放和二极管根据其数据手册建模,并对结果进行检查。

电路仿真直接从原理图的网表运行模拟部分:每次都会计算工作点,并在规范要求时进行交流扫描、瞬态和噪声分析。无需 PCB 布局,因此它可以回答决定原理图的问题:偏置是否位于正确位置,1 kHz 时的增益是多少,输出在哪里削波,噪声有多大。

开始一个

agentee new sim preamp-ac --kind circuit

前置放大器示例 通过所有分析运行 9 V 运算放大器前置放大器。这是其交流和噪声运行,已精简:

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 使其成为电流源,这是前置放大器从电源轨上取走运算放大器静态电流的方式。ac 标记交流和噪声分析的输入。对于瞬态分析,驱动源接受 steps(分段线性)、pulse 或 sine。

地是所有命名为 GND、0V、GROUND 或以 VSS 开头的网络。

分析

  • 工作点:始终运行。使用结限制的牛顿迭代法,然后是 gmin 步进,如果无法收敛则使用源步进。
  • 交流:[ac] 从 from 到 to 扫描,每十倍频程 points 个点,在工作点处线性化。增益以 dB 表示,相对于 ac 驱动源。
  • 瞬态:[tran] 运行到 stop,step 为最大步长。它还存储每个记录网络后半部分的频谱。
  • 噪声:[noise] 给出 output 处的密度,以及带有 input 时的输入参考曲线,加上频带内的均方根值。电阻、结电流、MOSFET 沟道和运算放大器 en 均会贡献。

检查

检查读取一个数值,并将其保持在 min 和 max 之间。读取的内容取决于 at:

检查读取
v = "NET"工作点处的电压
v = "NET",at = "5ms"瞬态中的电压
v = "NET",at = "1kHz"以 dB 为单位的交流增益
phase = "NET",at = "1kHz"以度为单位的相位
noise = "NET",at = "1kHz"以 V/rtHz 为单位的噪声密度
i = "R1"通过两引脚元件的电流,从引脚 1 到引脚 2
peak、trough、rms、freq、thdfrom 和 to 之间的瞬态

检查失败是仿真中的错误。将 1 kHz 检查的上限提高到 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

当规范或原理图的网表更改时,结果会过期:检查会将其标记为过期,并在仿真再次运行前丢弃其失败项,因此在每次更改电路后重新运行仿真。在电路稳定后开始 thd 或 freq 跨度,否则启动步骤会被读取为失真。

模型来自数据手册

每个元件根据其参考字母变为一个元素:R、C 和 L 按值,D 作为二极管,Q 作为 BJT 或 MOSFET,按其引脚名称。连接器、测试点、孔和晶体被排除在外,其他任何内容在具有块或位于 ignore 中之前都是错误。

内置器件是通用占位模型:一个硅二极管、一个小信号 BJT、一个逻辑电平 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))。
  • BJT 和 MOSFET使用 is、bf、va 或 vth、k、lambda,以及它们的电容。
  • LDO 保持 vout 不变,直到输入电压降至 dropout 范围内,然后跟随输入电压下降。
  • 电位器使用 0 到 1 之间的 position,因此滑片的负载和受载情况与真实器件一致。

将数据手册以及每个数值来源的表格放入仿真的 description 中。下一个阅读结果的人(通常是智能体)就能知道结果基于什么。

示例

  • examples/preamp:基于 LM358 的增益级和 Sallen-Key 滤波器的静态工作点、增益和噪声,开关接通时的低频冲击、削波以及反接电池二极管。
  • examples/ladder-vcf:晶体管梯形滤波器,其仿真验证了三个控制电压下的 1 V/oct 跟踪、谐振峰以及瞬态中的自激振荡。
  • examples/lna:lna-supply 检查通过肖特基二极管对两个电源输入进行或运算,lna-biastee 检查偏置 tee 允许多少射频信号进入电源。

所有键都在电路参考中。

改进此指南 · 面向智能体的 Markdown