2024华数杯全国大学生数学建模竞赛B题思路-VLSI电路单元的自动布局-混合高度单元聚集和整形算法

章提出了一种混合高度单元聚类算法,用于解决行内最小注入限制违规(Intrarow MIA violation),接着结合使用贪心算法和舞蹈链(Dancing Links, DLX)算法[32] 进行整形得到具有最小面积的集群。本章首先简单介绍该聚集算法,然后对该算法的 每一步以及对应的伪代码进行详细介绍,最后介绍使用 DLX 算法将集群进行整形。

3.1 混合高度单元聚集算法

为了尽量避免通过插入填充来解决行内最小注入限制违规(Intra-row MIA violation)的情况出现,本文采用聚集的方法来解决行内 MIA 违规问题。对于混合高 度单元聚集,重要的是确定哪些单元被聚集到同一个集群。图 3-1 显示了一个简单的 示例,目前国际上同领域最新的方法[24,26]为了保证解的质量,在窗口执行行内 MIA 违 规单元的聚类,其窗口大小设置为 6×6倍行高,具体的步骤是,窗口将从芯片的左下 角开始,从左到右和从下到上移动,直到遍历整个芯片,其中窗口水平移动和垂直移 动的 x 步长和 y 步长,这两个值分别设置为 3 行高。 然而,这种做法可能导致新的行内 MIA 违规,如图 3-1 (b)所示。另外,该聚集方 法存在明显的缺点,即仅将窗口内的行内 MIA 违规单元简单地聚集在一起。这种方法 只考虑了物理位置上相邻的行内 MIA违规单元的聚集,而没有考虑到其他相关信息, 例如线长、最优区域等。因此,在制定混合高度单元聚集方案时,本研究将考虑单元 的最优区域[25]。

3.1.1 最优区域的计算

假设电路中的所有其他的单元都是固定的,则单元的最佳区域被定义为使得布局 的线长最短的区域[25]。这个区域是根据[32]的中位数思想确定的。下面详细描述最优区 域的计算过程。 具体来说,对于任何一个单元𝑐𝑖,遍历连接到它的所有网络(记为𝐸𝑖)并找到它 们的边界方框。这里,在计算网络𝑒𝑗 (𝑒𝑗ϵ𝐸𝑖 )的边界方框时,该单元𝑐𝑖被排除在此网络𝑒𝑗 之外。对于每个网络𝑒𝑗ϵ𝐸𝑖,找到它的边界方框(左、右、下和上)(𝑥𝑙 [𝑒𝑗 ], 𝑥𝑟 [𝑒𝑗 ], 𝑦𝑏[𝑒𝑗 ], 𝑥𝑡 [𝑒𝑗 ] ) 。根据 [32] 最 佳 区 域 为 ( 𝑥𝑜𝑝𝑡 , 𝑦𝑜𝑝𝑡 ) , 其 中 𝑥𝑜𝑝𝑡 和 𝑦𝑜𝑝𝑡 分别是序列 (𝑥𝑙 [𝑒1 ], 𝑥𝑟 [𝑒1 ], 𝑥𝑙 [𝑒2 ], 𝑥𝑙 [𝑒2 ], ...)的中位数和序列(𝑦𝑏 [𝑒1 ], 𝑦𝑢 [𝑒1 ], 𝑦𝑏 [𝑒2 ], 𝑦𝑢 [𝑒2 ], ...)的中位数。 一般来说,最佳位置是一个区域而不是一个点,因为序列 𝒙 和序列 𝒚中的元素个数总 是一个偶数。该区域是单元的最优区域。但在某些情况下,当序列 𝒙 的中位数是两个 相同的值或序列 𝒚的中位数是两个相同的值时,最优区域则是一个点或一条线。

图 3-2 显示了单元𝑐1的最优区域,与单元𝑐1相连接的有 3 个网络,分别是𝑒1, 𝑒2和 𝑒3。这些网络分别由封闭的虚线表示,网络𝑒1包含单元𝑐1, 𝑐2, 𝑐3和𝑐4,网络𝑒2包含单元 𝑐1, 𝑐2, 𝑐3和𝑐4,网络𝑒1包含单元𝑐1, 𝑐2, 𝑐3和𝑐4。粗边界方框是网络中不包括单元𝑐1的边 界方框。横向和竖向直虚线分别是序列 𝒙 (𝑥𝑙 [𝑒1 ], 𝑥𝑟 [𝑒1 ], 𝑥𝑙 [𝑒2 ], 𝑥𝑟 [𝑒2 ], 𝑥𝑙 [𝑒3 ], 𝑥𝑟 [𝑒3 ]) 和序列𝒚 (𝑦𝑏 [𝑒1 ], 𝑦𝑢 [𝑒1 ], 𝑦𝑏 [𝑒2 ], 𝑦𝑢 [𝑒2 ], 𝑦𝑏 [𝑒3 ], 𝑦𝑢 [𝑒3 ])。阴影区域是单元𝑐1的最优区域。

对于目前国际上相关领域最新的算法[24,26],他们的聚集算法,可能会降低线长质 量,图 3-3 显示了一个简单示范。在图 3-3 (a)中,在初始布局中有 10 个行内 MIA 违规 的单元𝑐2, 𝑐3, 𝑐6, 𝑐8, 𝑐12, 𝑐17, 𝑐18, 𝑐21, 𝑐23和𝑐28。如图 3-3 (b)所示,如果通过此方法[24,26]进 行聚类,形成了两个集群𝑢1和𝑢2。由该研究[25]可知,若要达到线长最短,单元放在最优区域里,如图 3-3 (c)所示,然而由于两个集群𝑢1和𝑢2里面被聚到的单元𝑐8和𝑐21分 别都远离自己所在的集群,所有这样可能会导致线长显著增加。

要在聚集之后得到一个比较高质量的解,对于混合高度单元聚集来说,确定那些 单元被聚集到同一个集群里是非常重要的。因此,文本将最优区域邻近的单元纳入聚 集策略中,以提高线长的质量。此外,为了进一步节省运行时间,在合法化之前执行 聚类。如图 3-3 (d)所示,单元𝑐21的最优区域𝑟1与集群𝑢1邻近,因此将单元𝑐21聚集到集 群𝑢1中,同样,单元𝑐8的最优区域𝑟2与集群𝑢2邻近,因此将单元𝑐8聚集到集群𝑢2中。

如图 3-3 (c)所示,如果将最优区域中相距较远的单元聚集在一起,则无论该集群 被放置在何处,解的质量都会变差,尽管该方法[24]通过对集群进行移动和交换来减小 线长的增加,但提升很有限。因此,本文对这个问题定义如下: 给定一组具有相同阈值电压类型(VT)且其本身的宽度小于最小注入宽度(IW) 的单元𝐶 = {𝑐1, 𝑐2, ... , 𝑐𝑛 }。将𝐶聚集到一个集群集合𝑈 = {𝑢1, 𝑢2, ... , 𝑢𝑚},使𝑈中每个集 群中所有单元的最优区域都相互重叠且每个集群的最终宽度不小于 IW。 根据动态规划的定义[33],如果一个问题由多个子问题组成且子问题之间不独立,

为了得到全局最优解,每个子问题对其他子问题的影响都应该最小化。

因此,具有小 的最优区域的单元应该优先被聚集,因为它们具有较小的灵活性。 具体来说,图 3-4 显示了一个简单的示例,覆盖面积较大的最优区域𝑟3拥有较大 的灵活性,最优区域𝑟3对应的单元可以被聚集到集群𝑢1或者集群𝑢2。而覆盖面积较小 的最优区域𝑟1, 𝑟2和𝑟4拥有较小的灵活性,最优区域𝑟1和𝑟2靠近集群𝑢1,远离集群𝑢2, 而最优区域𝑟4远离集群𝑢1,靠近集群𝑢2。每个集群拥有容量限制,这里假定最多容纳 两个单元。 显然,此例子的最优的解决方案是,集群𝑢1由最优区域是𝑟1的单元和最优区域是 𝑟2的单元组成,集群𝑢2由最优区域是𝑟3的单元和最优区域是𝑟4的单元组成。其他的解 决方案都不是最优解,因为如果最优区域𝑟3的单元被聚集到集群𝑢1,就会有最优区域 𝑟1或𝑟2的单元被聚集到距离较远的集群𝑢2,这会导致线长显著增加。 因此,在选择将单元聚集到集群的过程中,应遵循以下两个优先选择原则:

