如何解决congestion

congestion为绕线拥塞导致的,一般是存在两种情况

1,PG太密了

2,存在高密度区域的cell place

3,channel congestion

4,High Pin Density Congestion:此种congestion多发生于多pin cell集中的区域。下图展示了两种常见的多pin cell:AOI(and/or/inverter)和多位选择器(selector)。

5,Logic Congestion

----分割线

1情况的处理:

减去不必要的PG net把绕线资源释放出来。

2情况的处理:

placement blockage(soft hard partial), keepout margin(cell spacing constraint), cut row等。与此同时,工具也会提供一些功能来控制局部density,比如icc2的place.coarse.max_density。

3情况的处理:

调大macro之间的间隙;对channel进行soft blockage处理;

4情况的处理:

例如可以禁用此类cell,使综合工具将其逻辑进行拆分。但是这样做的后果是可能导致design的逻辑数量增加,面积增大,功耗上升。因此需要对各方面的影响进行评估。

5情况的处理:

此类congestion可以说是最棘手的问题之一。因为在后端结果看来,可能这类congestion的区域中cell density很低,也没有或者很少有多pin cell,周围也没有marco阻挡,但是congestion却一塌糊涂。原因可能在于前端工程师为了节省面积而将某一个模块复用多次,连接了过多的input或者output;也可能是design中存在大量的同级选择逻辑(如几百位的选择器)。原因不一而足,需要后端工程师去深入分析design才能得出结论。这类问题需要向前端工程师反馈,与他们沟通能否修改RTL,而且常常以牺牲面积或者性能为代价。

 
 
posted @ 2024-10-10 14:28  chippeace  阅读(29)  评论(0编辑  收藏  举报