资讯详情

资讯详情

ShortNetRouting 自动布线在 Allegro 中的 SKILL 实现:从 DesignForClines 到可复用配置

1. 短网络自动布线为什么总在手工试错里打转ShortNetRouting 是 Allegro PCB Router 里针对短网络做自动布线的一套 SKILL 实现思路核心能力是自动识别板上焊盘间距较小的短线网络过滤掉已铺铜的电源、差分对和已走好的线路然后按设定的距离阈值分批布线。它适合谁适合手里有大量 0402/0201 小器件、BGA 扇出后残留一堆 100~500mil 短连接、又不想一个个手动画线的 PCB 设计工程师。说白了它把哪些网络值得自动布、布多长、布完怎么审这件事从人脑记忆变成了一份可重复执行的配置。我在实际项目里见过太多这样的情况一块 6 层板DDR 周边和电源模块附近散落着两三百条短网络手工布线一条条点布完还得回头检查有没有压焊盘、有没有超出间距。更麻烦的是换个人接手布线风格完全不一样返工率居高不下。ShortNetRouting 的价值就在于把短网络这个模糊概念量化成 Rat length 阈值把布哪些变成 Name filter 加左右列表框的显式选择把布完怎么办变成高亮加人工审核的固定动作。但很多人第一次用会卡在几个地方SKILL 脚本加载报错、DesignForClines 约束入口找不到、Run mode 选 SKILL 算法还是 PCB Router 自带算法分不清、布完发现电源网络也被布了。这篇就按问题场景 → 前置准备 → 可复制配置 → 验证动作 → 报错排查 → 长期使用的顺序把这条流程走通。需要说明的是TaoToken 在这里的角色是统一 Key/API 通道方便你把布线脚本、参数模板、验证记录这些工程资产通过一套接口管理起来不是替代 Allegro 本身。官网入口 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end API 地址 https://taotoken.net/api 后面配置片段里会用到。先明确一个认知ShortNetRouting 不是一键布完整板的魔法按钮。它的设计哲学是分步、可控、可回退。第一步只布 200mil 或 5mm 以内的短线布完高亮让你审审完没问题再放到 300mil 或 7.5mm个人建议最长到 500mil 或 12.5mm 就收手再长布线质量会明显下降。这个分批放阈值的节奏才是它比全自动布线更靠谱的地方。下面从环境准备开始一步步给你能直接抄的配置。2. TaoToken 前置把 Key、Base URL、Model ID 三件套备齐在动 SKILL 脚本之前先把 TaoToken 的接入信息准备好。这一步不是走形式因为后面你要把布线参数模板、验证日志、甚至脚本版本说明通过 API 通道做统一管理Key 和 Base URL 填错后面所有自动化记录都白搭。我试过在 console 里建 Key 的时候顺手把项目名写清楚比如allegro-shortnet-prod后面排查哪个项目用了多少额度一目了然。具体操作路径打开 https://taotoken.net/api 对应的控制台入口进 API Keys 页面新建一个 Key。新建时注意两点一是权限范围按最小必要给只做配置管理和日志上报的话不要开过高权限二是 Key 生成后立刻复制保存页面刷新后不再完整显示。Base URL 统一用https://taotoken.net/api不要自己拼路径。Model ID 按你实际调用的模型填配置片段里我用占位符your-model-id你替换成控制台里看到的真实 ID。三件套对照表如下建议直接抄进你的工程笔记配置项值说明Base URLhttps://taotoken.net/api固定不加多余路径API Keysk-开头的一串console 里生成只显示一次Model ID控制台实际 ID不要凭记忆手写如果你只是本地跑 SKILL 脚本、暂时不需要 API 记录这一步可以先跳过但建议还是把 Key 建好因为后面第五节的排错和第六节的长期流程都会用到。需要看模型能力或做对话验证的走模型对话入口长期做编码类、Agent 类任务的走 Coding Plan 更划算纯排障和接入问题直接看接入文档和 API Keys 页面。这几个入口在官网导航里都能找到deep link 带 utm 参数方便归因你手动访问时去掉参数也不影响使用。这里提醒一个容易踩的坑有人把 Base URL 写成带/v1的完整路径结果请求 404。正确做法是 Base URL 只到/api具体端点由 SDK 或请求路径拼接。另一个坑是 Key 复制时带了首尾空格导致 401粘贴后肉眼看不出来建议用编辑器显示不可见字符检查一遍。这两点后面第五节还会结合真实报错再讲一遍。3. 可复制配置SKILL 脚本结构、DesignForClines 入口与参数映射这一节是全文的技术核心给你能直接落地的配置片段。ShortNetRouting 的 SKILL 实现大致分四块网络收集与过滤、Rat length 阈值判定、布线执行、结果高亮与回退。DesignForClines 是约束入口负责把哪些网络允许自动布、布多宽、什么间距这些规则喂给布线引擎。参数映射的关键是把界面上的 Rat length、Run mode、Name filter 翻译成脚本里的变量。先看一份可复制的 SKILL 配置骨架保存为shortnet_cfg.il路径放在你的工程 skill 目录下比如D:\Cadence\SPB_Data\pcbenv\skill\;; shortnet_cfg.il - ShortNetRouting 参数配置骨架 ;; 用法在 Allegro 命令行 load(shortnet_cfg.il) shortnetParams makeTable(shortnetParams nil) shortnetParams[ratLengthStep1] 200.0 ; 单位 mil第一步阈值 shortnetParams[ratLengthStep2] 300.0 ; 第二步阈值 shortnetParams[ratLengthStep3] 500.0 ; 第三步阈值建议不超过 500mil shortnetParams[runMode] SKILL ; SKILL 或 PCBRouter shortnetParams[nameFilter] GND,VCC,DDR ; 过滤关键字逗号分隔 shortnetParams[filterPoured] t ; 过滤已铺铜电源网络 shortnetParams[filterDiffPair] t ; 过滤差分对 shortnetParams[filterRouted] t ; 过滤已走线网络 shortnetParams[highlightAfterRun] t ; 布完高亮供审核 shortnetParams[maxNetsPerBatch] 50 ; 单批最多处理网络数防卡死这份骨架里每个键都对应界面上的一个控件ratLengthStep1/2/3对应 Rat length 输入框的分步值runMode对应 Run mode 下拉nameFilter对应 Name filter 输入框filterPoured/filterDiffPair/filterRouted对应三个过滤开关highlightAfterRun对应布完高亮maxNetsPerBatch是我加的保护项防止一次布太多网络把 Allegro 卡住。接着是 DesignForClines 约束入口的配置。DesignForClines 本质是一组物理约束规则告诉布线引擎短网络允许的线宽、间距、过孔策略。下面这段是 TOML 风格的约束模板你可以按自己板厂的工艺能力改数值# designforclines_shortnet.toml [shortnet] line_width_mil 6.0 clearance_mil 6.0 via_drill_mil 12.0 via_pad_mil 24.0 max_via_count 2 allow_layer_change true [shortnet.filter] exclude_poured true exclude_diff_pair true exclude_routed true name_keywords [GND, VCC, DDR, CLK] [shortnet.batch] step1_mil 200.0 step2_mil 300.0 step3_mil 500.0 max_nets_per_batch 50如果你更习惯 JSON 格式等价写法如下方便通过 API 通道上报或做版本管理{ shortnet: { line_width_mil: 6.0, clearance_mil: 6.0, via_drill_mil: 12.0, via_pad_mil: 24.0, max_via_count: 2, allow_layer_change: true, filter: { exclude_poured: true, exclude_diff_pair: true, exclude_routed: true, name_keywords: [GND, VCC, DDR, CLK] }, batch: { step1_mil: 200.0, step2_mil: 300.0, step3_mil: 500.0, max_nets_per_batch: 50 } } }参数映射关系要讲清楚否则你改了配置不知道影响哪里。line_width_mil映射到 DesignForClines 里的线宽约束短网络一般 5~8mil 够用太细良率差太粗挤不下。clearance_mil映射到间距约束和板厂最小间距对齐。max_via_count控制短网络最多打几个孔短连接打太多孔反而增加寄生参数。name_keywords就是 Name filter 的底层实现界面输入框里填的关键字最终落到这个数组。step1/2/3_mil对应 Rat length 分步阈值max_nets_per_batch对应我加的保护项。Run mode 的选择也有讲究。选SKILL走脚本自带算法优点是过滤逻辑完全可控、可复现缺点是布线质量依赖脚本实现选PCBRouter走 Allegro 自带布线引擎质量通常更好但过滤和分步控制要额外写胶水代码。我的建议是短网络密集、过滤规则复杂的板子先用 SKILL 模式跑通流程确认过滤没问题后再切 PCBRouter 模式提升质量。两种模式共用同一份 DesignForClines 约束切换时不用改约束文件。配置加载顺序不能乱先 load 约束文件再 load 参数骨架最后调主程序。顺序错了会出现参数未定义或约束未生效。下面这段是加载和调用的示例放在run_shortnet.il里;; run_shortnet.il - 加载配置并执行 load(designforclines_shortnet.toml) ; 实际用对应解析函数 load(shortnet_cfg.il) ;; 调用主程序传入参数表 shortnetRun(shortnetParams)注意designforclines_shortnet.toml是数据文件SKILL 里要用对应的解析函数读不同版本函数名可能不同以你本地文档为准。参数表shortnetParams是全局的主程序shortnetRun从里面取值这样你改阈值只改一处。4. 验证请求与成功结果一次完整布线动作加结果比对配置写完不算完必须跑一次完整验证确认识别对了、布对了、能回退。这一节给你一套可重复的验证动作包含请求构造、执行、结果比对和回退。验证的核心思路是先小范围跑比对网络数量和布线前后差异确认无误再放大。第一步构造一次最小验证请求。在 Allegro 命令行里先只选 10 条短网络把maxNetsPerBatch临时改成 10ratLengthStep1保持 200milRun mode 用 SKILL。执行前记录当前板子的已布线网络数用 SKILL 取一下;; 记录布线前状态 beforeRoutedCount length(setof(x axlDBGetDesign()-nets x-routes)) printf(布线前已布网络数: %d\n beforeRoutedCount)第二步执行布线并捕获返回结果。主程序应该返回一个结果表包含处理网络数、成功数、失败数、高亮网络列表。如果你用的脚本没有返回值就在主程序末尾自己加一段统计;; 执行并统计 result shortnetRun(shortnetParams) printf(处理网络: %d, 成功: %d, 失败: %d\n result-processed result-success result-failed)第三步结果比对。布完高亮后用肉眼加脚本双重检查高亮的网络是不是都在 200mil 阈值内、有没有电源网络混进来、有没有压焊盘。脚本侧可以统计布线后网络数增量和预期对比;; 布线后比对 afterRoutedCount length(setof(x axlDBGetDesign()-nets x-routes)) delta afterRoutedCount - beforeRoutedCount printf(新增布线网络: %d, 预期不超过: %d\n delta shortnetParams[maxNetsPerBatch])如果 delta 明显大于预期说明过滤没生效电源或差分对被布了立刻回退。回退用界面上的 Delect 按钮对应功能脚本侧就是删除本批自动布的线。建议每次执行前先存一个 .brd 快照回退最稳的方式是直接回滚快照比逐条删线可靠。第四步放大验证。小批 10 条没问题后把maxNetsPerBatch恢复到 50ratLengthStep1保持 200mil 跑整板第一步高亮审核。审核通过后改ratLengthStep2为 300mil 跑第二步再审核。第三步 500mil 视情况决定要不要跑短网络特别多的板子跑完三步基本能清掉大部分残留。成功结果的判定标准我总结成三条一是高亮网络全部在阈值内没有超长网络被误布二是电源、差分对、已走线网络零误布三是回退动作能在 1 分钟内完成且板子恢复到执行前状态。三条都满足这套配置才算验证通过。验证记录建议通过 API 通道上报一份方便后面追溯哪块板用了哪版参数curl -X POST https://taotoken.net/api/v1/records \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d {project:allegro-shortnet,board:demo_v1,step:1,threshold_mil:200,processed:10,success:9,failed:1}上面这个请求只是示意记录上报的形态具体端点以接入文档为准。Key 从环境变量读不要硬编码进脚本避免泄露。Model ID 在需要调用模型做日志摘要时填真实值。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth这一节按真实报错给你对照排查。ShortNetRouting 本身是本地 SKILL 执行但一旦你把配置管理、日志上报接到 API 通道就会遇到网络和鉴权类报错。下面四类是我和同事实际踩过的。401 Unauthorized。最常见原因是 Key 错误或缺失。排查顺序先确认请求头里Authorization: Bearer后面的 Key 完整、无首尾空格再确认 Key 没有过期或被删除最后确认 Base URL 是https://taotoken.net/api而不是带/v1的完整路径。如果 Key 是从 console 复制的注意有些终端粘贴会丢字符用echo $TAOTOKEN_API_KEY | wc -c看长度对不对。还有一种情况是环境变量没生效脚本里读到的空字符串打印出来确认一下。local proxy failed。这个报错通常出现在请求发不出去的时候和本地网络环境有关。排查方向确认本机网络能正常访问外网、没有异常的本地转发配置、防火墙没拦对应端口。如果你在公司内网确认出口策略允许访问目标域名。这个报错和 Key 无关先解决连通性再看鉴权。需要说明的是这里只讨论正常网络环境下的连通性排查不涉及任何网络访问方式的调整。reading choices 相关报错。这类报错多出现在解析 API 返回时返回体不是预期 JSON 导致解析失败。排查先用 curl 直接请求一次看原始返回是什么确认返回的 Content-Type 是 JSON检查是不是把错误响应当成功响应解析了。常见触发场景是 Key 无效时返回了 HTML 错误页脚本按 JSON 解析就报 reading choices 类错误。修法是先判状态码再解析。OAuth 相关报错。如果你用的是需要 OAuth 流程的接入方式报错通常是 token 过期或 scope 不足。排查确认 token 有效期、确认申请的 scope 覆盖你要调用的端点、确认回调地址配置正确。OAuth 流程和 API Key 是两套机制不要混用。如果你只是本地脚本上报日志用 API Key 就够了不必上 OAuth。除了网络类报错SKILL 侧还有几个高频问题。一是load找不到文件检查路径分隔符和文件编码Windows 下用双反斜杠或正斜杠。二是参数表键名拼错shortnetParams[ratLengthStep1]写成ratlengthstep1就取不到值SKILL 大小写敏感。三是 DesignForClines 约束没生效检查加载顺序约束必须在布线执行前加载。四是布完没高亮检查highlightAfterRun是否为t以及高亮颜色是否和背景太接近看不见。CC Switch、Cline MCP、Codex auth.json 这三类工具如果你也在用配置时记住三件套齐全Base URL 填https://taotoken.net/apiKey 填 console 生成的那串Model ID 填真实 ID。三者缺一或填错都会导致请求失败报错形态各不相同但排查思路一致先确认三件套再看网络最后看返回体。6. 语义一致 CTA把短网络布线变成可重复的工程流程走到这里你已经有了可复制的 SKILL 配置、DesignForClines 约束模板、一次完整验证动作和一份报错对照表。接下来要做的不是再学新东西而是把这套流程固化下来让下一个人接手时不用重新试错。固化的关键有三点参数模板版本化、验证记录可追溯、回退动作标准化。参数模板版本化就是把shortnet_cfg.il和designforclines_shortnet.toml放进版本管理每次改阈值或过滤规则都留记录。不同板子用不同模板比如消费类小板用 200/300/500 三步工业板保守一点只用 200/300 两步。模板命名带上板型和日期shortnet_consumer_202409.il这种一眼能看出适用范围。验证记录可追溯就是把每次执行的板名、阈值、处理数、成功数、失败数通过 API 通道上报。上报用 API Key 鉴权Base URL 固定https://taotoken.net/apiModel ID 按需填。记录攒多了能看出哪类板子失败率高、哪个阈值段最容易出问题反过来优化模板。需要做模型对话验证或让模型帮你分析失败日志的走模型对话入口长期做这类工程资产管理的Coding Plan 更合适纯接入和排障问题看接入文档和 API Keys 页面。回退动作标准化就是每次执行前自动存快照回退时直接回滚快照而不是逐条删线。快照命名带时间戳存到固定目录定期清理旧快照。这一步看着简单但真出问题时能省大量时间。我见过有人布错了没存快照手工删了两小时线最后还是重画。最后给一个实操建议先把第一节到第四节的流程在一块测试板上完整走一遍确认三步阈值、过滤规则、回退动作都符合你的预期再把模板套到正式项目。测试板建议选短网络密集、有电源铺铜、有差分对的板子这样过滤逻辑能充分验证。走通之后这套流程就能从某个人会用的技巧变成团队可重复执行的工程能力。需要进一步看接口细节的从 API Keys 和接入文档两个入口进官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 导航里都能找到。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →