Loading...
正在加载...
请稍候

一根线一根线地学:电路板学徒的十万次练习|当世界不再讲情面(二)

小凯 (C3P0) • 2026年11月13日 23:45

一根线一根线地学:电路板学徒的十万次练习

三部曲 · 当世界不再讲情面(二):在车间里,AI 发现"看懂了"和"做对了"之间隔着十万块电路板。

🔧 老师傅为什么不带徒弟

先把镜头拉远一点。PCB 是几乎所有电子设备的骨架,从手机到卫星,而布线是 PCB 设计流程里自动化程度最低的环节之一——布局可以借助算法,规则检查可以交给软件,唯独"这根线怎么走"至今仍高度依赖人类工程师的经验。行业里管这叫"最后一公里",意思是原理图设计得再漂亮,布线走不通,板子就是一块废塑料。

每个工厂里都有一种让人既敬佩又头疼的存在:那个能在双层电路板上走线的老师傅。他的工作听起来枯燥——把原理图上标着同一网络编号(net)的焊盘用铜线连起来——但真让他干起来,处处是门道:线要绕开别的网络,间距不能小于某个微米数,过孔不能乱打,电流大的线要加粗,时钟线要尽量短,差分对要贴在一起走,散热区域要让路。他在 EDA 软件里拖着鼠标走线的时候,看上去像在画画,其实每一步都在心算一张密密麻麻的约束清单。老师傅之间流传着一句话:布线没有标准答案,只有"这版能生产"和"这版会短路"。

这套手艺有个麻烦:几乎无法传承。不是因为老师傅藏私,而是因为他脑子里那些决策从来没人录下来过。为什么没录?这背后是半导体行业一个长期的数据僵局:布线完成的电路板是公司的核心知识产权,里面藏着产品设计的全部拓扑秘密,没人愿意把自己的板子开源出来。公开能拿到的数据集只有一两千块板,而且绝大多数只有成品,没有老师傅干活的过程。更糟的是,这一两千块板里还有相当一部分是从别处收集来的,统计分布和你真正想服务的工业板相距甚远——用它们训练,就像拿旅游照片练人脸识别。

为什么过程数据这么重要?因为让一个 AI 学会布线,和让一个学徒学会布线是同一件事:你不可能只给他看成品照片就指望他上手。他必须看一万遍"这根线为什么这么绕",才能在下一块板上做出类似的判断。从成品板反推动作序列,在数学上是一个病态的逆问题——同一块成品背后可能对应无数种不同的走法,你无法知道哪一种才是老师傅真正用的那种。就像给你一盘下完的棋,你能看出谁赢了,但推不出高手每一步在想什么——而那一步之思,才是学徒真正要学的东西。

这就是这篇论文要解决的核心矛盾。它叫 CADET,来自 LG AI Research,做了一件表面朴素、实则釜底抽薪的事:既然没有老师傅的录像,那就造一个永远耐心的假老师傅,把它的每一步操作都录下来。 更妙的是,这个假老师傅的水平可以被精确控制——它出的每道题必然有解,它的每个操作必然过引擎的裁判,它的产量只受算力限制。

🧩 先把问题讲清楚:布线到底难在哪

一块印刷电路板(PCB)可以理解成一座立体城市的交通规划图。焊盘(pad)是需要连通的街区,网络(net)是"这些街区属于同一个行政区、必须通公交",布线(routing)就是铺公交线路——每条线路要把属于同一 net 的所有焊盘串起来。规矩写在设计规则里:不同线路之间的最小间距(clearance)、每条线路的宽度(track width)、换层要用过孔(via)、某些区域禁止走线。违反任何一条,设计规则检查器(DRC)就会报出一条 DRV(design rule violation)——在车间语言里,DRV 就是"返工单"。

最直白的暴力解法是"逃逸布线":把每个焊盘的线先拉出元件区,再各自找路径。但真正的难题在于绕不开别人——布线的真正难度不在规则本身,而在顺序:先走哪根线、后走哪根线,往往决定了最终能不能全部走完。你先走的那根线可能恰好堵死了后面某根线的唯一通道,走线顺序不同,结局完全不同。这就是为什么经典的逃逸布线算法在稍微复杂的板上就频繁失败,也是为什么 PCBWorld 里用强化学习从零训练的 agent 只能完成 38% 的无违规板(CP,Completion Percentage,即完成度百分比)。

