agentee

设计

编写原理图

使用 agentee edit 处理元件、网络和网络类,批量命令,大型设计的图纸,以及捕获 VIL 和 VIH 之间分压器的信号电平检查。

在 agentee 中,原理图是元件列表和网络列表。网络是一个名称、一个网络类以及它连接的引脚。渲染原理图时,导线会自动绘制,因此电路的任何方面都不依赖于线条被拖拽到的位置。

name = "lna"
board = "lna"

[[parts]]
ref = "U1"
symbol = "SPF5189Z"
value = "SPF5189Z"
at = [66.04, 50.8]
rotation = 90
fields = { mpn = "Qorvo SPF5189Z" }

[[nets]]
name = "RF_OUT"
class = "RF"
pins = ["C2.2", "J2.1", "L3.1"]

board 指定电路板规格,网络类即来源于此。请首先设置它。

使用命令编辑

agentee edit sch 为您写入文件,保留其注释和布局,并检查所做的更改。在写入任何内容之前,它会拒绝不存在的引脚、符号或网络类,因此拼写错误永远不会变成新的网络。

agentee edit sch NAME add R1 R 10k --footprint R_0402_1005Metric --at 25.4,25.4
agentee edit sch NAME net VBUS C1.1 U1.7 --class Power
agentee edit sch NAME connect R1.2 FB
agentee edit sch NAME nc U2.3
agentee edit sch NAME note "FB divider sets 3.3 V"
agentee edit sch NAME --list
agentee edit sch help

命令包括 add、remove、move、set、net、connect、disconnect、nc、unnc 和 note。引脚格式为 REF.PIN,按编号(U1.3)或按唯一的引脚名称(U1.VCC)。多个引脚共用的名称,例如稳压器上两个接地引脚的 GND,是一个列出编号的错误。将引脚赋予其已所在的网络会将其移动到新的网络。

add 将元件放置在现有所有元件的右侧,位于 1.27 mm 网格上。--at X,Y 将其放置在其他位置并吸附到网格。--list 以 JSON 格式打印元件和网络,任何命令上的 --json 返回解析后的引脚和坐标。

批量操作

一次处理多个元件或网络时,将命令写成一个列表。一次加载,最后检查一次,因此中间半成品的状态永远不会被报告:

agentee edit sch - <<'EOF'
add U1 AP2112K-3.3 AP2112K-3.3 --footprint SOT-23-5
add C1 C 1u --footprint C_0402_1005Metric
add C2 C 1u --footprint C_0402_1005Metric
net VBUS U1.VIN U1.EN C1.1 --class Power
net 3V3 U1.VOUT C2.1 --class Power
net GND U1.GND C1.2 C2.2 --class Ground --style power
note "LDO, 600 mA"
EOF
added U1 (AP2112K-3.3)
added C1 (C)
added C2 (C)
VBUS now joins U1.1, U1.3, C1.1
3V3 now joins U1.5, C2.1
GND now joins U1.2, C1.2, C2.2
noted: LDO, 600 mA
warning: ./power.sch.toml: power part U1: body overlaps C1 (parts[1])
0 errors, 1 warnings in the files this touched

引脚名称解析为编号,输出会说明这一点。add 的第三个参数是值;没有默认值的符号需要一个值。

agentee edit sch build.txt 从文件执行相同操作。批量操作作用于项目拥有的单个原理图。如果有多个,请单独运行每个命令并指定原理图:agentee edit sch power add U1 AP2112K-3.3 AP2112K-3.3 --footprint SOT-23-5。

每个网络都有网络类

每个网络从电路板获取一个 class。位于 Default 中的网络是一个警告,无论它是否指定网络类或指定 Default,因为网络类决定了其在电路板上的线宽、间距、过孔和布线顺序。为每种网络类型设置一个网络类:Signal、Power、Ground、Clock、RF,以及每一对。

--style power 使用接地或电源符号而不是导线绘制网络,--style label 使用网络标签绘制。

未连接引脚

未包含在任何网络中的引脚会被报告。故意留空的引脚放入 no_connect:

agentee edit sch NAME nc U2.7 U2.8

电源轨和信号电平检查

为逻辑和 MCU 符号提供来自数据手册的 [levels] 表(参见元件),并为原理图提供 rails 表:

rails = { GND = 0, "3V3" = [3.25, 3.35], VBUS = [4.75, 5.25] }
analog = ["U1.13"]

检查随后计算每个具有电平的输入在最坏情况电源轨和电阻容差(除非元件有 tolerance 字段,否则为 1%)下看到的电压,通过所有状态的开关,开集输出关闭和低电平,内部下拉和输入漏电流。当输入出现以下情况时,这是一个错误:

  • 可能位于 VIL 和 VIH 之间,例如落在中间的分压器,
  • 没有任何东西将其连接到电源轨而处于悬空状态,
  • 由于通过过弱的下拉电阻的漏电流,被移出有效电平,
  • 可能超过其 min 或 max。

在阈值 100 mV 范围内是一个警告。列在 analog 中的输入由 ADC 读取,因此仅适用其限值。如果网络上存在检查无法建模的内容,例如输出或连接器,则跳过而不是猜测。

图纸

超过几十个元件后,为每个部分提供独立的原理图,并在顶层原理图中列出它们。PCB 布局放置顶层原理图。

name = "sdr"
board = "sdr"
sheets = ["power", "fpga", "rf", "usb"]

每张图纸是一个普通的原理图文件。网络通过名称跨图纸连接,因此每张图纸上的 3V3 是一个网络。网络的引脚必须位于列出它们的图纸上,引用在整个设计中是唯一的,跨图纸的网络在指定网络类时必须使用相同的网络类。单独的图纸跳过单引脚和 Default 网络类警告,因为网络的其余部分可能在别处;顶层原理图对合并后的设计运行所有检查。

手绘导线

省略 wires,agentee 会路由它们。如果您想要特定的绘图,为网络提供自己的 wires = [[[x, y], [x, y]], ...],检查会验证它们到达每个引脚且不接触其他网络。

查看它

agentee render sch:NAME -o sch.png
agentee show sch:NAME

show 打印每个引脚的位置,这是智能体将一个元件放置在另一个元件旁边所需的信息。

检查报告的内容

位于两个网络中的引脚、未位于任何网络中的引脚、单引脚网络、一个网络上的多个输出、未到达引脚或接触其他网络的手绘导线、重叠的元件、焊盘未覆盖符号引脚的封装、位于 Default 中的网络,以及设置 rails 时的信号电平。

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