如果您希望可以时常见面,欢迎标星收藏哦~
来源:内容编译自IEEE,谢谢。
自1971 年Federico Faggin仅用直尺和彩色铅笔绘制出第一款商用微处理器Intel 4004以来,芯片设计已经取得了长足的进步。如今的设计师拥有大量软件工具来规划和测试新的集成电路。但随着芯片变得异常复杂(有些芯片包含数千亿个晶体管),设计师必须解决的问题也随之增加。而这些工具并不总是能胜任这项任务。
现代芯片工程是一个由九个阶段组成的迭代过程,从系统规范到封装。每个阶段都有几个子阶段,每个阶段可能需要数周到数月的时间,具体取决于问题的规模及其约束。许多设计问题在 10100到101000 种可能性中只有少数几个可行解决方案——如果有的话,这就像大海捞针。当今使用的自动化工具通常无法解决这种规模的实际问题,这意味着必须由人类介入,这使得该过程比芯片制造商所希望的更加费力和耗时。
毫不奇怪,人们对使用机器学习来加速芯片设计的兴趣日益浓厚 。然而,正如英特尔人工智能实验室的团队所发现的那样,机器学习算法本身往往是不够的,特别是在处理必须满足的多个约束时。
事实上,我们最近尝试开发一种基于人工智能的解决方案来解决一项棘手的设计任务,即布局规划(稍后会详细介绍这项任务),这让我们开发出了一种基于非人工智能方法(如传统搜索)的更为成功的工具。这表明该领域不应过早放弃传统技术。我们现在相信,结合两种方法优点的混合方法,虽然目前是一个尚未得到充分探索的研究领域,但将被证明是最富有成效的前进道路。原因如下。
人工智能算法的危险
芯片设计中最大的瓶颈之一出现在物理设计阶段,即在确定架构、设计逻辑和电路之后。物理设计涉及对芯片布局和连接进行几何优化。第一步是将芯片划分为高级功能块,例如 CPU 内核、内存块等。然后,这些大分区被细分为较小的分区,称为宏和标准单元。一个普通的片上系统 (SoC) 有大约 100 个高级块,由数百到数千个宏和数千到数十万个标准单元组成。
接下来是布局规划,其中功能块的排列是为了满足某些设计目标,包括高性能、低功耗和成本效益。这些目标通常通过最小化线长(连接电路元件的纳米线的总长度)和空白区域(未被电路占用的芯片总面积)来实现。此类布局规划问题属于数学编程的一个分支,称为组合优化(combinatorial optimization)。如果您曾经玩过俄罗斯方块,那么您就解决了一个非常简单的组合优化难题。
芯片布局规划就像是强化版的俄罗斯方块。首先,可能的解决方案数量可能大到天文数字——确实如此。在典型的 SoC 布局规划中,排列 120 个高级块的可能方法大约有 10250种;相比之下,宇宙中估计有 1024 个恒星。宏和标准单元的可能排列数量则要大几个数量级。
给定一个目标(例如将功能块压缩到尽可能小的硅片面积中),商用布局规划工具可以在几分钟内解决如此规模的问题。然而,当面临多个目标和约束时,它们就会陷入困境,例如关于某些块必须放在哪里、它们如何成形或哪些块必须放在一起的规则。因此,人类设计师经常诉诸反复试验和自己的聪明才智,将生产计划延长数小时甚至数天。而这还只是针对一个子阶段而言。
尽管过去十年机器学习取得了巨大成功,但迄今为止它对芯片设计的影响相对较小。Nvidia 等公司已经开始训练大型语言模型(LLM)(支持 Copilot 和 ChatGPT 等服务的 AI 形式),以编写硬件设计程序脚本并分析错误。但这些编码任务与解决布局规划等棘手的优化问题相去甚远。
乍一看,将 transformer(LLM的基础)也用于物理设计问题可能也很诱人。理论上,我们可以通过训练transformer来按顺序预测芯片上每个块的物理坐标,从而创建基于 AI 的布局规划器,类似于 AI 聊天机器人按顺序预测句子中的单词的方式。但是,如果我们试图教模型将块放置在不重叠的位置,我们很快就会遇到麻烦。虽然对于人类来说很容易理解,但对于计算机来说,学习这个概念并不容易,因此需要大量的训练数据和时间。对于进一步的设计约束也是如此,例如将块放置在一起或靠近某个边缘的要求。
因此,我们采取了不同的方法。我们的首要任务是选择一种有效的数据结构来传达平面图中块的位置。我们选择了所谓的B*-tree。在这个结构中,每个块都表示为二叉树上的一个节点。平面图左下角的块成为根。右侧的块成为一个分支;顶部的块成为另一个分支。每个新节点都延续此模式。因此,随着树的增长,它会在向右和向上扇形扩展时封装平面图。
B*-tree结构的一大优势是它保证了无重叠的布局规划,因为块位置是相对的而不是绝对的——例如,“在另一个块上方”而不是“在这个位置”。因此,AI 布局规划器不需要预测它放置的每个块的确切坐标。相反,它可以根据块的尺寸以及其关系邻居的坐标和尺寸轻松计算它们。瞧——没有重叠。
有了数据结构后,我们在包含数百万个最优布局规划的数据集上训练了几种机器学习模型,具体来说,是图神经网络、扩散模型和基于transformer的模型。这些模型学会了预测放置在先前放置的块上方或右侧的最佳块,以生成针对面积和线长进行了优化的布局规划。但我们很快意识到这种循序渐进的方法是行不通的。我们将布局规划问题扩展到大约 100 个块,并在无重叠规则之外添加了硬约束。这些包括要求将一些块放置在预定位置(如边缘)或对共享同一电压源的块进行分组。然而,我们的AI 模型浪费了时间追求次优解决方案。
我们推测,问题在于模型无法回溯:由于它们按顺序放置积木,因此无法追溯之前的错误放置。我们可以使用强化学习代理等技术来绕过这个障碍,但这种代理训练一个好的模型所需的探索量是不切实际的。在陷入死胡同后,我们决定放弃逐块决策,尝试一种新方法。
回归芯片设计传统
解决大规模组合优化问题的一种常用方法是使用一种称为模拟退火(SA:simulated annealing) 的搜索技术 。模拟退火于 1983 年首次提出,其灵感来自冶金学,其中退火是指将金属加热到高温然后缓慢冷却的过程。通过控制能量的减少,原子可以有序排列,使材料比快速冷却时更坚固、更柔韧。以类似的方式,模拟退火可以逐步找到优化问题的最佳解决方案,而无需繁琐地检查每种可能性。
它的工作原理如下。算法从随机解决方案开始 — 就我们的目的而言,随机布局规划表示为 B*tree。然后,我们允许算法采取以下三种操作之一,同样是随机的:它可以交换两个块、将一个块从一个位置移动到另一个位置,或者调整一个块的宽高比(不改变其面积)。我们通过对总面积和线长取加权平均值来判断最终布局规划的质量。这个数字描述了操作的“成本”。
如果新的布局更好(即它降低了成本),我们就会接受它。如果它更糟,我们最初也会接受它,因为我们知道一些“坏”决定可能会朝着好的方向发展。然而,随着时间的推移,随着算法不断随机调整块,我们接受增加成本的操作的频率会越来越低。就像在金属加工中一样,我们希望逐步实现这种转变。就像过快冷却金属会使其原子陷入无序排列一样,过早限制算法的探索会使其陷入次优解决方案,即局部最小值。通过给算法足够的回旋余地来尽早避开这些陷阱,我们可以诱导它走向我们真正想要的解决方案:全局最小值(或它的良好近似值)。
相比使用任何机器学习模型,我们利用 SA 解决布局规划问题的成功率要高得多。由于 SA 算法没有布局顺序的概念,因此它可以随时更改任何块,本质上允许算法纠正先前的错误。我们发现,在没有限制的情况下,它可以在几分钟内解决包含数百个块的复杂布局规划。相比之下,使用商业工具的芯片设计师需要数小时才能解决同样的难题。
当然,现实世界的设计问题有限制。因此,我们为 SA 算法提供了一些与机器学习模型相同的限制,包括对某些块的放置位置和分组方式的限制。我们首先尝试通过将布局违反这些限制的次数添加到我们的成本函数中来解决这些硬约束。现在,当算法进行随机块更改以增加约束违反时,我们会以更高的概率拒绝这些操作,从而指示模型避免这些操作。
但不幸的是,这种策略适得其反。在成本函数中包含约束意味着算法将尝试在满足约束和优化面积和线长之间找到平衡。但根据定义,硬约束是不能妥协的。然而,当我们增加约束变量的权重来解释这种刚性时,算法在优化方面表现不佳。模型没有努力修复导致全局最小值(最佳布局规划)的违规行为,而是反复导致模型无法摆脱的局部最小值(次优布局规划)。
推动机器学习的发展
回到绘图板上,我们构思了 SA 的新变化,我们称之为约束感知 SA (CA-SA)。此变体采用两个算法模块。第一个是 SA 模块,它专注于 SA 最擅长的领域:优化面积和线长。第二个模块会随机挑选一个约束违规并进行修复。此修复模块很少启动(大约每 10,000 次操作启动一次),但启动时,其决定始终会被接受,无论对面积和线长的影响如何。因此,我们可以引导我们的 CA-SA 算法找到满足严格约束的解决方案,而不会对其造成阻碍。
利用这种方法,我们开发了一个开源布局规划工具,可以同时运行 CA-SA 的多个迭代。我们将其称为 具有约束意识的并行模拟退火,简称 Parsac。人类设计师可以从 Parsac 的最佳解决方案中进行选择。当我们在多达 300 个块的流行布局规划基准上测试 Parsac 时,它轻松击败了所有其他已发布的公式,包括其他基于 SA 的算法和机器学习模型。
然而,这些既定的基准测试已有 20 多年历史,无法反映现代 SoC 设计。它们的主要缺点是缺乏硬约束。为了了解 Parsac 在更现实的设计上的表现,我们在基准测试问题中添加了自己的约束,包括有关块放置和分组的规定。令我们高兴的是,Parsac 在不到 15 分钟的时间内成功解决了商业规模(约 100 个块)的高级布局规划问题,使其成为同类中速度最快的布局规划器。
我们现在正在开发另一种基于几何搜索的非 AI 技术,用于处理具有奇形怪状块的布局规划,从而更深入地了解现实世界的情况。不规则布局太复杂,无法用 B* tree表示,因此我们回到了顺序块放置。早期结果表明,这种新方法甚至可能比 Parsac 更快,但由于无回溯问题,解决方案可能不是最佳的。
与此同时,我们正在努力让 Parsac 适应宏观布局,这比块布局规划更精细一个层次,这意味着它可以从数百个元素扩展到数千个元素,同时仍然遵守约束。CA-SA 本身可能太慢,无法有效解决这种规模和复杂性的问题,而这正是机器学习可以提供帮助的地方。
例如,给定一个 SA 生成的布局规划图,我们可以训练一个 AI 模型来预测哪些操作将改善布局的质量。然后,我们可以使用该模型来指导我们的 CA-SA 算法的决策。该算法不会只采取随机或“愚蠢”的操作(同时适应约束),而是会以一定的概率接受模型的“智能”操作。我们推断,通过与 AI 模型合作,Parsac 可以大幅减少寻找最佳解决方案所需的操作数量,从而缩短其运行时间。然而,允许一些随机操作仍然至关重要,因为它使算法能够充分探索问题。否则,它很容易陷入次优陷阱,就像我们失败的基于 AI 的布局规划器一样。
除了布局规划之外,这种方法或类似方法还可用于解决其他复杂的组合优化问题。在芯片设计中,此类问题包括优化内核内互连的布线和布尔电路最小化,其中的挑战是构建一个具有最少门和输入的电路来执行某个功能。
需要新的基准
我们在 Parsac 的经验也激励我们创建 样本布局图的开放数据集,我们希望这些数据集将成为该领域的新基准。随着研究人员寻求验证新的芯片设计工具,对此类现代基准的需求日益迫切。例如,最近的研究声称基于旧基准或专有布局的新型机器学习算法的性能,这引发了人们对这些说法的合法性的质疑。
我们发布了两个数据集,分别称为 FloorSet-Lite 和 FloorSet-Prime,现在可在 GitHub上获取。每个数据集包含 100 万个用于训练机器学习模型的布局和 100 个针对面积和线长进行优化的测试布局。我们设计这些布局是为了捕捉当代 SoC 布局的全部广度和复杂性。它们的范围从 20 到 120 个块,并包括实际的设计约束。
这两个数据集的复杂程度不同。FloorSet-Lite 使用矩形块,反映了早期设计阶段,此时块通常配置成简单的形状。另一方面,FloorSet-Prime 使用不规则块,这在设计过程的后期更常见。此时,块内宏、标准单元和其他组件的放置已经得到改进,从而形成了非矩形块形状。
虽然这些数据集是人工的,但我们还是小心地融入了商用芯片的特征。为此,我们创建了布局规划属性的详细统计分布,例如块尺寸和约束类型。然后,我们从这些分布中抽样,以创建模拟真实芯片布局的合成布局规划。
如此强大的开放式存储库可以大大促进机器学习在芯片设计中的应用。然而,我们不太可能看到完全基于人工智能的解决方案来解决布局规划等棘手的优化问题。深度学习模型在对象识别和语言生成等任务中占据主导地位,因为它们非常擅长捕捉训练数据中的统计规律,并将这些模式与期望的输出关联起来。但这种方法不适用于复杂的组合优化问题,因为这些问题需要模式识别以外的技术才能解决。
相反,我们预计混合算法将成为最终的赢家。通过学习识别最有希望探索的解决方案类型,AI 模型可以智能地引导像 Parsac 这样的搜索代理,使其更加高效。芯片设计师可以更快地解决问题,从而创造出更复杂、更节能的芯片。他们甚至可以将多个设计阶段组合成一个优化问题,或者同时进行多个设计。AI 可能无法完全独立地创建芯片,甚至无法解决单个设计阶段。但当与其他创新方法相结合时,它将改变该领域的格局。
https://spectrum.ieee.org/chip-design-ai
半导体精品公众号推荐
专注半导体领域更多原创内容
关注全球半导体产业动向与趋势
*免责声明:本文由作者原创。文章内容系作者个人观点,半导体行业观察转载仅为了传达一种不同的观点,不代表半导体行业观察对该观点赞同或支持,如果有任何异议,欢迎联系半导体行业观察。
今天是《半导体行业观察》为您分享的第3954期内容,欢迎关注。
『半导体第一垂直媒体』
实时 专业 原创 深度
公众号ID:icbank
喜欢我们的内容就点“在看”分享给小伙伴哦
热门跟贴