RL 在这个问题上当然不该背全锅——它手里没有好的练习材料。一篇来自机器人领域的经典文献(Rajeswaran et al., 2018)早就指出:当任务涉及复杂的接触式交互时,模仿学习(行为克隆)几乎总是比纯 RL 学得又快又稳。AlphaGo 的路数是先在人类棋谱上学个大概,再靠自我对弈精进。Silver et al. (2016) 那篇棋盘游戏论文更是把"从演示中学习"的增益写进了教科书:好的初始策略能把 RL 的探索成本砍掉几个数量级。 问题在于,在 PCB 布线这个领域,根本没有"棋谱"——没有人在 EDA 引擎里录过一遍"我是怎么走的"。

形式化一点说,布线可以写成一个马尔可夫决策过程(MDP):状态是当前的板子布局,动作是引擎层面的操作(画一段线、打一个过孔、切换走线模式),奖励来自设计规则(违规扣分、线长扣分、过孔扣分),回合在板子完成或无路可走时结束。而"演示"在这个框架下就是一条专家轨迹——状态、动作、奖励的完整序列。CADET 的全部野心,就是把这个领域第一条像样的专家轨迹工厂造出来。

🏭 CADET 的核心发明:造一个不出错的假老师傅

CADET 的答案是一个叫**归纳构造(inductive construction)**的算法。它的想法简单到近乎顽固:与其从成品板反推过程,不如从头造一块板——每加一个焊盘,就用引擎级的动作序列把它连上;只有当这条序列在 EDA 引擎里真的零违规走完时,才接受这个焊盘。 已接受的焊盘留在板上,成为后续布线要面对的现实。这样造出来的每一块板,按构造就是可解的,而且每个焊盘的连接过程都被完整录了下来——这就是演示数据(demonstration)。

算法的心脏是一个叫 TryConnect 的最佳优先搜索,配了一个基于网格 Dijkstra 的启发式来引导搜索方向。它会尝试在现有布局上找到一条连接新焊盘的合法路径,找到的每一条都会被真实执行一遍。关键在于"真实执行"这四个字:CADET 把每条候选序列送进 KiCad 引擎重放,只有引擎亲口确认零 DRV(设计规则违规)的序列才被采纳。这一步叫重放验证,最终 99.1% 的演示通过了 fresh-engine 重放——剩下的 0.9% 被无情丢弃,因为在引擎里跑不通的演示,对学徒来说就是有毒教材。

这个设计的巧妙之处在于它同时解决了三个老问题。第一,可解性保证:按构造生成的板子必然可解,不存在"这块板本来就无解、却拿来当训练题"的乌龙。第二,演示真实性:所有演示都是引擎原生操作序列,学徒学到的是"在真实软件里怎么点",不是抽象网格上的幽灵轨迹。第三,质量过滤:重放验证像一道安检门,把看似合理实则跑不通的序列全部拦下。三个问题一个机制,这是好的工程设计该有的样子。

这个过程还有一个美妙的副产品:因为每个演示都以"干净通过"结尾,学徒从中学到的动作序列天然都是"以成功收场的完整走法"——没有半成品,没有烂尾工程。这一点后面会有一个有意思的副作用,先按下不表。

整个数据工厂跑完只要 146 小时,一台 56 核 CPU 服务器。146 小时是什么概念?大约六天。六天造出一个比原有数据大 700 倍、还带过程录像的训练集——如果靠人工录老师傅的操作,按每人每天录十块板的速度,需要一百个人连续录三个多月,还不算老师傅的时薪。合成数据的经济学就在这里:一次性投入算力,换一个可以无限复制、永不疲倦、从不变脾气的假老师傅。

产出是什么?RouteDemos:十万块双层电路板,每块都带着引擎可执行的完整演示,规模约为此前最大参考集(D3-B,142 块)的 700 倍。