(1)优先选择最优区域较小的单元;

(2)优先选择最优区域与目标集群距离最近的单元。 根据以上两个原则,本文设计出了算法 1 和算法 2 来执行聚集。

首先,将有可能发生行内 MIA 违规的所有单元,即宽度小于最小注入宽度(IW) 且具有相同的阈值电压类型(VT),纳入到需要被聚集的集合里面,并计算出它们 的最优区域。接着,使用算法 1 来进行聚集生成所有的集群,在算法 1 中,通过调用 算法 2 生成逐个集群,直到需要被聚集的单元集合为空为止。

在算法 2 中,采用贪心策略来选择单元加入到集群中,并更新集群的高度以估算 集群的宽度。具体来说,首先选择具有最小最优区域的单元作为首个被聚集到集群中 的单元,该单元是首个被聚集到集群里面的单元,该单元的中心位置作为该集群的中 心位置。然后,选择出哪些单最优区域距离该集群最近且最优区域最小的单元加入到 集群中,并更新集群的高度以估算集群的宽度。重复该过程,直到集群的宽度(即所 有单元的面积总和除以集群的高度)大于最小注入宽度(IW)。由于混合高度单元拥 有不同的高度,所以需要在每次向集群里添加单元时更新集群的高度,本文简单地选 择最高单元的高度作为集群的高度。

本文提出的 MIA 感知详细布局算法中的聚集算法来解决行内 MIA 违规的问题。 通过该算法能够在合法化之前避免所有的行内 MIA 违规的发生,而非在合法化之后再 进行行内 MIA修复,本文的算法减少该步骤从而减少总体算法的时间复杂度。简而言 之,该聚集算法首先将所有可能发生行内 MIA 违规的单元纳入到需要被聚集的集合中, 并计算出它们的最优区域。然后,使用算法 1 来进行聚集生成所有的集群。在算法 1 中,通过调用算法 2 生成逐个集群,直到需要被聚集的单元集合为空为止。这通过此 步骤能够将所有可能发生行内 MIA违规的单元聚集到一起,保证了之后的步骤不会发 生行内 MIA 违规。

此外,由于特定的一些单元被聚集之后,在之后的阶段中将保持其结合性,无论 经过多么复杂的过程始终不会发生行内 MIA 违规,因此将该算法可以应用于更复杂的 设计布局中,以探索其在实际应用中的效果和可行性。

3.2 整形算法

在得到所有集群之后,需要对每个集群内的单元重新进行排列组合,以使集群面 积最小化。因为集群内的混合高度单元在没有经过紧凑排列的情况下,可能会在布局 中产生显著的面积和线长开销。因此,本文需要对集群内的单元进行整形,使得它们 能够被紧凑排列,同时最小化集群的面积,从而避免显著的面积和线长开销。 3.2.1 问题转化 寻找一组不同尺寸(高度)的矩形的最小边界方框确实是 NP 难题[34],因此需要 使用一些启发式算法来解决这个问题。之前的研究[24,26]已经提出了一些整形方法来减 少面积和线长的开销,这些方法在实践中也表现良好。在本文中,将延用并扩展该方 法,即将问题转化为精准覆盖问题,以适应混合高度单元的情况。通过上一节中的聚 类方法,本文已经固定了每个集群的高度,因此只需要确定每个集群的宽度,问题的 复杂度大大降低了。 由于混合高度单元拥有不同的高度,通常情况下选择最高单元的高度作为集群的 高度。但在特殊情况下,由于电源轨道的约束限制,如果集群内部最高的单元的高度 是偶数倍行高,并且在最高的单元中,它们的顶部(或底部)的电源类型拥有两种电压,即同时为正极(Vdd)或负极(Vss),那么集群的宽度应设为最高单元的高度加 上行高。如图 3-5 所示,这是一个集群包含单元𝑐1, 𝑐2和𝑐3,单元𝑐3属于奇数倍行高, 则可以被放置在任意行。而单元𝑐1和单元𝑐2是集群中最高的单元,且它们属于偶数倍 行高的单元,它们的顶端和底端的电源类型为同一种类型,即同时为正极(Vdd)或 负极(Vss)。单元𝑐1的顶端(底端)的电源类型是正极(Vdd),而单元𝑐2的顶端 (底端)的电源类型是负极(Vss),因此它们不能同时并排到同一行。因此,这种 情况下的集群的高度最小应为最高的偶数倍行高的单元的高度加上行高。集群𝑢𝑘的高 度可以用以下公式确定:

