您的位置 首页 模拟

根据逻辑组的快速宏布局办法

本文介绍了一种适用于高宏数、难时序设计的快速平面布局方法。微捷码 Talus 可基于逻辑组产生所有宏和标准单元的快速布局。我们可通过利用这种布局信息来突出并划分适合的“宏组”,对于高宏数设计来说,这种

1. 介绍

一般来说,逻辑块级规划平面布局的首要作业便是宏布局。传统上,咱们初始宏布局能够之前平面布局形式为根底;布局时咱们应考虑到 IO 衔接,需求先了解宏与 IO 间逻辑关系,然后再将宏设置于相关 IO 的周围;咱们倾向于将宏设置于鸿沟周围;咱们想要将称号形式相似的宏设置在一起;咱们会先运转布局(fix_cell)功用,然后再依据要害时序途径或拥塞来调整宏布局,并且咱们还能够经过显现往复宏的飞线来调查宏和 STD(规范)单元的布局是否合理。

关于传统平面布局办法,咱们或许要花很长时刻来了解咱们的规划,或许要与前端规划师进行评论,或许要经过屡次物理布局迭代来完结时序收敛。关于宏数量巨大的规划来说,这但是项十分恐惧的作业。现在咱们有了一种依据逻辑组的新平面布局办法,它可更快速有用地完结平面布局作业。这个流程共分为 3 个进程:

1) 一起进行宏和 STD 单元布局(粗布局,“run place cluster”);
2) 区分逻辑组(针对宏和 STD 单元一起进行);
3) 增量布局,调整逻辑组形状和方位。

2. 粗布局(Coarse placement)

咱们可将整个布局作业(fix_cell)分为 2 个进程:

1) 粗布局:履行规划的初始布局;
2) 依据粗布局的增量优化。

进程 1)是获得好布局成果的要害点,咱们的全部评论都将环绕“粗布局”打开。

在 Talus 中,有两个不同“粗布局”指令——“run place cluster”和“run place global”,这两个指令可依据逻辑组(群)进行粗布局。“run place cluster”可一起完结宏和 STD 单元的布局,而“run place global”则会在考虑拥塞状况的前提下进行 STD 单元布局。就咱们所知,“fix_cell”一般是运用“place global”来完结粗布局。依据咱们的测验,若宏的方位相同,那么“place global”和“place cluster”布局成果也将十分挨近,因而咱们可依据“place cluster”成果来猜测“fix_cell”粗布局成果。

下图显现了规划事例 D1 的“place cluster”成果(图 1):


咱们引荐的完好指令为:“run place cluster $m –effort high –macro_style overlapping”。由于答应宏堆叠,因而咱们可更轻松地区分宏组;若未加入选项“-ignore_io”,那么体系会默以为考虑 IO 衔接;D1 运转时刻为 5~10 分钟(60 万个单元级电路,“place global”所需时刻约为它的 2~4 倍)。

粗布局的最重要考量点不是时序和拥塞,而是线长(图 2)。

关于左面布局形式,它是先分组为 (A, B, C, D)和(E, F, G),然后再进行布局;关于右边布局形式(依据布局的线长),布局器会将相互间衔接多的单元设置在一起((A, B, C, E)和(D, F, G)),这样所得总线长最短。咱们不难看出右边布局形式中横跨这两组的飞线要少于左面布局形式,这种形式用于处理拥塞问题也很不错。因而咱们应像布局器相同区分逻辑组以获得可猜测的布局成果。

3. 区分逻辑组

区分逻辑组原理有:

1) 一起对宏以及与其衔接的逻辑进行分组。就咱们所知,一个宏或许有许多输入/输出(I/O)引脚,与其所衔接的逻辑间沟通也很频频,宏的方位对逻辑的布局有很大影响,因而咱们应将宏和逻辑分在一组里,一起不该有直接衔接宏的飞线横跨不同的逻辑组

2) 跨不同组的飞线应尽或许少。换句话来说,假如你看到许多跨两个组的飞线,那么这两个组应分在一组里。
如图 3 所示,大都飞线是坐落“暗绿色”组周围。

关于那些已在 RTL 中进行了很好层次化区分的简略规划,咱们可利用 Talus 层次浏览器来区分逻辑组。
以 D1 为例,层次命名形式为“AAA/BBB/CCC_1/…”。咱们可轻松地将 D1 分为 3 个逻辑组,然后再进行宏布局。具体完结进程如下(图 4):

咱们可进行更深层的层次树(hierarchy tree)合并以获得更具体的组区分(图 5):

关于一些称号形式不如此友爱的规划,咱们不能从层次浏览器中获得明晰的组信息。那么咱们应选用下列额定选项来改进咱们的“粗布局”:“run place cluster $m –effort high –macro_style overlapping –max_util 1”。
max_util 默认值为 0.6。由于 max_util 值越低,涣散于可用区域上组群就越涣散;因而咱们将“max_util”值设为“1”,如此一来这个组群将更为会集,逻辑组的区分也更简单得多。
以另一项规划 D2 为例。

图 6 显现了“max_util”= 0.6(默认值)的成果。咱们不难发现它将一切 STD 单元分布于整个芯片上。

