设计
电路板规格、叠层与网络类
选择板厂和实际叠层,按网络类型定义网络类,并为其设置阻抗和电流目标,以便检查计算走线宽度。
电路板规格是设计中的第一个文件,也是其他所有内容检查的依据。它指定了板厂、叠层、轮廓、过孔类型和网络类。首先将其弄对:针对错误叠层布线的布局在所有受控线上都有错误的阻抗。
agentee new board sensor-node选择板厂
name = "sensor-node"
fab = "jlcpcb"fab 选择一个规则预设:generic、jlcpcb 或 hdi。预设是一个以铜层数、外层铜厚和表面处理为键的表格,因此四层 1 oz 电路板比两层 2 oz 电路板有更严格的走线规则。jlcpcb 的值逐行遵循 JLCPCB 的能力页面;规则参考 提供了每个值及其来源行,以及 agentee 故意更严格的少数地方。
在 [rules] 中覆盖任何规则:
[rules]
min_track_width = "0.15mm"
min_clearance = "0.15mm"选择实际叠层
不要输入层厚度。选择板厂自己的构建:
agentee stackups --fab jlcpcb --layers 4
agentee stackups --fab jlcpcb --layers 6 --thickness 1.6
agentee stackups JLC04161H-7628预设涵盖了 JLCPCB 从 4 层到 20 层、厚度 0.4 到 3.0 mm 的所有阻抗构建,PCBWay 从 4 层到 18 层的标准构建,以及两种通用 HDI 构建。JLCPCB 预设使用板厂自己的代码,JLC04161H-7628:层数、厚度、外层和内层铜厚、半固化片。最后一条命令打印某个预设的层及其厚度和介电常数。
agentee edit board sensor-node stackup --preset JLC04161H-7628 --finish ENIG用相同的构建下单电路板:如果 JLCPCB 使用其他叠层,你计算的所有阻抗都会偏差。
轮廓、开孔和孔
agentee edit board sensor-node outline --size 50,30 --corner-radius 1mm[[outline.cutouts]]
origin = [20, 12]
size = [6, 2]
corner_radius = 1 # half the width makes a slot轮廓是带有 size、origin 和 corner_radius 的矩形,或 points 多边形。开孔是穿过电路板的窗口、槽或大孔,所有关心边缘的对象(铜到边缘、焊盘、铺铜、布线器、仿真)都将开孔的边缘视为电路板边缘。布局文件中的开孔不同:它只阻止某些层上的铺铜进入某个区域。
过孔类型
[[vias]]
name = "std"
drill = "0.3mm"
diameter = "0.6mm"电路板可以列出多种过孔类型。通孔不需要其他信息;盲孔、埋孔和微孔需要 HDI 板厂,详见 HDI:微孔和压合。
网络类
网络类定义了网络是什么:其走线宽度、间距、过孔以及检查所依据的目标。为每种网络赋予自己的类。留在 Default 中的网络会触发警告,因为类决定了如何布线。
agentee edit board sensor-node class Signal --track-width 0.2mm --clearance 0.2mm --via std
agentee edit board sensor-node class Power --current 2A --max-temp-rise 10C
agentee edit board sensor-node class USB --impedance 90ohm --diff-gap 0.15mm --layers F.Cu
agentee edit board sensor-node class RF --impedance 50ohm --coplanar-gap 0.2mm --solver field --layers F.Cuclass 就地编辑该名称的类或添加它。目标的作用:
current在类可能使用的每一层上根据 IPC-2221 进行检查,在max_temp_rise(默认 10 C)下。内层承载的电流小于外层,检查会指出每层承载该电流所需的宽度:
error: blinky.board.toml: blinky netclass Power on In2.Cu: 0.6mm carries only 0.451A for a 10C rise, 1A needs 1.7994mm (IPC-2221)impedance在layers中的每一层上进行检查。省略track_width,检查会在第一层上求解;如果单一宽度不适用于所有层,请为每层提供widths。diff_gap使该类成为差分对,其阻抗为差分阻抗。coplanar_gap使其成为接地共面:铺铜在两侧保持该间距,下方有平面。solver = "field"使用 GPU 场求解器检查该类,包含阻焊和铜厚,而不是闭合公式。
查看叠层提供的结果
agentee check
agentee show board:sensor-nodeshow 以 JSON 打印解析后的电路板:对于每个类和层,走线几何结构(外层为微带,内部为带状线)、阻抗、满足目标的宽度及其承载的电流。当类偏离目标时,检查会说明偏差多少以及应使用什么:
error: lna.board.toml: lna netclass RF on F.Cu: field solver gives 59.4 ohm with solder mask, outside 50ohm +/- 5%, use track_width = "0.2985mm" (50.2 ohm)粘贴宽度,重新运行检查。受控阻抗和差分对 进一步说明。
设计规则设置
布局检查来自规则注册表,每条规则都有 id、类别和默认严重性。电路板可以关闭它们或更改其严重性:
[drc]
disable = ["silk-width"]
severity = { "starved-thermal" = "error", "via-in-pad" = "warning" }agentee drc NAME --list 打印每条规则及其是否适用于此电路板以及原因。设计规则检查参考 列出了所有规则。
检查清单
- 已设置
fab,且叠层preset是板厂实际构建的。 - 每种网络一个类:信号、电源、地、每种阻抗、每对差分。
- 类上的阻抗和电流目标,而不是手动计算的宽度。
- 在每欧姆都重要的类上使用
solver = "field"。 - 在原理图开始命名类之前,
agentee check无错误。