agentee

原理图与 PCB 布局

接口

链路必须满足的条件,从 USB 3 到 50 欧姆射频线:阻抗、偏斜、长度、过孔、残桩、参考平面和回流过孔。

接口规定了链路必须满足的条件,而检查则测量铜层是否符合这些条件:阻抗、偏斜、长度、过孔、过孔残桩、每条走线下方的参考平面、回流过孔、总线时序,以及模拟该接口的仿真结果的 S 参数和眼图。

[[interfaces]]
name = "usb-ss"
preset = "usb3-gen2"           # usb3-gen1, usb3-gen2, usb2-hs, lvds, rf-50, cmos
nets = ["SS_TX*", "SS_RX*"]    # globs; differential presets pair them up, through series parts
# differential = true
# impedance = "90ohm"          # the member classes' targets must sit inside this
# impedance_tolerance = "7%"
# max_skew = "5mil"            # within each pair, a length or a time ("1ps")
# max_length = "3in"           # end to end, through series parts
# max_vias = 2                 # per trace
# max_stub = "15mil"           # the via barrel past the last layer the trace uses
# max_unreferenced = "0.5mm"   # total run with no plane of `reference` under it
# reference = ["GND"]
# return_via = "200mil"        # a reference via this close to every signal via

[[interfaces]]
name = "ad-rx"
preset = "cmos"
nets = ["AD_P1_D*", "AD_RX_FRAME", "AD_DATA_CLK"]
clock = "AD_DATA_CLK"          # a pair's clock is named by either leg
max_bus_skew = "30ps"          # spread of arrival across the data lines
clock_window = ["-50ps", "150ps"]   # data minus clock arrival, from the setup and hold budget

[[interfaces.measure]]         # read from a finished sim; missing or stale results are errors
sim = "sdr-usb"                # an FDTD run
pair = ["TX1_FX+", "TX1_FX-", "TX1_J+", "TX1_J-"]   # IN+, IN-, OUT+, OUT-; or through = [IN, OUT]
up_to = "5GHz"                 # Nyquist, the band the limits apply over
max_loss = 1.5                 # dB, worst Sdd21 (or S21) in the band
min_return_loss = 10.0         # dB, worst Sdd11
max_mode_conversion = -30.0    # dB, worst Scd21

[[interfaces.measure]]
sim = "sdr-usb-eye"            # a channel sim
min_eye_height = "70mV"
min_eye_width = "0.47UI"       # or ps

[[interfaces.measure]]
sim = "i2c-bus"                # a logic sim: no limits, it passes when the sim passes

逻辑仿真上的测量在仿真存在任何失败时(断言、竞争、时序违规或停止的运行)会失败,并指明数量和第一个失败项;当仿真的规格或原理图网表发生变化时,该测量变为过期状态,正如仿真本身所报告的那样,而不是当铜层变化时,因为逻辑仿真永远看不到 PCB 布局。

预设阻抗偏斜过孔残桩其他
usb3-gen1、usb3-gen290 欧姆 +/-7% 差分5 密耳215 密耳长 3500 / 3000 密耳,GND 回流过孔在 200 密耳内,0.5 毫米无参考
usb2-hs90 欧姆 +/-10% 差分50 密耳4长 12000 密耳,1 毫米无参考
lvds100 欧姆 +/-10% 差分1 毫米无参考
rf-5050 欧姆 +/-10%00.5 毫米无参考
cmos2 毫米无参考平面

USB 数值来自 TI 的高速接口布局指南(SPRAAR7J,附录 A),Gen 2 长度来自 congatec AN37。预设设置的任何内容,接口都可以覆盖。

延迟是每条走线从其所在层的有效介电常数产生的延迟,加上信号穿过的过孔桶。平面在以下情况下计为参考:从走线向外走,越过切出层后,找到的第一个铜层是覆盖走线全宽的 reference 网络的铺铜区域;该网络自身过孔周围的反焊盘不计入。每个仿真结果都记录其所见铜层的哈希值(仅仿真的 region,加上叠层);如果铜层自记录以来已改变,则该结果过期,对其进行的测量会失败。

agentee tune NAME(MCP tune)修复这些问题:对于每对超过其偏斜限制的走线,以及每个未达到目标长度的匹配组成员,它会在最短的一侧进行蛇形走线,在其最长的直线段上,串联链的任何位置,使用保持其他所有网络间距和板边规则的凸起,并将新点写入走线。--nets 限制范围,--amplitude 限制凸起高度,--pitch 固定凸起间距(默认三个走线宽度,如果空间允许则更紧密)。对于一对中的一条腿,它首先凸起那些腿已经分开的部分(分支和弯曲,不匹配来源),并且永远不会让该腿与其伙伴并排运行超出网络类间隙;耦合段只接受足以清除该对的凸起。接口也计入,既按时间也按长度:一对超过其 max_skew(皮秒)时,较短的一侧按该延迟延长;对于 max_bus_skew 和 clock_window,时钟延长直到最新的数据线落入其窗口内,且每条短于总线扩展或窗口早边缘的数据线延长到最新的一条(在窗口内),一对的两条腿一起处理。延迟按每个网络自身的皮秒/毫米转换为毫米。当一对中的一条腿无法容纳全部延迟时,另一条腿保持其已获得的长度。超过其组目标长度的网络会被报告,而不是缩短。agentee calc serpentine --from x,y --to x,y --add 2.5mm(MCP serpentine)返回您在选定段上生成的一个此类蛇形走线的点。网络长度和延迟在 agentee show pcb:NAME 中显示。

查看器的 PCB 布局页有一个 3d 选项卡(agentee view --3d 在此打开):电路板以其叠层厚度、阻焊和丝印颜色及表面处理显示,阻焊下的铜层,裸露焊盘,镀层和裸露钻孔壁,以及每个元件的 3D 模型。parts 切换隐藏模型。拖动以旋转,Shift+拖动以平移,滚动以缩放,双击以重置。查看器使用 OpenGL(three-d)绘制;agentee render pcb:NAME --show 3d(或 3d-top、3d-bottom)在软件中绘制相同场景,--hide parts 省略模型,--region 将相机对准该区域。

docs/format.md · 面向智能体的 Markdown