当咱们设置 max_util = 1(图 7)时,这个组群的布局将更为会集。芯片中有许多空白区,布局器可更灵敏地完结这个组群的布局。一起,咱们不难看出这个“黄色”组和“粉色”组的形状比之前好多了。不过,咱们发现“绿色”组和“赤色”组仍被一些宏给分离隔。咱们应运用更活跃办法来处理这个问题:咱们可将这些宏仓库在一起并固定,然后再进行“run place cluster“(它不会触及已固定单元)(图 8)。


现在“绿色”组和“赤色”组形状看起来好多了,这证明了它们是真实的逻辑组,应被设置在一起。

4. 调整逻辑组形状和方位

当咱们有了清楚的逻辑组区分时,咱们可先将宏设置于“粗布局”初始方位的周围;然后再固定那些宏并运转“place cluster”。布局器将只进行这一次的 STD 单元布局。依据布局成果,咱们将测验经过更改宏方位来调整逻辑组形状和方位,特别是关于时序要害逻辑组来说更是如此。判别好的逻辑组形状的规范有:

1) 相似“馅饼 (pie)”的布局;
2) 没有其它逻辑组 STD 单元逻辑侵入馅饼型布局中;
3) 在馅饼型布局周围没有大型宏。

“时序要害组”是指有很多时序违规端点(触发器)占绝大部分总时序违规的组,而不是指有几个时序违规端点且或许具有最差负余量(worst negative slack)的组。一般来说,这些途径的起点也在这组中;它们有很深的逻辑层,且这个起点还或许有高扇出结束(FFS)。据咱们的组区分原理,要想最大程度下降跨组的飞线数量,这些起点和结束也应分在一组里。然后咱们应将这组布局为相似“馅饼”的形状,这样才可使得周围逻辑单元方位更紧凑,还可最大程度地下降途径延时(刺进的缓冲区越少,占用面积也就越小)。

以另一项规划 D3 为例(图 9)。

“暗绿色”组是时序要害组,在左面平面布局图中被布局为“倒 T 字型”形状。在右边平面布局图中,咱们调整宏布局将这个组布局调整为“馅饼型”形状,这样的时序将会好得多。

有时为了清理出些空间以获得好的要害组形状,咱们或许需求将其它非要害组移出相关区域。对此咱们能做的一件事便是调整宏方位。当你将宏移出时,与这个宏相衔接的逻辑也将紧随其后移出。事实上,它们是同一组,因而咱们可经过移动宏来调整逻辑组的方位和形状。

以下是一个先进的运用比如(图 10)。

A 组和 B 组紧密衔接在一起,A 组中有个宏。而咱们想要将 B 组从芯片左下角移到芯片右边。虽然在 B 组中没有宏,但咱们可移动 A 组中的那个宏,届时 A 组就会将 B 组拉到右边。有时咱们并不能将一切宏设置于鸿沟周围,如:有很多宏占用了芯片很多面积,或许鸿沟引脚密度十分高且鸿沟邻近设置宏或许导致严峻拥塞问题。事实上,咱们是可将宏分布于整个芯片上,当然要以一种合理办法:

如图 11 所示,咱们将 “粉色”组的一些宏放置在组鸿沟,然后尽或许地削减横跨这些宏的飞线,一起不过多地影响“粉色”组及其它组的形状。你可假定每个组都是较低层分区,并且咱们只沿着分区鸿沟来放置宏。


就咱们所知,假如咱们将一个宏设置在逻辑组中心方位,那么这组中会有许多横跨这个宏的飞线,如左图所示,有笔直的也有水平的。乃至更糟糕的是,这个宏将占用“好”方位,使得这个逻辑组中 STD 单元的布局不只不紧凑,并且还添加了额定的绕障途径延时(detour path delay)。当咱们将这个宏设置在组鸿沟时,如右图所示,由于很少有横跨不同组的飞线,因而将只在笔直方向会有横跨这个宏的飞线,水平方向则没有;并且它对 B 组中 STD 单元布局影响更小;当然所支付的价值便是 B 组的那个宏会侵略到 A 组空间中。因而你应先做出挑选,挑选哪个组有较高优先权。

一切这些调整实验均可经过“place cluster”命来快速轻松地得以运用。你能够先移动并固定一些宏(“place cluster”并不触及已固定单元),然后再运转粗布局来调查这个组的形状和方位是怎么改变的、哪些看起来像“大陆漂移”。由于无需运转完好 fix_cell 实验,它将节约很多时刻。

5. 总结

经过“run place cluster”快速完结的依据逻辑组的宏布局是处理咱们惯例平面布局作业的一种快速有用办法。总线长、布线拥塞、面积和时序(WNS/TNS)这些方针与好的宏布局不再存在抵触。

咱们可在开始时运用“place cluster”来进行大部分实验,在结束时运用“place global”来获得更准确布局成果。
就咱们看来,一个规划就像是一座房子:逻辑组是不同房间(卧室、厨房、客厅…),咱们期望这些房间能具有很好的格式区分和规矩的形状;每个房间都有其独自功用,当咱们在客厅款待很多客人时,客人不能太经常地走到咱们的卧室或厨房(最大程度下降十字切开);宏是房间里的家具,咱们一般应将家具靠墙放置,这样咱们就不会阻碍咱们走动;咱们不该将它们放置在靠窗户方位(高引脚密度),由于这样的话阳光就被它们给挡住了。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/moni/196411.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部