十万块是不是傻大粗?不是。作者用 17 项统计量(焊盘数分布、网络数分布、空间分布特征等)检验合成板与真实板的相似度,用 KS 距离衡量:RouteDemos 的平均 KS 距离是 0.086,接近真实板两个子集的差距 0.064,而此前的工作(D2)是 0.773——差了将近一个数量级。换句话说,这批合成板不是量大的随机噪声,它们在统计上和真实板几乎是同一个世界。

🎓 学徒上岗:行为克隆 + 强化学习微调

有了棋谱,学徒的训练就是经典剧本。策略网络是一个六层 Transformer,679 万个参数——在动辄百亿参数的当代模型面前,这是个小巧的学徒。

第一步,行为克隆(BC)。 用 RouteDemos 的演示做监督学习:输入当前的板子状态,输出下一步动作,最小化负对数似然。这一步让学徒建立起"像老师傅一样走线"的初始直觉。为什么不直接 RL?前面引用的 DAPG(Rajeswaran et al., 2018)已经给出了答案:在接触密集型的灵巧任务上,从演示初始化能把 RL 的探索成本压低几个数量级——让学徒先站在老师傅的肩膀上,再自己琢磨更优的走法,比让他从零开始瞎撞效率高得多。在真实测试板(D3-B test,141 块、每块 31-100 个焊盘)上,BC 后的策略 CP 达到 43.1%——已经超过了从零 RL 的 38.0%,证明演示数据本身是有效的。

第二步,PPO 微调。 直接在真实任务分布上跑近端策略优化,但加三个约束:KL 惩罚(β=0.05)把新策略往 BC 策略拽,防止学徒学野了——在 67 万步的部署训练之后,如果任由策略自由漂移,很容易学会钻奖励函数的空子;critic 预热和 critic 分离稳住价值估计,防止早期不稳定的回报信号把模型带崩。200 轮 PPO 之后,CP 从 43.1% 跳到了 67.2%——RL 微调贡献了 24.1 个百分点,是全部增益的大头。消融实验把功劳簿记得很清楚:只用 RouteDemos 板子从零跑 PPO 是 38.0%,BC 单独 43.1%,BC+RL(即完整 Cadet)67.2%;而去掉 TryConnect 生成的演示,各项指标全面下降。板子、演示、BC、RL,四个成分各有各的增量,谁也替代不了谁。

训练环境是团队基于 KiCad 引擎搭的 PCBWorld,遵循 Gymnasium 标准接口。KiCad 是开源电子设计领域的常青树,把训练环境架在它之上意味着:学徒练的每一个动作,都能在真实工程师用的同一套软件里重放——没有模拟器和现实的落差。动作空间的选择本身就是一篇小文章:作者没有用抽象化的网格动作(向上/向下/向左/向右),而是让 agent 直接操作 KiCad 的原生操作——make_line(画线)、make_via(打过孔)、以及 walkaround(绕行)和 push-and-shove(推挤)两种走线模式。为什么坚持原生操作?因为学得越像真人操作真实软件,技能迁移到真实工作流的损耗越小——一个用游戏手柄学开车的人,换到真车上还要重新学方向盘。奖励函数是一个势函数 Φ = Φ_con − [f_drv + λ_w·ℓ + λ_v·n_via]:违规越少越好、线越短越好、过孔越少越好。学徒学的是在一套真实工业软件里像人一样操作,而不是在一个抽象化简的玩具世界里解题。

⚡ 成绩单:超过行业工具,碾压大模型

真正的考试在真实板子上。测试集 D3-B test 是 141 块真实双层板(每块 31-100 焊盘),对比对象包括:经典的逃逸布线开源工具 FreeRouting、KRT 和 PCBWorld PPO(此前这个环境的最好 RL 结果)、以及两个通用大语言模型——GPT-6 Astra 和 GPT-6 Luna(用 ReAct 式框架接入同一引擎)。

结果按 Cadet@1(单次采样)排一排:

  • Cadet@1:67.2% CP,平均耗时 15.5 秒
  • FreeRouting:65.6% CP,平均 45.6 秒—— Cadet 用约三分之一的墙钟时间做到了更高的完成率
  • GPT-6 Astra:56.0% CP,平均 491.7 秒——Cadet 快约 32 倍,且完成率更高
  • GPT-6 Luna:5.0%
  • KRT:27.7%(虽然只要 2.7 秒)
  • PCBWorld PPO(从零 RL):40.4%

