[读论文] Towards Machine Learning for Placement and Routing in Chip Design: a Methodological Overview

在现代芯片设计流程中,布局和布线是NP - hard问题。与传统求解器相比,机器学习前景广阔。本文介绍了布局和布线问题及经典求解器,阐述了机器学习在布局和布线中的应用,包括增强传统布局器、决策制定、预测模型嵌入等,还提及开源项目和公共数据集,同时指出了面临的挑战和局限。

Abstract

在现代芯片设计流程中,放置和布线是两个不可或缺且具有挑战性的 NP-hard 问题。与使用启发式算法或专家精心设计的算法的传统求解器相比,机器学习凭借其数据驱动的性质显示出了广阔的前景,它可以减少对知识和先验的依赖,并且通过其先进的计算范式具有更大的可扩展性 (例如 GPU 加速的深度网络)。本调查首先介绍了基本的布局(Placement)和布线(Routing),并简要介绍了经典的无学习解算器。

1. Introduction

布局和布线是芯片设计过程中最关键但最耗时的两个步骤。布局将逻辑门和功能块等各种逻辑组件分配到芯片物理布局中的离散位置,布线完成物理上的互连。布局和布线的目标是在约束条件下优化功率、性能和面积 (power, performance, and area PPA) 指标,例如布局密度和布局拥塞。

布局可以看作是具有几何约束的二维装箱问题的一个更为复杂的变化。后者被认为是 NP-hard 问题。布局与电路设计的逻辑互连和逻辑元件的几何位置有关。由于在布线之前无法准确评估放置解决方案的质量,导致设计流程中的反馈循环很长,因此现代布局需要在早期阶段减少布线拥塞并提高可达性。布线已经被证明是 NP-hard问题。布局与布线紧密耦合,一个优秀的布局解决方案可以带来更好的芯片面积利用率、时序性能和可达性。

目前 EDA 领域的 ML 研究主要分为四类:传统的决策方法、性能预测、黑盒优化和自动化设计,这四类按照自动化程度递增。


在这里插入图片描述

2. Problem Background and Classic Solvers

2.1 Placement Problem

布局可以在不同的层次上进行。通常,全局布局(Global Placement)涉及宏布局(Macro Placement)和标准单元布局(Standard Cell Placement)。详细布局(Detailed Placement)包括合法化(legalization),线长(wirelength)和可达性的细化(routability refinement)。

  • Global Placement
    芯片设计过程中最关键但最耗时的步骤之一,可以看作是一个约束优化问题。它为网表(netlist)的各种组件分配精确的位置,包括芯片布局中的宏和标准单元。标准单元是基本逻辑单元,即逻辑门,是预先设计的IP块,例如 SRAM。良好的布局会带来更好的芯片面积利用率、时序性能和可达性,而较差的布局会影响芯片的性能,甚至使其无法制造。

    在形式上,全局布局的输入是一个可以用超图表示的网表 H=(V,E)H=(V,E)H=(V,E)V={ v1,v2,⋯ ,vn}V=\{v_1,v_2,\cdots,v_n\}V={ v1,v2,,vn} 表示宏和标准单元组成的点集而 E={ e1,e2,⋯ ,em}E=\{e_1,e_2,\cdots,e_m\}E={ e1,e2,,em} 表示超边,ei∈Ee_i\in EeiE 是点集的非空子集。我们试图确定宏和标准单元格的位置 (xi,yi)(x_i,y_i)(xi,yi

由于没有提供具体的参考引用内容,以下是一些基于一般性知识对《Towards Cost - Effective Learning: A Synergy of Semi - Supervised and Active Learning》可能涉及内容的推测。 该研究可能聚焦于如何将半监督学习和主动学习相结合以实现更具成本效益的学习方式。半监督学习利用大量未标记数据和少量标记数据进行学习,而主动学习则通过主动选择最有价值的数据进行标记来提高学习效率。二者结合可能在减少标记数据成本的同时,提升模型的性能和泛化能力。 在实际应用中,这种结合可能会用于图像识别、自然语言处理等领域,以在有限的资源下取得更好的学习效果。例如,在图像识别任务中,主动选择一些具有代表性的图像进行标记,然后结合大量未标记图像进行半监督学习,从而在不标记大量图像的情况下获得高精度的识别模型。 ```python # 这里简单模拟一个可能的主动学习和半监督学习结合的伪代码框架 # 假设我们有一些未标记数据和少量标记数据 unlabeled_data = [...] labeled_data = [...] # 主动学习选择最有价值的数据进行标记 def active_selection(unlabeled_data, model): # 选择最有价值的数据的逻辑 selected_data = ... return selected_data # 半监督学习更新模型 def semi_supervised_learning(model, labeled_data, unlabeled_data): # 半监督学习的训练逻辑 updated_model = ... return updated_model # 循环进行主动学习和半监督学习 model = ... for i in range(num_iterations): selected_data = active_selection(unlabeled_data, model) # 标记选择的数据 labeled_data.extend(selected_data) model = semi_supervised_learning(model, labeled_data, unlabeled_data) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SP FA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值