需要找到一个最小的矩形,以容纳集群内的所有单元,并且使得该矩形的面积最 小。由于已知预先确定了集群的高度ℎ𝑢𝑘,现只需要确定集群的最小的宽度𝑤𝑢𝑘,为了 实现这一目标,需要枚举最小集群边界方框内的所有单元排列组合。这可以转化为一 个精确覆盖问题,即将集群内部单元在面积占用情况表示为由 0 或 1 表示的矩阵,即 用集群内的所有单元来覆盖整个集群区域且不相互重叠。

3.2.2 改进整形算法

对于精准覆盖问题,贪心算法可以快速求解出这个问题但在某些时候不是最优解。 此外,由 Donald Ervin Knuth 提出了用舞蹈链(Dancing Links, DLX)算法可以很好的 来解决这个问题[35]。本文将两者结合高效地解决此问题。 首先根据贪心算法,制定贪婪策略,其步骤如下: 1、将单元按高度从大到小排序; 2、将相同高度单元按宽度从大到小排序; 3、将在集群里从左到右从下到上的顺序寻找单元的合法化位置并放置。 图 3-6 展示了一个简单的例子。集群里有单元𝑐1, 𝑐2, 𝑐3, 𝑐4, 𝑐5, 𝑐6和𝑐7,首先,本文 按照高度从大到小作为第一优先级,宽度从大到小作为第二优先级进行排序,如图 3- 6 (a)所示。接着,依照步骤 3,根据排序好的单元顺序依次摆放,最终可以得到集群 内部单元的合法化排列结果,如图 3-6 (b)所示。图 3-6 (c) 展示了一种最优的结果。

另外,DLX 算法也可以很好的来解决这个问题,他们[24,26]在实际应用过程中也表 现的很好,但 DLX 算法有个前提是需要提前设定集群的高度和宽度,使用 DLX 来找 到合法的结果。具体做法如下。

由于在布局中会有一个最小面积单位,即站宽×行高(Site width × Row height), 单元的长宽也分别是这个的倍数,因此本文以行高ℎ𝑟𝑜𝑤作为最小高度单位,站宽𝑤𝑠𝑖𝑡ⅇ 作为最小宽度单位,从而简化整形问题复杂度。这里设集群𝑢𝑘的宽度𝑤𝑢𝑘,集群𝑢𝑘占 用的平面区域为𝑤𝑢𝑘×ℎ𝑢𝑘,可拆分为多个单位面积的区域(𝑝1, 𝑝2, ...),集群𝑢𝑘内的单元 可以占用这些区域,但同一区域只能被占用一次。如果集群内的所有单元不能完全覆 盖集群区域,则让一个或多个单位面积的虚拟填充单元来完全覆盖集群区域。

图 3-7 显示了一个示例。如图 3-7 (a)所示,集群𝑢1中有三个单元𝑐1,𝑐2和𝑐3,图 3-7 (b)显示了集群区域被分成 6 个单位面积的区域(𝑝1, 𝑝2, ... , 𝑝6),将单元在集群中的位置 定义为放置方式。每个单元𝑐𝑖有不同的𝜂𝑖合法的放置方式,单元𝑐𝑖的第𝑙种放置方式表 示为𝑞𝑙 𝑐𝑖,其中𝑙=1,2, . . , 𝜂𝑖。在图 3-7 的例子中,单元𝑐3有两种放置放式,分别为𝑞1 𝑐3和 𝑞2 𝑐3,其中𝑞1 𝑐3表示单元𝑐3占用区域𝑝1, 𝑝3和𝑝5,𝑞2 𝑐3表示单元𝑐3占用区域𝑝2, 𝑝4和𝑝6,单 元𝑐1和𝑐2同理。如图 3-7 (c)所示,矩阵中行由集群区域和单元组成,集群区域 (𝑝1, 𝑝2, ... , 𝑝6)排在前,单元(𝑐1,𝑐2,𝑐3)排在后,每一个单元的一种放置方式为矩阵的一 行,所有单元的所有放置方式组成一个矩阵。能不能精准覆盖,可以通过DLX算法求 出,如果有解,则可以通过解中得到所有单元放置方式,如果没有解,则说明在该设 定集群的宽度的情况下不能得到所有单元的合法排列布局,则需要调大集群的宽度。

