中文 英语
18l18luck新利
的意见

双模自动拼接的缺陷

可能出错的地方,出错的地方该怎么做。

受欢迎程度

自从第一个双图案(DP)奇循环误差环在布局上产生以来,设计师们一直渴望一个神奇的解决方案来解决它。传统上,修复奇循环错误的第一种方法是移动一个多边形或多边形边,以增加循环中相邻多边形的间距。或者,你也可以把一个多边形全部移除,或者把它分成两部分。所有这些修正从根本上改变了布局。

然后就有了缝合的想法。用一针,你创造了把一个多边形分成两部分的效果,而不是真正用电把它打破。通常情况下,多边形在分解时必须只有一种颜色。然而,通过使用一针,你可以在晶圆上创建相同的多边形,用一个掩模打印它的一部分,用另一个掩模打印它的另一部分。图1显示了如何在布局中指定针迹标记,以将原始的未着色多边形分解为在针迹位置具有重叠颜色的两个部分。

fig1_stitch-construct
图1:针迹设计构造和分解。

通过重叠两种颜色,您可以确保一个连续的互连,因为重叠容纳了在制造过程中分别打印两种颜色时可能发生的不对中。从奇数循环的角度来看,缝合为循环增加了另一种颜色的变化,使它再次相等。图2显示了针脚如何解决设计中的奇数周期错误。

fig2_stitch-correction
图2:位置和路线设计中奇周期错误的针迹修正。

拼接是一项非常有用的技术,可以很好地解决DP问题,否则可能很难解决。事实上,产生这些针脚的过程可以自动化,这就更好了。电子设计自动化(EDA) DP工具可以在不改变基本布局的情况下自动修复许多DP奇周期问题。并不是所有的代工厂都支持缝合,但对于那些支持缝合的代工厂来说,缝合提供了一个潜在的非常强大的错误修复解决方案。

那么,谁不想要自动拼接呢?“它自动解决了我的问题!”这是我一直以来的梦想!“让我们看看一些在分解和检查流程中使用自动拼接的DP设计。图3显示了位置和路线(P&R)块上的一些金属层,以及在运行带有和不带有自动拼接的DP过程时奇数周期错误计数的比较情况。

fig3_pnr-layers
图3:没有和有自动拼接的P&R块路由层奇循环错误。

这是一个非常显著的差异。令人印象深刻的是,有多少问题可以通过这种方式自动解决。再说一次,谁不想要自动拼接呢?有光明的一面,就有黑暗的一面。说实话,你早就知道会这样。

本例中的第一个关键观察是,在没有自动拼接的情况下,设计团队实际上从未看到运行的结果。这些跑步只在事后进行,作为死后实验的一部分。因为自动拼接是DP分解和检查流程的默认模式,团队只能看到使用自动拼接的运行结果。当然,结果并不完全干净,但也没有糟糕到让人惊讶的地步。

然而,如果有人在没有自动拼接的情况下运行DP检查,并看到来自路由器输出的结果,整个流程将被停止,每个人都将研究哪里出了问题。但因为他们看到了自动缝合的结果,没有人会多想。

您可能会想:“等一下,如果在P&R运行中真的有那么多奇怪的循环问题,那么路由器中的内置设计规则检查不会发现并标记它们吗?”事实上,路由器确实标记了它们。但结果似乎很糟糕,没有人认为路由器会如此错误!他们认为路由器中的设计规则检查(DRC)一定出了问题。所以他们做了大多数人会做的事。他们在布局上运行了Calibre Multi-Patterning流程,以查看结果是否相关。当Calibre运行的结果好得多时,他们认为自己是正确的,并开始忽略来自路由器的DRC结果!

他们不明白的是,路由器并没有自动缝合功能,他们看到的是没有缝合的设计。Calibre被配置为使用自动拼接,因此它修复了大部分问题,只显示了剩余的DP错误。这种比较就像苹果和橘子,但没有人想到这一点。这种情况不仅发生在P&R期间,它还以类似的效果影响了单元设计验证过程。

