是一些cell abut在一起或者挨得很近时,局部密度过高,router连接std cell pin的空间不够,容易引起DRC或short。通常发生在std cell密度很高的设计里,或者std cell pin密度很高的区域里。这些DRC通常发生在底层,比如M1~M4。

 

为什么placer不能完全预防这个问题?

placer会跑global route来评估congestion,然后把cell推开,虽然global route现在已经做的很好了,但是它不能完全预估所有的DRC,特别是pin access引起的DRC。所以global route并不能完全解决这类问题。

placer也是pin density aware的,但pin density aware毕竟是大的颗粒度,在更小的范围内(比如几个std cell摆在一起)作用有限。

另外foundry提供的cell abutment rule也有作用,它规定了哪些cell不能水平或者垂直方向放在一起。它能预防很多特定的DRC,但还是不能完全解决cell密度高导致congestion的问题.

 

如何有效解决pin access问题?

解决这种问题的方式有多种,今天介绍一个常用而且强大的命令:

optimize_routability -route

原理大致如下

  1. 分析DRC类型。找到是pin access引起的DRC的区域

  2. 给这些cell加上keepout margin,或者flip一下

  3. legalize

  4. eco route

这个过程很快,DRC收敛效果很好。可以在route_auto后使用,也可以在route_opt后调用。

posted on 2020-03-28 11:25  春风一郎  阅读(2417)  评论(0编辑  收藏  举报