在这种情况下,快速找到最小集群的宽度至关重要。本文将采用二分搜索算法来 加快寻找最小集群宽度的过程。重要的是,需要确定集群宽度的上限和下限。为了确 保集群内有不重叠的单元,集群宽度不能小于集群内所有单元面积总和除以集群高度。 因此,本文将集群的宽度下限设置为集群内所有单元面积总和除以集群高度,将集群 的宽度上限设置为贪心策略所得到的集群的宽度。最终求解的结果则是最优的结果。

通过图 3-6 的例子可以看出,贪心策略得出的结果不一定是最优的,因为这种方 法可能会产生额外的空白区域。尽管如此,本文仍然将由贪心策略得出的集群宽度作 为二分搜索中集群的宽度上限。集群的宽度下限则被设置为集群内所有单元面积总和 除以集群高度。最后,通过使用二分搜索,每次搜索采用DLX算法,可以得到最小集 群边界方框中的所有单元的布置方式。

更多华数杯相关文章参考:
2024年华数杯全国大学生数学建模竞赛A题-考虑动力学和外部干扰的关节角路径优化问题4详细求解过程-CSDN博客

2024年华数杯全国大学生数学建模竞赛A题-在有障碍物的情况下优化机器臂底座移动路径和关节角路径问题3详细求解过程-CSDN博客 2024年华数杯全国大学生数学建模竞赛A题-关节角路径的优化设计以最小化末端误差和能耗问题2详细求解过程-CSDN博客

2024年华数杯全国大学生数学建模竞赛A题-六自由度机器臂的数学建模及关节角路径优化问题1详细求解过程-CSDN博客

2024年第五届"华数杯"全国大学生数学建模竞赛C赛题解析-CSDN博客

2024年第五届"华数杯"全国大学生数学建模竞赛B赛题解析-CSDN博客

2024年第五届"华数杯"全国大学生数学建模竞赛A赛题解析-CSDN博客

2024年第五届"华数杯"全国大学生数学建模竞赛-CSDN博客

相关推荐
BY—-组态15 小时前
国内web组态推荐
前端·物联网·数学建模·编辑器·html·工业互联网
liangbm316 小时前
数学建模笔记—— 非线性规划
笔记·python·数学建模·matlab·算法学习·非线性规划·优化问题
梦想科研社18 小时前
【无人机设计与控制】用于四轴飞行器仿真和控制系统设计的参数驱动的 Simulink 模型
开发语言·数学建模·matlab·无人机
nancheng_single1 天前
2024年高教社杯全国大学生数学建模竞赛题目C题农作物的种植策略思路代码分析
人工智能·python·算法·机器学习·数学建模
愿望会实现吧1 天前
| Origin绘图 |瀑布图的绘制(保姆级教程)
数学建模
C灿灿数模1 天前
2024国赛数学建模C题完整论文:农作物的种植策略
数学建模
蟹堡王首席大厨1 天前
2024 年高教社杯全国大学生数学建模竞赛C题—农作物的种植策略(讲解+代码+成品论文助攻,均已更新完毕)
python·数学建模·高教社杯
知新_ROL2 天前
2024全国大学省数学建模竞赛A题-原创参考论文(部分+第一问代码)
数学建模
Azure_loyal2 天前
【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)
数学建模
小文数模2 天前
2024国赛数学建模B题完整分析参考论文38页(含模型和可运行代码)
python·数学建模·matlab