就是一些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
原理大致如下
-
分析DRC类型。找到是pin access引起的DRC的区域
-
给这些cell加上keepout margin,或者flip一下
-
legalize
-
eco route
这个过程很快,DRC收敛效果很好。可以在route_auto后使用,也可以在route_opt后调用。