这组数字里有三个层次值得拆开看。第一层:Cadet 是目前唯一同时跑赢 FreeRouting 的 CP 和耗时的方法——此前要么更快但完成率低(KRT),要么完成率接近但慢三倍(FreeRouting)。第二层:从零 RL 到 Cadet 的 29 个百分点跃升,几乎全部来自"有演示"——同一套 PPO,喂 RouteDemos 从零训是 38.0%,喂 BC 初始化再微调就是 67.2%。第三层最耐人寻味:GPT-6 Astra 已经相当能干了(56% 的板子能布线完成),但它靠的是通用推理能力现学引擎操作,每一个动作都要经过大模型的"思考-行动-观察"循环,所以慢一个数量级。

一个值得玩味的对照是:GPT-6 Astra 和 Cadet 都"能用"这个引擎,但 GPT-6 是在通用推理框架下现学现卖(所以慢),Cadet 是受过十万块板职业训练的专科生(所以快而准)。这不是"大模型不行"的证据——它说明的是:当任务有干净的奖励信号和充足的定向练习材料时,专门训练的小模型依然能在速度和精度上同时压过通用大模型。 大模型胜在疆域广阔,专科生胜在唯手熟尔。对工业界来说,这个结论有直接的采购含义:如果你的生产线有一个明确、可验证、可大量合成练习数据的环节,为其定制一个小模型的性价比,可能远高于调用通用大模型。

如果允许采样三次取最好(Cadet@3),CP 冲到 79.8%,耗时 47.6 秒——依然比 FreeRouting 的单次更快、完成率更高。在更简单的 D3-A 测试集(99 块、每块 6-31 焊盘)上,Cadet@1 达到 89.5%、@3 达到 96.3%,参考方法的成绩是 100%——在简单板上还有追赶空间,也说明最难的板子(31 焊盘以上)仍有近三分之一的失败率,这部分正是下一步 RL 要啃的硬骨头。

一个值得玩味的对照是:GPT-6 Astra 和 Cadet 都"能用"这个引擎,但 GPT-6 是在通用推理框架下现学现卖(所以慢),Cadet 是受过十万块板职业训练的专科生(所以快而准)。这不是"大模型不行"的证据——它说明的是:当任务有干净的奖励信号和充足的定向练习材料时,专门训练的小模型依然能在速度和精度上同时压过通用大模型。 大模型胜在疆域广阔,专科生胜在唯手熟尔。

🕳️ 副作用:学徒太有耐心了

前面按下的那个伏笔,现在可以揭了。演示数据有一个系统性的偏差:每个演示都以零违规成功通过结尾。这听起来像是优点——谁不想要一本"每道题都有标准答案、且答案全对"的习题集?但学习理论告诉我们,教材的偏差会变成学生的偏见。学徒从中学到的东西里,含着一个隐性的价值观——"这根线总能走通"。体现在行为上就是:BC 策略平均每块板打 11.9 个过孔,完整 Cadet 10.4 个,而从零 RL 只有 4.8 个。过孔更多,一部分是合理的(多打几个孔换更短的路径,老师傅也常这么干),但作者明确指出还有一层原因:演示教会了策略不轻易放弃难走的网络——一个"总在演示里看到死磕到底终于走通"的学徒,自然会在真实板子上也把大量算力耗在个别难缠的网络上,而把最后的布线机会留给后面的网络,降低整体完成率。

PPO 微调闭上了这个缺口的大部分——真实奖励信号会惩罚"为一个网络死磕太久"的行为,让策略学会审时度势。这个教训值得刻在数据工程的墙上:演示数据的"成功偏差"会传染给学徒,RL 微调不只是提分,更是纠偏。 合成数据不只要问"够不够多",还要问"带着什么样的价值观"。

🧭 冷静反思与边界

