agentee

设计

布局、布线与铺铜

自动布局、地和电源铺铜、平面连接、自动布线器、丝印标签、测试焊盘以及控制板厂制造文件包的设计规则检查。

PCB 布局将原理图的封装放置在电路板上并用铜连接它们。这里的每个命令都向 *.pcb.toml 写入普通条目,因此无论放置器或布线器做了什么,你或智能体之后都可以编辑。

agentee new layout NAME

在初始文件中添加 board 和 schematic。检查随后会报告所有尚未放置的元件。

放置

agentee place NAME
agentee render pcb:NAME -o placed.png

agentee place 是整块电路板的快速启动。按优先级排序,它会:

  • 将连接器放置在边缘,配合面朝外;如果存在其他分割方式,则不会将射频连接器和 USB 连接器放在同一边缘,因为 USB 3 的噪声会落入 2.4 GHz 频段;
  • 将射频路径从连接器到连接器拉成直线,并在节点旁放置并联元件;
  • 将大型芯片拉向中心,远离边缘和孔洞,因为拼板会在这些位置弯曲电路板;
  • 将每个集成电路的去耦电容聚集在其供电引脚旁,并将晶振放置在其时钟引脚旁;
  • 保持开关稳压器与晶振和射频元件相距 8 毫米,并将发热元件分开;
  • 将 0805 及更大尺寸的陶瓷电容排除在靠近边缘和孔洞的弯折区之外,并将小尺寸电容旋转以沿边缘方向放置;
  • 将每个元件转向其网络。

布局参考 提供了每条规则的来源。结果仅取决于文件和 --seed。

然后做一个人会做的事:查看它,移动重要的元件,并锁定它们。

agentee edit pcb NAME place J1 2.54,12 --rotation 180 --locked
agentee place NAME --keep-placed
agentee place NAME --seed 7
agentee place NAME --parts 'C*,R*'
agentee place NAME --side both

locked = true 的元件永远不会移动。--keep-placed 保留所有已有位置的元件,--parts 仅放置匹配的元件,--side both 允许去耦电容放置在背面 BGA 下方。[place] edges 在 PCB 布局中将连接器固定在边缘,keepouts 是占位区不得进入的多边形:

[place]
edges = { J1 = "left", J2 = "right" }
keepouts = [[[0, 0], [8, 0], [8, 6], [0, 6]]]

铺铜和平面

agentee edit pcb NAME zone GND --layers F.Cu,In1.Cu,In2.Cu,B.Cu
agentee edit pcb NAME zone 3V3 --layers In2.Cu --priority 1

铺铜区域填充其轮廓(默认为电路板)减去其他所有网络按间距扩展后的铜皮,形成带有圆角的精确多边形。比铺铜区域 min_width 更窄的颈部会被移除,就像板厂蚀刻那样,未连接到任何地方的孤岛会被丢弃。在单层上,铺铜区域按 priority 填充,因此板级地平面内的电源铺铜会绕开而不是短路到它。--pad-connection relief 用四个辐条连接焊盘,而不是实心铜皮。

填充在加载时计算并缓存。agentee fill NAME 将其存储在 PCB 布局文件末尾,因此新检出时无需重新填充即可加载。

将焊盘连接到其平面

agentee tie NAME

带有铺铜区域的网络是平面网络。tie 为平面网络的每个表面贴装焊盘添加一个短存根和旁边的过孔,位于远离元件的一侧,避开所有焊盘和其他网络。这是地和电源焊盘应到达平面的方式,而不是它们之间的走线。如果焊盘附近已有其网络的过孔,则保持不变;如果没有合法位置的焊盘,则列在 failed 下。

布线

agentee route NAME --nets 'USB_*,SPI_*' --layers F.Cu,B.Cu
agentee route NAME --nets '*'

