1. 项目概述与核心价值在芯片和先进封装设计的物理实现流程中全局布线Global Routing是一个决定性的环节。它不像最终布线那样精确到每一根线的具体走向而是像城市规划师一样在宏观层面为成千上万个信号网络Net规划出大致的连接通道确保所有信号都能从起点Source走到终点Sink同时不违反设计规则并尽可能优化布线长度、通孔数量和拥塞程度。这个过程的核心挑战在于当网络数量庞大且布线资源如金属层、走线轨道有限时不同的网络连接顺序Net Ordering会直接导致截然不同的布线结果。一个糟糕的排序可能导致后续布线无法完成或者产生大量冗余的通孔和绕线直接影响芯片的性能、功耗和面积。传统的解决方案主要依赖启发式算法比如基于网络边界框大小、引脚数量等简单规则来排序。这些方法在问题规模较小时尚可应付但随着设计复杂度的飙升其局限性日益凸显它们难以捕捉网络间复杂的空间交互和竞争关系容易陷入局部最优。这就好比只根据车辆的体积来安排一个复杂十字路口的通行顺序而忽略了车辆的目的地、优先级和实时路况结果必然是拥堵。近年来我们看到了一个令人兴奋的趋势机器学习特别是深度学习正在被引入电子设计自动化EDA领域用于解决这类经典的组合优化问题。其核心思想是将布线问题视为一个可以从历史数据中学习的模式识别任务。通过构建能够表征布线问题状态的特征向量并训练一个深度神经网络来预测“最优”的网络排序我们有望找到一个比固定规则更智能、更自适应的解决方案。我最近深入实践并验证了这一思路构建了一套完整的基于深度学习的全局布线网络排序优化流程。实测下来在典型的封装设计场景中该方法预测最优排序的准确率远超传统启发式方法在某些情况下甚至能提升一个数量级。这不仅是一次技术尝试更是为高复杂度布线场景提供了一种全新的、数据驱动的优化范式。2. 核心思路与方案设计拆解2.1 问题转化从布线到排序预测我们的目标不是用神经网络直接“画”出布线图那对于当前的技术来说过于复杂。而是聚焦于一个更具体、可学习的关键子问题给定一个特定的、尚未进行层分配的二维布线结果如何为其中的多个网络确定一个最佳的布线顺序这里涉及一个重要的预处理步骤层压缩Layer Compression。在实际的多层布线中我们拥有多个金属层。层压缩技术将这些三维空间中的引脚投影到同一个二维平面上形成一个虚拟的“单层”布线问题。在这个二维平面上我们可以运用成熟的算法如Kruskal最小生成树算法或Steiner树算法快速得到一个初始的、不考虑层资源的连接方案我们称之为单层布线解S1。这个S1包含了所有网络的连接拓扑但它还没有决定哪个网络先布线、哪个后布线。而网络排序正是决定这个顺序。我们的深度学习模型的任务就是分析这个单层布线解S1的特征预测出一个网络排序使得依据这个顺序进行后续的层分配时能得到整体最优如通孔最少、布线总长最短的多层布线结果。注意这里有一个关键假设即“最优”的排序是存在的并且可以通过对S1的分析来推断。这并非凭空想象而是基于工程经验网络的拓扑结构、引脚分布、与其他网络的交叉程度等信息隐含了其在多层布线中的“难度”和“影响力”。2.2 特征工程如何让神经网络“看懂”布线图神经网络需要数值化的输入。因此如何将一张布线图S1转化为一个特征向量是项目成败的第一步。我们设计的特征需要全面反映每个网络的特性和网络间的相互关系。2.2.1 完整特征向量设计我们为每个网络m定义了一组特征最终将所有网络的特征拼接起来形成输入向量。这些特征主要来源于单层布线解S1包括引脚数量|nk_m|该网络在原始k层环境中的引脚总数。引脚越多通常意味着网络越复杂。单层引脚数量|n1_m|该网络在压缩后的单层S1中的引脚数量。用于对比压缩前后的变化。单层顶点数量|V1_m|该网络在S1中占用的网格顶点总数。反映了该网络布线结果的“规模”。溢出现o(E1_m)这是一个关键指标衡量S1中该网络布线路径的拥挤程度。如果一条边被多个网络共享就会产生“溢出”。溢出现越高说明该区域竞争激烈该网络的布线在多层环境中可能面临挑战。分支顶点数量|V1_branch|在S1的树形结构中分支点的数量。分支点多意味着拓扑复杂。最小包围矩形信息包括该网络在S1中所占区域的宽度、高度和面积。这反映了网络的空间跨度。2.2.2 精简特征向量设计特征并非越多越好。无关或冗余的特征会引入噪声增加模型训练难度甚至导致过拟合。因此我们基于特征与最终布线质量的相关性分析提出了一个精简特征集精简特征向量 { |nk_m|, |n1_m|, |V1_m|, o(E1_m) }这个子集保留了最核心、物理意义最明确的特征规模引脚和顶点数和拥堵程度溢出。在后续的对比实验中我们将验证完整特征集和精简特征集的效果。2.3 模型架构选型为什么是深度全连接网络面对这样一个回归/排序预测问题可供选择的模型很多如卷积神经网络CNN、图神经网络GNN、循环神经网络RNN等。我们最终选择了深度全连接神经网络DNN作为基础架构主要基于以下几点考量问题本质我们的输入是固定长度的特征向量而不是图像像素或图结构数据。虽然布线问题本质是图但我们通过精心设计的特征工程已经将关键的图结构信息如溢出、顶点数提取为标量。全连接网络最适合处理这种扁平化的特征向量。可解释性与可控性在EDA领域工程师对“黑盒”模型往往抱有疑虑。DNN的结构相对直观我们可以通过分析不同特征在模型中的权重尽管深度网络的可解释性依然有限来获得一些洞见这比GNN或CNN的内部机制更容易向领域专家沟通。计算效率与成熟度DNN的训练和推理速度通常快于GNN且技术栈非常成熟易于实现和调试。在项目初期选择更稳定、更快的技术路径有助于快速验证核心想法。足够的表达能力理论上只要深度和宽度足够全连接网络可以逼近任何连续函数。对于学习从布线特征到排序评分或直接到排序的复杂映射关系DNN具备所需的能力。我们设计了三个具体的模型变体Model 1, 2, 3它们在损失函数和输出层设计上略有不同以探索不同的学习目标如均方误差MSE或交叉熵损失对排序预测精度的影响。3. 数据生成与模型训练实战3.1 构建高质量的合成数据集在工业界获取大量标注好的真实布线数据极其困难且成本高昂。因此我们采用程序化生成合成数据集的策略。这不仅能产生海量数据还能确控制各种实验变量。3.1.1 数据生成流程我们的数据生成管道是一个闭环系统随机问题生成首先我们定义一个k层的布线环境每层是一个5x5的网格图。在每个层上随机选择固定数量如15个的顶点作为“引脚”。网络分配随机将这些引脚分配给Nnets个网络。这样就构成了一个随机的k层布线问题实例。层压缩与单层布线应用层压缩将所有层的引脚投影到同一平面形成一个二维布线问题。然后使用一个确定的单层布线算法KA或ST求解得到单层布线解S1。特征提取根据S1计算每个网络的完整特征向量或精简特征向量。生成标注最优排序这是最关键的一步。我们需要为每个S1找到“真实”的最优网络排序。我们采用了一种简化的最优性准则对于当前S1枚举所有可能的网络排序对于3个网络有6种5个网络有120种对每一种排序执行一个确定的层分配算法计算最终多层布线解的质量如总通孔数。质量最好的那个排序就被标记为该S1的“最优排序”。这个过程计算量较大但因为是离线生成数据所以可以接受。重复与组合重复上述步骤N次如2500次生成一个数据集。通过改变参数层数k、网络数Nnets、单层布线算法、特征集我们生成了16个不同的数据集以全面评估模型在不同场景下的性能。3.1.2 参数空间设计我们系统地改变了四个核心参数来构建多样化的数据集层数 (k)2层和5层代表简单和中等复杂度的布线环境。网络数 (Nnets)3个和5个。网络数较少时排序组合有限问题相对简单网络数增多组合爆炸问题难度急剧上升。单层布线算法Kruskal算法KA和Steiner树算法ST。它们会产生不同拓扑风格的单层解KA生成最小生成树ST生成Steiner树通常更短这会影响特征分布。特征集完整特征集和精简特征集。这16个数据集构成了一个丰富的实验场用于检验模型的泛化能力和鲁棒性。3.2 模型训练与超参数调优我们将每个数据集按8:2的比例划分为训练集和测试集。模型训练使用Adam优化器这是一个在深度学习领域广泛使用的自适应学习率算法收敛速度快且效果稳定。3.2.1 超参数网格搜索深度网络的性能 heavily依赖于超参数。我们采用了网格搜索策略系统地遍历关键超参数的不同取值训练轮数 (Epochs)从30到2000观察模型是欠拟合还是过拟合。隐藏层单元数从10到100控制模型的容量即学习复杂模式的能力。学习率 (Learning Rate)从0.0001到0.01决定参数更新的步长。通过网格搜索我们为不同数据集条件下的模型找到了相对最优的超参数组合。例如对于网络数较少Nnets3的数据集模型可能更快收敛所需轮数较少而对于复杂数据集Nnets5则需要更深的网络更多单元和更精细的学习率调度。3.2.2 损失函数对比实验我们设计的三个模型变体主要区别在于损失函数Model 1 2使用均方误差MSE作为损失函数。我们的目标是让模型预测一个“评分向量”每个网络一个分数然后根据分数高低排序。MSE直接衡量预测分数与“真实”最优排序所对应分数之间的差距。Model 3使用交叉熵Cross-Entropy损失函数。这里我们将问题视为一个分类任务模型直接预测所有可能排序的概率分布交叉熵衡量预测分布与真实one-hot标签最优排序之间的差异。从实验结果反推MSE损失函数Model 1 2的表现普遍优于交叉熵Model 3。一个可能的解释是对于排序问题各个排序之间并非完全独立无关它们存在一定的序关系。MSE通过回归评分的方式可能更好地学习到了这种连续的“好坏”度量而交叉熵的分类方式则可能过于绝对。4. 实验结果分析与深度解读4.1 性能表现远超传统方法我们将训练好的深度学习模型与两种基线方法进行了对比1) 文献中的启发式评分函数2) 完全随机的网络排序生成器。4.1.1 准确率对比在全部16个数据集上的测试结果令人振奋。我们的深度学习模型特别是Model 1和Model 2在预测最优网络排序的准确率上全面碾压了基线方法。当网络数Nnets3时深度学习模型的平均准确率约40%是启发式方法约15-17%的2倍以上是随机方法约16.7%的2倍以上。当网络数增加到Nnets5时差距更加惊人。启发式方法的准确率暴跌至1%以下几乎与随机猜测0.83%无异。而我们的深度学习模型仍能保持约7-9%的准确率比启发式方法高出10倍以上。这个结果清晰地表明在问题复杂度提升时基于固定规则的启发式方法迅速失效而数据驱动的深度学习模型展现出了强大的泛化能力和对复杂模式的捕捉能力。4.1.2 特征集与布线算法的影响实验结果还揭示了两个重要趋势完整特征 vs. 精简特征在大多数情况下使用完整特征向量训练的模型其准确率略高于使用精简特征向量的模型。这说明我们手工设计的额外特征如分支点数量、包围矩形信息确实提供了有价值的附加信息。然而优势并不绝对显著这意味着精简特征集已经抓住了问题的核心。在实际应用中如果追求极致的推理速度使用精简特征是一个不错的权衡。KA算法 vs. ST算法基于Kruskal算法生成S1的数据集上训练的模型其性能普遍略优于基于Steiner树算法的模型。这可能是因为KA生成的最小生成树结构更规则、更可预测使得特征与最优排序之间的映射关系更容易被学习。4.2 模型可迁移性测试一个实用的模型不应该只在其训练环境上有效。我们进行了跨层数迁移实验选取在“2层3网络”或“5层3网络”数据集上训练的最佳模型直接拿去测试在“3网络但层数从2到10变化”的未知数据集上的表现。4.2.1 实验结果与意义令人惊喜的是模型的性能没有出现显著的下降。即使是用5层复杂环境数据训练的模型去预测2层简单环境或8层更复杂环境的排序准确率依然保持稳定。这证明了我们的模型真正学习到的是网络拓扑特征与最优排序之间的内在规律而不是简单地记忆特定层数下的数据模式。这种可迁移性对于EDA工具至关重要因为实际设计中的层数是多变的。4.2.2 对工业应用的启示这一特性极大地提升了该方法的应用价值。我们可能不需要为每一种可能的层数配置都训练一个专用模型。一个在代表性配置上训练好的模型就有可能适用于一个范围内的不同设计。这降低了部署和维护的成本。4.3 可视化案例分析通过可视化具体的布线结果我们可以直观感受优化排序带来的改变例如在一个2层3网络的案例中深度学习模型预测的排序所产生的最终布线与启发式方法或随机排序的结果相比在视觉上就能看出其布线路径更加规整网络间的交叉和缠绕更少。这通常意味着更少的通孔Vias和更短的布线长度直接转化为更优的电气性能和更高的芯片良率。5. 实操心得、避坑指南与未来展望5.1 核心经验与注意事项数据质量高于模型复杂度在这个项目中最耗时、最需要精心设计的部分不是调参而是数据生成和标注流程。“最优排序”的标注必须可靠。我们采用的枚举评估的方法虽然计算成本高但保证了标签的“真值性”。如果标注本身有噪声或有偏差再强大的模型也学不出正确的规律。在实际操作中务必对数据生成和标注脚本进行反复验证。特征工程是灵魂神经网络不是魔术它只能从你给的数据中学习。特征的设计需要深厚的领域知识。我们最初尝试过更原始的特征如每个网格的占用状态但效果很差。后来与布线专家反复讨论才提炼出“溢出现”、“分支点”这些具有明确物理意义的特征。特征的有效性往往比模型的深度更重要。理解模型的输出形式我们最初在如何将模型输出转化为排序上走了弯路。直接让模型输出一个排序序列如[2,1,3]非常困难因为这是一个离散的组合输出。将其转化为为每个网络“评分”然后根据分数排序是一个更巧妙的回归思路。损失函数选择MSE也比交叉熵更合适。警惕过拟合重视验证集布线数据可能存在特定的模式。我们的合成数据虽然多样但仍是基于固定规则生成的。在训练时必须严格使用独立的验证集来监控模型在未见数据上的表现并据此进行早停Early Stopping或调整正则化参数。我们的网格搜索也正是在验证集上评估性能。5.2 常见问题与排查思路问题模型准确率始终在50%左右徘徊无法提升。排查首先检查数据标注是否正确。可能是标注脚本存在bug导致“最优排序”标签大部分是错误的。其次检查特征计算逻辑确保特征值能真实反映布线状态。最后检查输入输出维度是否匹配损失函数是否适用。问题模型在训练集上表现完美但在测试集上很差。排查这是典型的过拟合。首先尝试增加训练数据量。其次简化模型结构减少层数或单元数。然后引入正则化技术如Dropout或L2正则化。最后确保训练集和测试集的数据分布如层数、网络数的比例是相似的否则就是分布外泛化问题需要调整数据生成策略。问题训练过程不稳定损失值震荡剧烈。排查最可能的原因是学习率设置过高。尝试大幅降低学习率例如从0.01降到0.001或0.0001。其次检查数据是否进行了归一化Normalization不同特征如引脚数量可能是几十溢出现可能是零点几的量纲差异巨大会导致优化困难必须进行标准化处理。问题想将模型应用到真实工业设计数据但效果不佳。排查合成数据与真实数据之间存在“领域鸿沟”。真实数据中的布线约束、设计规则、网络特性更为复杂。解决方案是进行迁移学习用合成数据预训练一个模型然后用少量珍贵的真实数据对其进行微调Fine-tuning。我们的跨层数实验已经证明了模型具有良好的迁移潜力这为后续工作打下了基础。5.3 未来优化方向与拓展思考本次工作成功验证了深度学习优化网络排序的可行性但仍有广阔的提升空间模型架构升级当前使用的是全连接网络。下一步可以尝试图神经网络GNN。布线问题本质是图GNN能直接对图的节点和边进行学习可能自动学习到比我们手工设计更有效的图结构特征潜力巨大。端到端优化目前我们只优化了“排序”这一个子步骤。一个更宏大的愿景是构建一个端到端的布线优化系统输入是网表和布局信息输出就是最终的多层布线图。这需要将层分配、甚至2D布线算法也纳入可学习的模块中用强化学习或分层学习的方式共同优化。融入更多物理约束当前的优化目标相对简单如最小化通孔。真实的芯片设计还需要考虑时序、信号完整性、功耗、散热等。未来的模型需要能够接受这些多目标、有时甚至相互冲突的约束并做出权衡。与现有EDA工具链集成研究的最终目的是落地。需要开发标准的模型接口能够被主流商业或开源布局布线工具调用作为一个智能的“排序建议器”嵌入现有流程实现渐进式的价值交付。这条路走下来最深的一点体会是将深度学习引入EDA不是要用一个黑盒子取代所有传统算法而是要用它来攻克那些传统算法效率低下或难以处理的“硬骨头”子问题。网络排序正是这样一个典型问题。我们的工作像是一把钥匙打开了一扇门门后还有无数个类似的、等待数据驱动方法去优化的EDA子问题。这个过程需要算法工程师和芯片设计工程师的紧密协作既懂机器学习又深谙芯片物理设计的底层逻辑才能设计出真正有用、可落地的解决方案。