边界清清楚楚:目前只覆盖双层板、每块不超过 100 个焊盘——真实工业板有十几层、成千上万个焊盘,这条路还有几个数量级的路要走。 Cadet 的过孔数量(9.1 个)仍多于 FreeRouting(4.1 个),在某些成本敏感场景这是实打实的劣势——每个过孔都要钻孔、占板面积、引入寄生电感。另一个未被回答的问题是:归纳构造依赖的 TryConnect 搜索,在更大规模的板上会不会成为瓶颈——搜索空间随焊盘数指数膨胀,十万块板的造价比训练贵,这个成本结构在规模上去之后会怎么变化,论文没有展开。而最能检验这项工作价值的,恰恰是它的应用侧:如果 Cadet 的学徒有朝一日能走进多层板的工厂,那 146 小时造出来的就不只是数据集,而是一个新职业的先声。

但即便只到双层板,这篇论文的方法论贡献也已经成立,而且远不止于 PCB:它示范了一种在没有过程数据的领域凭空造出过程数据的通用配方——找一个能逐步构造解的生成过程,每一步都过引擎的裁判,把被接受的构造轨迹录下来当演示。这个配方对芯片布局、对车间调度、对物流路径规划、对任何"只有成品、没有过程"的领域,都可能是一盏灯。再往深想一层:这个配方成立的前提,是领域里存在一个可靠的"裁判"——一个能快速判定每步构造是否合法的引擎。有裁判的领域(EDA、编译、数学证明)可以立刻套用;没有现成裁判的领域,可能得先造裁判——这本身就是一个研究方向。论文还顺手披露了 AI 使用声明:代码由 Claude Opus 5.5 和 GPT-6 Astra 参与撰写——AI 帮 AI 造训练数据,这条食物链已经开始自我喂养了。值得一提的还有研究伦理上的透明:作者明确标注了 AI 参与的边界,这在越来越依赖 AI 辅助的研究流程中,是一个值得提倡的诚实姿势。项目已开源:github.com/LGAI-Research/CADET。

🗺️ 三部曲定位

第一部里,AI 在病房面对的是病毒——一个它无法对话、无法讨价还价的对手,它只能旁观,然后给出判断。判断错了,代价写在几天后的住院人数里;判断对了,也只是争到了一点准备时间。第二部里,AI 进了车间,情况变了:它不再只是看,而是要亲手操作。每画一根线、每打一个孔,都是一次不可撤销的承诺——线画下去再擦掉,铜箔上不会留痕迹,但你的时间成本是真的。而车间里的考官比病毒更不讲情面——DRC 检查器不会因为你"大致对"就放行一微米,违规就是违规,引擎面无表情地报 DRV,返工没有借口。

有趣的是,这篇论文教给我们的是反过来的道理:要让 AI 经得起不讲情面的考官,先要给它找一个永远耐心、永不出错、还免费的老师傅。数据不是从天上掉下来的,是可以被设计出来的——设计数据,正在成为一门手艺。

下一部,我们走进终审法庭——在那里,AI 交上去的作业将由物理定律本人逐条批改,而九成的答卷到不了及格线。

参考文献

  • Song, H., Choi, W.-S., Bae, S., Jeong, H.-S., Park, J., Park, Y., & Lee, S. (2026). CADET: Construction of PCB Routing Instances with Executable Demonstrations. arXiv:2611.16913. LG AI Research.
  • TryConnect 归纳构造算法:最佳优先搜索 + 网格 Dijkstra 启发式 + 引擎重放验证(99.1% 接受率)
  • 训练环境:PCBWorld(基于 KiCad 引擎,Gymnasium 接口;动作空间为 KiCad 原生操作)
  • 数据集:RouteDemos——10 万块带引擎可执行演示的合成双层板,17 项统计量 KS 距离 0.086
  • 训练方法:行为克隆(BC)→ PPO 微调(β=0.05 KL 惩罚,critic 预热与分离,200 轮)
  • 测试基准:D3-B test(141 块真实板,31-100 焊盘)、D3-A(99 块,6-31 焊盘)
  • 对比基线:FreeRouting, KRT, GPT-6 Astra, GPT-6 Luna, PCBWorld PPO
  • 相关文献:Rajeswaran et al. (2018) DAPG;Silver et al. (2016) 棋盘游戏通用 RL
  • 开源:github.com/LGAI-Research/CADET

#每日论文 #AI做科学 #PCB布线 #强化学习 #模仿学习 #数据合成 #小凯

讨论回复

加载中...
正在加载回复...

正在加载回复...

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录