布线器在 0.05 毫米网格上工作,并确保每个网络类的线宽、间距、层和过孔与现有所有内容保持一致。它以 45 度方向步进,对过孔和弯角收费,之后收紧走线,并将走线颈部收窄至比网络类线宽更窄的焊盘。没有自由路径的连接会拆除阻挡物,这些网络重新进入队列。

  • --nets 中的通配符永远不会匹配平面网络,因此 --nets '*' 会布线所有信号,并将地留给平面。
  • 现有铜皮永远不会移动,除非 --reroute 先删除指定网络的走线和过孔。
  • 当少数连接失败时,将它们与周围网络一起重新布线并使用 --reroute,或降至 --grid 0.025。
  • --pairs 在合适时将差分对布线为耦合对。
  • --via-in-pad 允许过孔位于其网络的表面贴装焊盘内部,填充并加盖。
  • --dry-run 报告但不写入。

先手动布线重要的网络:射频线、开关稳压器的高温环路、晶振。然后让布线器填充其余部分,一次一个网络类。

手动操作时,走线和过孔也是命令:

agentee edit pcb NAME track RF_OUT F.Cu 19.28,12 30.92,12
agentee edit pcb NAME via GND 7.2,8.9

走线必须进入焊盘。中心线仅擦过焊盘边缘的走线会被标记,即使铜皮接触。

缝合和扇出

[[stitching]]
net = "GND"
pitch = "2.5mm"

[[stitching]]
net = "GND"
fence = ["RF_*"]

[[fanouts]]
ref = "U3"
skip_rings = 2

[[stitching]] 在避开所有其他网络的地方按网格放置地过孔,或沿指定网络的走线放置一排过孔。[[fanouts]] 在 BGA 的每个连接焊盘中放置过孔,保留外圈用于顶层逃逸。两者都是规则:只要周围铜皮发生变化,过孔就会重新放置。agentee edit pcb NAME stitch GND --pitch 2.5mm 和 fanout U3 --skip-rings 2 写入它们。

丝印

检查会标记所有拥挤其他文本、位于焊盘或过孔上、或超出电路板边界的参考标号,并命名一个通过的位置。agentee silk 将它们全部移动到那里:

agentee silk NAME
agentee silk NAME --hide

--hide 隐藏无处可去的标号,通常是 BGA 下方的小型无源元件。

每块电路板还在丝印中携带 agentee vX.Y.Z-HASH,默认在底部。它需要约 23 乘 1.2 毫米的清晰条带;在小或拥挤的电路板上,为其腾出空间或自行设置 [watermark] at。没有它,板厂包会被拒绝。

测试焊盘

agentee testpoints NAME
agentee testpoints NAME --nets '3V3,*RST*' --side B --pitch 2.54

每块电路板都需要用于调试的探针访问和用于生产测试的弹簧针夹具。默认包括电源轨、地、复位、使能、电源良好、时钟和低速总线;开关节点和稳压器反馈有意排除。testpoints 为每个尚无访问的网络在原理图中添加 TP 元件,在探针侧靠近网络铜皮处添加 1 毫米焊盘,并布线一条走线到它。阻抗网络和差分对被跳过,因为存根会损害它们。

设计规则检查

agentee check --item pcb:NAME
agentee drc NAME
agentee drc NAME --list

check 运行所有规则;drc 仅打印 PCB 布局的规则诊断,每条以括号内的 ID 开头,--list 打印所有规则及其是否适用于此电路板。错误会阻止板厂包。警告和通知是实践而非板厂限制:除非设计给出理由,否则遵循它们,并将理由写入 DESIGN.md。

当 agentee show pcb:NAME 中每个网络的 unrouted 为 0 时,布线完成。

解开芯片引脚的纠缠

agentee pinswap NAME --part U3
agentee pinswap NAME --part U3 --write

pinswap 重新分配 FPGA 或 MCU 的可交换 I/O(同一 bank,对保持为对,时钟引脚保持在时钟引脚),以解开飞线,--write 重写原理图的引脚引用。

布局引擎

agentee layout NAME 按顺序运行布局引擎的配置阶段(约束、放置、访问、全局布线、详细布线、完成),并打印每个术语的分数及每个术语的最差违规者。--from、--to 和 --only 选择阶段。它比 place 和 route 更新;阶段及其设置在 PCB 布局的 [engine] 表中,查看器可以在窗口中当前状态下运行它们。

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