这似乎不是一个特别重要的问题,因为在自动拼接修复后,剩余的DP错误数量非常低,但归根结底,设计中的大量内在问题被忽略了,因为它们被自动拼接掩盖了。对于必须处理这些设计的芯片集成团队来说,这绝不是微不足道的。仍然存在的DP问题非常难以理解,修复这些问题更加困难,因为上游的基本设计错误无法在卸膜前纠正。

图4显示了一个糟糕的电池设计实践的例子,直到芯片集成时才被发现,这时解决问题的根本原因已经太晚了。在左边,显示了一些奇循环。如果你仔细观察地面轨道,你会发现它们在单元格行的某一点上改变了厚度。库中的大多数单元在电源轨道和接地轨道之间设计了七轨路由方案,但一个单元设计团队认为他们的单元在八轨路由方案下工作得更好。为了使它们的细胞排成一行,它们只是减小地面轨道的宽度来增加额外的行。虽然这听起来像是一个创造性的解决方案,但这种设计选择在单元格所在的任何单元格行中设置了固有的奇数周期,如右图所示。

fig4_cell-design
图4:单元设计方法问题导致DP奇周期问题。

在图5所示的示例中也发生了类似的情况。一个更大的知识产权(IP)被一个接地环包围,IP被放置在一些标准的单元格行中。接地环与标准电池的接地轨相连,但在标准电池的顶部,接地环向上延伸到电池排的中间,与上面的电源轨之间留有一定的空隙。设计团队用一条宽线填补了这一空白,这也是IP的一部分。问题是,线路产生了一个颜色交替循环,这样大IP中的地面和电源轨道必须是相同的颜色。所有其他标准单元都有一个固有的颜色交替序列,迫使电源和地轨颜色相反。这种变化在标准单元库和这个特殊IP之间产生了固有的颜色交替序列差异。

fig5_cell-design-w-ip
图5。使用IP的单元设计会导致颜色交替错误。

为什么没有人在早期的细胞库设计周期中发现这个问题呢?当然,他们做了一些简单的分级测试,并运行了DRC,不是吗?问题是,在这些细胞的大多数位置,自动拼接可以通过插入大量针脚来克服这些内在问题。在单元设计期间进行的简单放置验证测试中,自动拼接似乎可以使这种设计工作。然而,当涉及到大型设计时,出现了很多问题,其中一小部分无法解决。

在图6中,一大块具有八轨行的IP被放置到具有七轨行的标准单元格区域中。没有缝合,布局就像烟花表演一样明亮。然而,打开自动拼接后,大部分问题都得到了解决。在单元设计期间进行的简单放置测试中,所有问题可能都是可以解决的。在这个大规模的区块中,有些问题是无法解决的。如果在没有自动拼接的情况下运行简单的放置测试,那么设计问题就会立即被发现,并且这个单元格永远不会提供给块设计人员使用。由于这种情况没有发生,芯片精加工团队被迫尝试清理剩余的问题,而没有重新设计电池中的基本问题。

fig6_bad-cell-w-dp-errors
图6:有或没有自动拼接的坏单元格放入块中的奇周期错误。

然而,这不仅仅是电池设计的问题。让我们来看看在路由器中发现的其他一些问题,这些问题被忽略了,直到为时已晚。图7和8显示了自动拼接无法解决的块级别上的一些奇循环错误。虽然他们的人数相对较少,但背后的根本原因实际上遍布整个街区。然而,由于大多数问题都是通过自动拼接解决的,因此没有人想到要花费宝贵的时间来改进路由器配置以解决根本的根本原因。

在图7中,我们看到演示了两个问题。第一种是错向路由,第二种是脱轨路由。与大多数布局相比,这两种设计实践都可以改变局部区域的颜色交替顺序。结果是产生奇周期错误的概率很高,除非路由器非常智能,或者设计团队在路由器配置中严格限制这些路由的使用。我们只能说,大多数路由器的原生智能无法识别这些设计问题,大多数设计团队不会本能地理解使用这些路由的含义,因为像这样的结果掩盖了潜在的问题。正如我们在前面的例子中看到的,这种情况下的路由器也产生了数十万个奇数循环,但其中大多数都被添加的数十万针所掩盖,这些针是为了试图修复它们。

