解决Congestion 的常用技巧你造吗?

您所在的位置:网站首页 scala常用方法 解决Congestion 的常用技巧你造吗?

解决Congestion 的常用技巧你造吗?

2023-03-24 01:48| 来源: 网络整理| 查看: 265

解决绕线阻塞(congestion)是数字芯片后端设计floorplan阶段的基本要求。

Floorplan阶段发生严重的Congestion, 将给绕线带来困难,有可能导致大量的违反工艺规则的violations (DRC), 最终布线无法绕通。另一外方面, congestion严重的设计,crosstalk也会很严重,将会给时序收敛带来巨大挑战。从而影响后端设计周期,并有可能导致芯片失败。

因此,在floorplan阶段, 通常把解决congestion作为数字芯片后端floorplan阶段的基本任务和首要目标。那么什么是布线阻塞( congestion) 呢?

芯片在绕线的时候,当可利用的布线资源少于所需要的布线资源时, 就会发生布线塞。

通常, 我们可以借助自动布局布线工具,以图示(Congestion Map) 的方式,直观的表现congestion (如下图所示) 以红橙黄绿蓝等不同的颜色分别代表congestion的严重程度, 其中以红色表示最为严重。

另外也可以通过文本报告的形式来衡量congestion, 如下图所示

H 指水平布线方向的布线阻塞统计;V 指垂直方向的布线阻塞统计;Overflow (溢出) 指设计中缺少的Track的数量;Max 指GRC (Global Route Cell) 中的最大溢出值。常有初学者会问, 发生了congestion, 有哪些方法可以解决呢? 在此,笔者列举了三种经常出现的congestion 及解决方法。

1、memory channel 间的channel congestion

当相邻的两个memory 距离很近时,导致memory的数据线和地址线在狭窄的空间内无法找到足够的布线通道,通常会发生congestion,如上图示。

解决方法一般为调整memory的位置,避免产生狭窄的通道。

通过调整memory的位置,congestion得到了明显的改善,如下图所示:

2、局部高密度标准单元引起的congestion

大量的绕线通过 高密度标准单元区域的时,有时候会发生局部的 较为严重的congestion,如下图所示:

为了解决局部congestion, 我们通常会借助partial blockage 降低局部区域的标准单元密度。 Partial blockage 是 placement blockage的一种, 是某一区域设定标准单元的利用率。 有时候用partial blockage ,并不能有效的解决congestion。笔者在长期的项目实践中, 发现用blockage array能有效的解决此类congestion。Blockage array 是用”blockage 阵列” 的方式,控制congestion 区域的标准单元的在区域内成条状分布: 一方面 降低了密度,另一方面预留出了布线通道。如下图:

3、局部高密度pin cell导致的congestion

在数字逻辑设计中,如果某些模块用了大量的高密度pin标准单元(如AOI, OAI等),常常会发生局部的congestion。 图示显示单一的标准单元 AOI cell 会有很多的互联关系,这样就会导致在有限的空间内,存在大量的绕线,从而发生congestion。

常用的解决方法是有针对性的降低此种标准单元的密度, 如在ic compiler 里,可以对这些标准单元设置keep_out_margin。通过此种方法,可以有效的削弱congestion。

上述介绍了三种常用的后端设计中解决congestion的技巧和方法,被很多项目所采用。希望对从事芯片后端工作的初学者提供帮助。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3