原理图与 PCB 布局
自动布线
agentee route、tie、tune 和 neck:保持网络类宽度、间距和过孔的网格布线,平面连接、等长匹配和缩颈。
agentee route NAME --nets 'FX_D*,SPI_*' --layers F.Cu,In2.Cu,B.Cu(MCP 中为 route)在网格上为指定网络的飞线布线(--grid,默认 0.05 mm),并将走线和过孔作为普通的 [[tracks]] 和 [[vias]] 追加到布局文件中,之后可以随意编辑。它对每个焊盘、走线、过孔、孔和板边保持各网络类的线宽、间距和 layers;按每种类过孔自身的焊盘、钻孔和层来确定所需空间(通孔放不下的地方可以放微孔,微孔也可以放在位于其他层的埋孔旁边);新过孔与所有跨度共享同一介质层的钻孔保持 min_hole_to_hole 的距离,其孔与其他网络的焊盘、走线和过孔保持 min_via_hole_to_copper 的距离;并让过孔避开所有网络(包括自身网络)的 SMD 焊盘:过孔铜不得接触焊盘(via-cuts-pad),孔与焊盘保持 min_hole_to_smd_pad(hole-to-smd-pad),除非 --via-in-pad(MCP 中为 via_in_pad)允许钻孔不大于 max_filled_via_drill 的过孔完全位于自身网络的 SMD 焊盘内。换层时使用该类过孔中跨度同时包含两层且代价最低的一个(如需从其他名称中选择,使用 --via uv-top,core 或 MCP 的 via;--via-cost 以走线长度 mm 计,默认 3,再乘以过孔的 cost);每个 45 度拐角计 --bend-cost mm 走线长度(默认 0.1,90 度为其三倍);除非给出 --reroute,否则绝不移动已有内容,给出该选项时会先删除指定网络的走线和过孔。找不到空闲路径的连接会拆除它将穿过的已布网络,以及其过孔孔会落入自身孔 min_hole_to_hole 范围内的已布网络(跨度共享同一介质层的孔),将该位置记为拥塞,并把这些网络放回队列。搜索沿 45 度方向前进,并为每个拐角计代价,因此路径是带 45 度拐角的直线段;之后用两段式 45 度折线收紧走线,剩余的 90 度拐角在间距允许处倒角。只有通向不在网格上的焊盘中心的引线可以是其他角度。当类线宽放不进末端焊盘时(比焊盘短边更宽,或离相邻焊盘太近而无法保持间距),走线会缩颈:类线宽走线在焊盘前停止,另一条带显式 width 的 [[tracks]] 条目直线进入焊盘中心,长度不超过类的 neckdown,宽度不小于 min_track_width。其宽度取类线宽、焊盘短边和能保持间距的最大宽度中的最小值,向下取整到 0.01 mm(若取整后低于该下限而未取整的宽度不低于它,则恰为 min_track_width);宽走线从焊盘向外第一个能以全宽保持间距的位置开始(对于比走线窄的焊盘,从焊盘外开始)。同一网络中相互接触的焊盘,例如由多个焊盘条目组成的散热焊盘,视为一个宽焊盘。用 --pairs 布线的差分对不会缩颈。已有新铜的网络,其连接从这些铜开始。全部布完后,每条使用过孔的已布连接会在其余保持不变的情况下逐层重试,若单层路径的长度不超过原长的 25% 加 1 mm,就替换原路径。然后,相邻且在彼此附近换层的平行连接,其过孔会沿各自的走线滑动到网格上的同一行或同一列,前提是该位置合规且连接长度不变(被 --pairs 固定的差分对各线以及有多条连接的网络保持不动)。带 max_vias 的接口中的网络会将走线(经过串联元件的整条通道上的所有网络)控制在该限制内:过孔过多的路径会先用代价更高的过孔重试,再尝试单层,两者都不行则给出原因并失败。差分对的第二个网络会按对间距被拉向其伙伴;--pairs 会先尝试把两半作为一条耦合走线一起布线。当少数连接失败时,用 --reroute 将它们与周围的网络一起重新布线,让布线器可以拆除并重新排序整个区域,或者降到 --grid 0.025。--dry-run 只报告不写入。先手工布好关键网络,再让布线器按类逐个完成其余部分。
具有 [[zones]] 条目的网络是平面网络。--nets 中的通配符永远不会匹配它,因此 --nets '*' 会布线所有没有铺铜的信号和电源,并将地留给平面;要使用走线布线该网络,请准确指定其名称。由 [[stitching]] 规则放置的过孔不是布线器的障碍:规则会在新铜皮周围再次放置它们。
agentee tie NAME [--nets GND] [--dry-run](MCP tie)通过短截线和焊盘旁的过孔,将平面网络的每个表面贴装焊盘连接到其铺铜覆盖的最近层,这是地和电源焊盘连接平面而非通过它们之间走线的方式。过孔位于焊盘远离元件中心的一侧,尽可能靠近:其铜与所有表面贴装焊盘(包括其自身的,因此无过孔入焊盘)保持间距,其孔与它们保持 min_hole_to_smd_pad 的距离,与其他孔保持 min_hole_to_hole 的距离,与其他网络保持 min_via_hole_to_copper 和网络类间距,与轮廓保持 min_copper_to_edge 的距离,且短截线在焊盘所在层上与其他网络保持间距。它尝试 16 个方向,最靠近向外方向者优先,最多超过焊盘 1.2 mm。如果焊盘边缘 0.8 mm 内已有其网络的过孔,则保持不变;通孔焊盘和 BGA 球(由 escape 处理)被跳过;没有合法位置的焊盘列在 failed 下。短截线和过孔作为普通的 [[tracks]] 和 [[vias]] 追加。
agentee neck NAME [--nets 'VBUS,RF_*'] [--taper] [--dry-run](MCP neck)收窄已有的铜皮。它查看指定网络(默认所有)中每条在其层上结束于其网络焊盘内的走线的两端,并选取比焊盘较小一侧更宽,或在其网络类 neckdown 长度(加一个走线宽度)内全宽破坏间距的走线。这样的末端会被切割:走线从切割点向外保持其宽度,一条带有明确 width 的新 [[tracks]] 条目从焊盘内的旧端点沿旧路径运行到切割点。收窄宽度是走线宽度、焊盘较小一侧和沿收窄段保持间距的最大宽度中的最小值,向下舍入到 0.01 mm(如上所述,精确为 min_track_width)。切割点是第一个以 0.01 mm 步进,全宽在接下来 neckdown 加一个走线宽度内保持间距的位置(对于比走线窄的焊盘,位于焊盘外);收窄段长度从不大于 neckdown,且从不小于 min_track_width,否则该末端会在 failed 下列出原因并保持原样。由多个同网络焊盘条目组成的相互接触的焊盘计为一个宽焊盘。--taper 通过短链逐步恢复宽度,而不是单个收窄段:在窄收窄段之后,最多还有两个条目,每个条目从收窄宽度到走线宽度的三分之一处,总长度不大于 neckdown(收窄段的三倍,最多)。铜皮只会变窄,因此不会出现新的间距错误;文件就地编辑(保留其他所有行),并刷新存储的铺铜填充。报告列出每个收窄段(走线索引、网络、焊盘、原因、宽度、长度、条目),并统计修改和添加的走线数量。
线对和长度规则也存在于 PCB 布局中:
[[pairs]] # optional: nets ending _P/_N, _DP/_DN, +/-, P/N in a class
p = "USB_DP" # with diff_gap are paired on their own
n = "USB_DN"
max_skew = "0.1mm" # or `max_skew` on the net class
[[match_groups]]
name = "ddr-dq0"
nets = ["DQ?", "DQS0_*"] # * and ? globs
tolerance = "0.5mm"
# target = "42mm" # default the longest member检查报告每对线对的偏斜量(以 mm 和 ps 为单位,基于该层的有效介电常数)、线对以错误间距运行的区段,以及并排长度占比低于 80% 的线对。匹配组指出哪个网络偏短或偏长及具体数值。穿过串联两引脚器件(如 USB 通道上的交流电容)的线对按端到端测量:其偏斜量是所连接所有线对偏斜量的总和,报告格式为 FX_TX1_P+SS_TX1_P/FX_TX1_N+SS_TX1_N。