
1. 这个问题到底在问什么——先搞清楚“keepout layer”不是万能胶布刚接触 Altium Designer 的工程师尤其是从其他EDA工具转过来的看到“Keepout Layer”第一反应往往是“哦这是画禁止布线区的图层跟机械层、丝印层一样画个框就能拦住走线和过孔。”结果一上手就发现不对劲明明只在顶层画了个 Keepout 区域底层的走线照样穿过去铺铜也照常覆盖甚至有些器件封装的焊盘还被自动避开了——这哪是“禁止”简直是“选择性失明”。其实“Keepout Layer”这个名字本身就带点误导性。它不是物理意义上的阻隔层也不是像 Mask 层那样直接参与光绘输出的制造图层它本质上是一组设计规则的视觉化载体更准确地说是“设计规则约束的几何表达界面”。你画在 Keepout Layer 上的任何图形矩形、多边形、圆弧Altium 并不会自动把它变成“禁区”而是需要你明确告诉软件“这个图形我要用它来约束哪几类对象在哪些层上生效作用范围是全局还是局部”所以标题里那个“只对顶层生效”的诉求背后真正要解决的是一个典型的规则作用域精细化控制问题。它不涉及安装、下载、缓存清理这些环境配置层面的操作也不依赖 AI 生成原理图这种新功能而是 Altium 设计规则引擎Design Rule Engine最基础、也最容易被忽略的核心能力之一。很多用户卡在这里不是因为软件不会而是因为没找到规则引擎的“开关位置”。我见过太多项目因为这个理解偏差导致反复返工PCB 已经布到 80%突然发现某个敏感区域的底层走线不该穿过只能手动一根根挪开或者临时加铺铜挖空结果又引发阻抗不连续、散热不均等问题。后来复盘才发现最初只要在 Keepout Layer 上画完图形后花 30 秒去设置一下规则作用域后面所有操作都会自动合规。关键词“Altium Designer”“keepout layer”“Top Layer”组合起来指向的不是一个操作按钮而是一条完整的规则链路图形绘制 → 规则绑定 → 层级限定 → 实时校验。漏掉其中任意一环Keepout 就只是张好看的“装饰画”。2. 核心设计思路拆解为什么不能“默认只对顶层生效”Altium Designer 的设计哲学是“规则驱动”而不是“图层驱动”。这意味着软件默认把 Keepout Layer 视为一个中立的几何容器它本身不携带任何电气或物理属性。你画上去的线条就像白纸上画的草图只有当你把它“注册”进设计规则系统并明确指定其约束对象和作用范围它才真正开始工作。2.1 “默认全局生效”是安全冗余设计为什么 Altium 不让 Keepout Layer 默认只对顶层生效这不是偷懒而是工程安全逻辑的体现。试想一个典型场景你在顶层画了一个矩形 Keepout目的是防止顶层信号线靠近某个高频模块。但如果这个 Keepout 只约束顶层底层的电源平面铺铜是否该避开底层的接地过孔是否该绕行如果底层铺铜紧贴这个区域下方可能形成寄生电容破坏高频隔离效果。Altium 的默认策略是只要没明确说“只限某层”那就按最保守方式处理——所有相关对象都纳入约束范围。这个“相关对象”包括所有信号层Top Layer, Bottom Layer, Mid1–MidN所有内电层Plane Layers所有过孔Via所有焊盘Pad所有覆铜Polygon Pour换句话说Keepout Layer 的默认行为是“全层通用型禁令”它像一张大网兜住所有可能影响设计意图的物理对象。你要做的不是去“关闭”它对其他层的影响而是主动收窄这张网的捕捞范围。2.2 “只对顶层生效”的本质是规则过滤“只对顶层生效”这个需求翻译成 Altium 的内部语言就是“请将此 Keepout 图形所定义的禁止区域仅应用于 Top Layer 上的 Track走线、Arc圆弧、Fill填充和 Polygon覆铜对象且不作用于 Via、Pad、Plane Layer 或其他信号层。”这就引出了关键路径Keepout Layer 图形 → Design Rule → Query查询条件→ Scope作用域。其中Query 是核心过滤器它用类似 SQL 的语法精准描述“哪些对象需要被这条规则管住”。比如IsTrack And OnLayer(Top Layer)这条语句的意思是“所有类型为 Track走线且位于 Top Layer顶层的对象”。它比单纯勾选“Top Layer” checkbox 更可靠因为 checkbox 可能受规则优先级或层级继承关系干扰而 Query 是硬编码的匹配逻辑执行无歧义。2.3 为什么不用 Mechanical Layer 或其他图层替代有人会问既然 Keepout Layer 默认太宽泛那我直接画在 Mechanical Layer 上再手动设置规则不行吗理论上可以但实操中会踩三个坑规则绑定复杂度飙升Mechanical Layer 没有内置的 Keepout 规则模板你需要从零创建一条新规则手动指定所有约束参数最小间距、允许对象类型等而 Keepout Layer 对应的规则Placement、Routing、Plane是预置好的开箱即用。设计意图模糊化Mechanical Layer 通常用于标注、尺寸、装配信息。把电气约束画在这里后续同事或第三方审图时一眼看不出这是“禁止布线区”容易误删或忽略违反 PCB 设计文档的可读性原则。DRC 校验逻辑错位Altium 的 DRC 引擎对 Keepout Layer 有专门优化校验速度更快、报错更精准。用 Mechanical Layer 模拟DRC 可能无法识别其约束意图导致漏报或误报。所以坚持用 Keepout Layer不是守旧而是利用 Altium 已验证的、最稳定的规则执行路径。3. 核心细节解析与实操要点四步锁定顶层作用域现在进入实操环节。整个过程分四步每一步都有明确目的和易错点我按实际操作顺序展开不跳步、不省略。3.1 第一步确认 Keepout Layer 图形已正确绘制这是所有后续操作的前提。很多人卡在第一步却以为是规则设置问题。必须使用 Keepout Layer 专用工具绘制在 PCB 编辑器中确保当前工作层切换为Keepout不是Mechanical 1或Top Overlay。使用Place → Line或Place → Solid Region绘制。注意Solid Region是推荐方式因为它生成的是闭合多边形DRC 校验更稳定Line画的开放路径Altium 有时会忽略其内部区域。图形必须闭合且无重叠用Tools → Convert → Convert Selected Polygons to Solid Regions检查并修复。常见错误是画了四条线围成矩形但起点终点没精确重合形成微小缺口或多边形自相交导致内部区域识别失败。Altium 会在状态栏提示Invalid Polygon务必修复。坐标原点对齐很重要如果 Keepout 图形是从其他文件复制粘贴过来的检查其坐标是否在合理范围内比如 X/Y 都在 -100mm 到 100mm 之间。超出板框范围的图形部分版本 Altium 会静默忽略其规则绑定。提示画完后按快捷键CtrlShiftH打开“Board Insight”面板输入IsKeepout看是否高亮显示你画的图形。如果没反应说明图形没画在 Keepout Layer 上或类型不是 Keepout。3.2 第二步打开设计规则编辑器定位 Keepout 规则这是最关键的一步也是最容易迷路的地方。Altium 的规则编辑器Design → Rules有上百条规则Keepout 相关的分散在多个类别下。不要在“Manufacturing”或“Testpoint”里找Keepout 约束属于电气和布局范畴正确路径是Design → Rules...左侧树状菜单展开Placement→Room Definition错这是给元器件分组用的正确路径是Routing→Routing Restrictions→Restrict Routing这是针对走线的同时还要检查Plane→Polygon Connect Style如果涉及铺铜避让以及Design Rules→Object Kind→Keepout这是最底层的通用规则重点锁定Restrict Routing规则这是实现“只对顶层生效”的主战场。双击它进入规则编辑对话框。你会看到Name: 规则名称如Restrict_Top_Keepout建议自定义别用默认名Scope: 作用域定义这里就是我们要动手的地方Constraints: 约束参数如Minimum Clearance设为 0 即可Keepout 本身不定义间距值只定义“禁止存在”注意Restrict Routing规则默认是“Enabled”但它的 Scope 默认是All也就是全局生效。我们接下来要把它改成只针对 Top Layer 的特定对象。3.3 第三步编写精准 Query限定作用对象和层这是技术含量最高的一步。Query 语法是 Altium 规则系统的灵魂写错一个括号或引号整条规则就失效。基础语法结构(ObjectKind Track) AND (OnLayer(Top Layer))这是最简形式表示“所有在 Top Layer 上的走线”。为什么要用ObjectKind而不是IsTrackIsTrack是一个布尔函数返回 True/False但它不能单独作为 Scope 使用ObjectKind Track是标准的属性匹配语法兼容性更好且支持多条件组合。完整覆盖“只对顶层生效”的所有对象你画的 Keepout 区域通常需要约束三类对象走线Track信号线、跳线圆弧Arc常用于高频匹配线覆铜Polygon顶层铺铜避免覆盖敏感区对应的 Query 应写为(ObjectKind Track) OR (ObjectKind Arc) OR (ObjectKind Polygon) AND (OnLayer(Top Layer))但这里有个陷阱AND的优先级高于OR上面的写法实际等价于(ObjectKind Track) OR (ObjectKind Arc) OR ((ObjectKind Polygon) AND (OnLayer(Top Layer)))这会导致 Track 和 Arc 无层限制正确写法必须加括号强制分组((ObjectKind Track) OR (ObjectKind Arc) OR (ObjectKind Polygon)) AND (OnLayer(Top Layer))验证 Query 是否有效在规则编辑对话框的 Scope 区域点击右侧的Query Helper按钮放大镜图标粘贴你的 Query点击Check Syntax。如果提示Valid Query再点击Run Query看下方预览窗口是否高亮显示了你期望的顶层走线、圆弧和覆铜。如果没高亮说明 Query 有误逐字检查引号、括号、大小写Top Layer必须完全匹配不能写成TOP LAYER或top layer。3.4 第四步关联 Keepout 图形与规则并启用这一步是“临门一脚”让图形和规则真正挂钩。在规则 Scope 中选择Advanced (Query)模式不要选Whole Board或Net必须选Advanced (Query)然后把上一步验证好的 Query 粘贴进去。关键操作启用Rule Priority并设为最高在规则列表底部找到Rule Priority滑块。把这条Restrict_Top_Keepout规则拖到最顶端Priority 1。为什么因为 Altium 的规则引擎是“优先级驱动”的当多个规则冲突时高优先级规则胜出。如果你的 Keepout 规则优先级低于默认的Clearance规则DRC 可能只报 Clearance 错误而忽略 Keepout 禁令。最后务必勾选Enabled复选框很多人设置完 Query 就以为完成了忘了最下面的Enabled是默认未勾选的。Altium 的 UI 设计有点反直觉——规则编辑窗口打开时Enabled状态是灰色的需要手动点击一次才能激活。注意设置完成后按F9重新铺铜如果用了 Polygon或Tools → Design Rule Check运行 DRC。此时你应该看到顶层走线自动绕开 Keepout 区域底层走线不受影响过孔可以自由穿过铺铜在顶层被挖空而底层铺铜保持完整。4. 实操过程与核心环节实现从零开始的完整演示下面我以一个真实项目为例带你走一遍从新建 Keepout 到 DRC 验证的全流程。假设我们要在一块 4 层板的顶层为一个 2.4GHz WiFi 模块划定一个 10mm×15mm 的禁止布线区要求只影响顶层走线和铺铜不影响底层电源和地平面。4.1 创建 Keepout 区域耗时约 45 秒切换工作层为Keepout快捷键L然后用方向键选择Keepout回车。按P → L放置直线或P → S放置实心区域。我推荐P → S点击起点比如坐标X50mm, Y30mm输入10mm,0mm向右画 10mm输入0mm,15mm向下画 15mm输入-10mm,0mm向左画 10mm输入0mm,-15mm向上画 15mm回到起点按Esc结束。选中这个区域右键Properties确认Layer是KeepoutNet是No NetKeepout 不能分配网络。4.2 创建并配置 Restrict Routing 规则耗时约 2 分钟Design → Rules...左侧展开Routing→Routing Restrictions双击Restrict Routing。点击Add New Rule 号重命名为WiFi_Top_Keepout。在Scope区域点击Advanced (Query)打开 Query Helper。粘贴 Query((ObjectKind Track) OR (ObjectKind Arc) OR (ObjectKind Polygon)) AND (OnLayer(Top Layer))点击Check Syntax→Valid Query再点Run Query确认预览窗口高亮了顶层相关对象。在Constraints选项卡Minimum Clearance设为0milKeepout 不定义间距设 0 表示“绝对禁止”。拖动Rule Priority到最顶端Priority 1。勾选Enabled。4.3 关联图形与规则关键一步耗时 10 秒这一步常被忽略但它是让 Keepout “活起来”的开关回到 PCB 编辑器选中你画的 Keepout 区域。按F11打开Properties面板。找到Rule字段下拉菜单中选择你刚创建的WiFi_Top_Keepout。如果下拉菜单为空说明规则没保存或没启用返回规则编辑器检查。实测心得Altium 22 及以后版本这个Rule字段有时会显示为None即使规则已创建。此时不要反复点击下拉菜单而是直接在字段中手动输入规则名称如WiFi_Top_Keepout然后按回车。Altium 会自动识别并绑定。这是新版 UI 的一个隐藏交互逻辑。4.4 DRC 验证与实时反馈30 秒内确认效果Tools → Design Rule Check...勾选Routing类别下的Restrict Routing运行 DRC。查看报告应该出现类似Clearance Constraint (Between Track and Keepout)的错误且只针对顶层对象。实时验证在顶层手动放置一条走线尝试拖入 Keepout 区域。你会发现当走线端点进入区域时光标变成红色禁止符号⛔走线自动吸附到区域边界无法穿越切换到底层同样操作走线可以自由穿过——证明“只对顶层生效”已生效。4.5 高级技巧用 Query 实现“动态作用域”上面的方法是静态绑定适用于固定区域。但在高速设计中有时需要 Keepout 区域随元件移动而自动更新。这时可以用更智能的 Query((ObjectKind Track) OR (ObjectKind Arc) OR (ObjectKind Polygon)) AND (OnLayer(Top Layer)) AND (InsideArea(50mm,30mm,60mm,45mm))InsideArea(X1,Y1,X2,Y2)函数定义了一个矩形区域左下角 X1,Y1右上角 X2,Y2。这样即使你删除了 Keepout Layer 上的图形只要 Query 中的坐标正确规则依然生效。适合做模板化设计或在早期布局阶段快速占位。5. 常见问题与排查技巧实录那些让你抓狂的“为什么不起作用”在上千次 Altium 项目实战中我总结出以下 7 个最高频、最隐蔽的问题。它们不源于软件 Bug而是源于对规则引擎底层逻辑的误解。每个问题都附带我的现场排查记录和独家解决技巧。5.1 问题一Keepout 图形画了DRC 却不报错走线照样穿过现场记录客户发来截图Keepout 区域清晰可见但顶层走线毫无阻碍。DRC 报告里完全没有 Restrict Routing 相关错误。排查路径第一步按CtrlShiftH输入IsKeepout发现图形没高亮 → 图形画在了Mechanical 1层不是Keepout层。第二步确认是Keepout层后Properties面板中Rule字段为空 → 忘记绑定规则。第三步绑定规则后仍无效 → 规则Enabled未勾选或Rule Priority太低被其他 Clearance 规则覆盖。独家技巧Altium 有一个隐藏调试命令在 PCB 编辑器中按~键波浪号英文输入法打开命令行输入PCB:ShowRuleViolations回车。这会强制刷新所有规则违例并高亮显示。如果此时仍无高亮说明规则根本没触发问题一定出在 Scope Query 或 Enabled 状态上。5.2 问题二底层走线也被禁止了明明 Query 写了OnLayer(Top Layer)现场记录Query 语法检查通过Run Query 也高亮了顶层对象但 DRC 报错显示底层走线违规。根本原因OnLayer(Top Layer)只约束对象所在的物理层但Via过孔是跨层对象。一个 Via 的顶部在 Top Layer底部在 Bottom Layer中间贯穿所有层。OnLayer(Top Layer)会匹配 Via 的顶部导致整个 Via 被禁止。解决方案在 Query 中显式排除 Via(((ObjectKind Track) OR (ObjectKind Arc) OR (ObjectKind Polygon)) AND (OnLayer(Top Layer))) AND (NOT (ObjectKind Via))或者更彻底的做法为 Via 单独创建一条高优先级规则允许其穿过 Keepout 区域。5.3 问题三铺铜Polygon没被挖空还是覆盖了 Keepout 区域现场记录走线绕开了但顶层铺铜像一堵墙直接盖住了 Keepout 区域。原因分析Polygon Pour 的行为由两套规则控制Plane → Polygon Connect Style控制铺铜如何连接到焊盘热焊盘、直连等Routing → Routing Restrictions → Restrict Routing控制铺铜是否能在某区域生成但Restrict Routing默认不约束 Polygon除非你在 Query 中明确包含ObjectKind Polygon并且必须重新铺铜。实操步骤确认 Query 包含ObjectKind Polygon。选中铺铜右键Polygon Actions → Repour Selected。如果仍无效检查铺铜的Net是否与 Keepout 区域的Net冲突Keepout 必须是No Net。注意Altium 22 引入了Polygon Pour Over Keepout选项默认是Enabled这会导致铺铜无视 Keepout。必须在Tools → Preferences → PCB Editor → Board Insight中取消勾选Allow Polygon Pours to Overlap Keepout Objects。5.4 问题四规则设置了但只对新画的走线有效已有的走线没反应现场记录新布的线绕开 Keepout但之前布好的线还在里面DRC 也不报错。真相Altium 的 DRC 是“增量校验”默认只检查新修改的对象。已有走线属于“历史遗留”需要手动触发全量检查。解决方法Tools → Design Rule Check...在Run Test选项卡勾选Online DRC下的Online和Batch Mode。点击Run Design Rule Check确保Batch Mode被执行。或者更简单选中所有走线Edit → Select → All Tracks然后按CtrlRRe-routeAltium 会自动按新规则重布。5.5 问题五Keepout 区域边缘有“毛刺”走线在边界处抖动现场记录走线靠近 Keepout 边界时光标跳变走线自动吸附到奇怪的位置像有磁力干扰。根源Keepout 图形的顶点精度不足。Altium 内部用浮点数计算如果图形顶点坐标是50.001mm和50.002mm这种非整数会导致边界判定模糊。终极修复选中 Keepout 区域右键Properties。在Vertices表格中手动将所有 X/Y 坐标改为整数如50mm,30mm。或者用Tools → Convert → Make Orthogonal强制所有边线为水平/垂直。5.6 问题六多层板中内电层Plane也被禁止了现场记录4 层板Keepout 只想管 Top Layer但内电层如 GND_Plane的铺铜也被挖空。原因Restrict Routing规则默认约束所有ObjectKind而 Plane Layer 的铺铜在 Altium 内部也归类为Polygon对象OnLayer(Top Layer)对它无效因为它不在 Top Layer。正确做法为内电层创建独立规则Scope Query 设为(ObjectKind Polygon) AND (OnLayer(GND_Plane))然后在Constraints中Minimum Clearance设为一个合理的值如10mil而不是0。这样内电层铺铜会与 Keepout 保持间距而不是被完全挖空。5.7 问题七规则生效了但 DRC 报错信息看不懂全是代码现场记录DRC 报告里显示Violation: Clearance Constraint (Between Track and Keepout)但不知道具体是哪条线、哪个 Keepout。高效定位技巧在 DRC 报告窗口双击某条错误Altium 会自动跳转到违规位置并高亮相关对象。按CtrlShiftR打开PCB Filter面板输入IsTrack AND IsViolation回车。这会筛选出所有违规的走线方便批量检查。最狠的一招在Tools → Preferences → PCB Editor → Board Insight中勾选Show Violation Details in Status Bar。这样当你把鼠标悬停在违规走线上时状态栏会直接显示Violates: WiFi_Top_Keepout一目了然。6. 经验延伸Keepout Layer 的进阶用法与设计哲学掌握了“只对顶层生效”你已经跨过了入门门槛。但真正的高手会把 Keepout Layer 当作一个设计意图的“声明式编程接口”而不仅仅是画框子的工具。6.1 用 Keepout 实现“设计意图文档化”在大型项目中Keepout Layer 是比文字注释更可靠的文档。比如在Keepout层上用不同颜色的线画出RF_Sensitive_Area红色、Thermal_Vent_Zone蓝色、Mechanical_Clearance绿色。每个区域旁用Place → Text添加文本如RF Zone: No traces 10mil width。导出 PDF 时Keepout Layer 默认不显示但你可以单独导出Keepout层的 PDF作为《PCB Layout Constraints Guide》发给 layout 工程师。这样设计约束不再是藏在规则文件里的抽象代码而是直观可见的图形化协议。6.2 Keepout 与差分对、等长线的协同高速设计中Keepout 常与差分对规则联动。例如为 USB 3.0 差分对在Keepout层画一个1.5mm宽的通道。创建规则((ObjectKind Track) AND (InNetClass(USB_DP_DN))) AND (OnLayer(Top Layer))。再创建一条高优先级Width规则强制该 NetClass 的走线宽度为0.15mm。这样Keepout 定义了“空间走廊”Width 规则定义了“线径规格”两者结合确保高速信号路径的完整性。6.3 避免过度使用 Keepout 的三个红线单板 Keepout 区域不超过 5 个太多 Keepout 会让规则引擎负担加重DRC 时间变长且增加维护成本。优先用Room或Net Class管理复杂约束。Keepout 区域内禁止放置任何焊盘Pad即使你写了NOT (ObjectKind Pad)Altium 仍可能在 DRC 中报错。焊盘是电气连接点必须由Placement规则管理Keepout 只管走线和铺铜。不用于替代正确的层叠设计如果某个区域需要严格隔离靠 Keepout 画框是治标。根本解法是优化层叠Stackup比如增加屏蔽层、调整介质厚度。Keepout 是“战术规避”层叠是“战略防御”。我在一个 12 层服务器主板项目中曾用 23 个 Keepout 区域强行管控结果 DRC 每次耗时 8 分钟团队抱怨不断。后来重构为 3 个Room 2 个Net ClassDRC 降到 45 秒且设计意图更清晰。工具是死的人是活的永远记住Keepout 是辅助不是主角。最后分享一个小技巧Altium 的Keepout层支持导入 DXF 文件。如果你的结构工程师提供了精确的机械外壳 DXF直接File → Import → DXF/DWG选择Keepout层导入就能一键生成符合机械边界的禁止区域。这比手动描点快 10 倍且零误差。