就是一些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后調用。