fig7_dp-routing-errors
图7:由错误路径和偏离轨道路由引起的奇周期问题示例。

类似地,允许路由器进行单轨慢跑会使其容易产生奇周期错误(图8)。虽然设计团队通常限制路由器只允许偶数轨道慢跑以避免此类问题,但忘记这样做会导致成千上万的奇周期事件,这些事件大多被自动拼接修复所掩盖。

fig8_single-track-jogs
图8:单轨慢跑引起的奇数周期问题。

抛开所有这些电池设计和奖惩问题不谈,至少芯片加工留下的错误数量相对较小,对吗?这是真的。自动拼接修复了大部分问题。但由于自动拼接,其余的错误被证明是难以理解和精确修复的。让我们来看看为什么会这样。

在图9中,左边的图片是没有拼接的布局运行的一部分。有两个奇循环。它们中的每一个都很容易理解,因为每一个都涉及奇数个单独的多边形,并且驻留在单个标准单元格行中。但是,这并不是芯片加工工程师所看到的。他们看到右边的结果,使用自动拼接。只有一个奇数周期,而不是两个,但仔细看。奇循环环从一个标准单元格行到下一个标准单元格行直接穿过一个多边形。这是因为它正在通过一个缝线,该缝线是为了解决这个奇数周期配置而添加的,加上其他在图片中不可见的错误。设计师无法从路由器上看到布局中的缺口,因为它本来就不存在。它是由Calibre Multi-Patterning功能在验证和分解运行期间插入的。 The designer would have to look at the decomposed data to see it.

fig9_odd-cycle-visualization
图9:当缝合时,奇周期误差显示的并发症。

在这种情况下,芯片加工工程师不知道发生了什么。他们不知道为什么戒指看起来是这样的,也不知道他们可以(或应该)做些什么来修复它。他们也没有注意到真正的问题是左边边缘的两个单元,它把电源轨道分成了两条平行的路径。每当其中一个单元出现时,就会出现像左边所示的奇数周期错误。但是,在打开自动拼接后,大多数奇数周期错误都得到了修复,因此问题的重复性并不明显。

最终的结果是,芯片精加工团队花了数周时间来处理剩余的错误。大部分时间都花在试图理解正在发生的事情上。当他们最终找出导致所有这些错误的根本设计问题时,在这个层面上修复设计已经太晚了。为了满足他们的tapout计划,他们使用了许多有趣的技巧去修复布局问题,而如果设计问题能够在上游得到识别和修复,这些问题就永远不会发生。

别误会我的意思。我并不是说自动缝合是件坏事。设计师在使用它时只需要谨慎和有策略。我建议在没有自动拼接的情况下完成所有基本库开发和工具配置设置和测试,这样您就可以看到实际发生了什么。如果你在这个阶段发现了很多系统性错误,你需要修正你的方法或工具设置来摆脱这些系统性问题。

不过,让我把话说清楚。尽管你尽了最大的努力,你可能仍然会有一些遗留的问题,你只是不能系统地消除。你什么时候见过一个奖惩工具产生一个完美的drc干净的布局?这就是为什么要运行签收DRC。你希望某些程度的问题会从裂缝中消失。但是你不应该期望P&R工具在布局中产生成千上万甚至上百万的DP错误。如果是,那么您需要做一些设计工作,或者您需要联系您的设计工具供应商。

当你的设计库和工具工作良好,只有合理数量的DP问题发生时,那么是时候打开自动拼接了。由于一开始的错误很少,所以它可能能够修复所有错误。如果没有,至少剩下的错误数量将非常少,并且更易于管理。

这样想。药物可以帮助治疗许多疾病。但你不能一直服用,以防你生病。如果你这样做了,你可能会掩盖一个更危险的潜在问题。如果你试着在生活中尽可能地远离药物,当不寻常的事情发生时,你会更容易发现。然后你就可以针对你需要治疗的特定疾病服用你需要的特定药物。

自动缝合是一种神奇的药物。但要明智地使用它,在正确的时间使用正确的数量。



留下回复


(注:此名称将公开显示)

Baidu