后端基础——congestion
congestion,中文名是拥塞。这是一个反应设计绕线资源一个重要指标参数。通常在还没有final routing的阶段使用,拥塞程度越高,一般意味着后期绕线越容易出现metal short,spacing violation等drc。
1,通常分为以下几类congestion
(1)Channel Congestion:此种现象比较常见,也比较简单,多发生于hard macro之间。当macro之间的空隙不足以满足需要穿过的net所需要的资源的时候,就会发生channel congestion。因此,在floorplan阶段,考虑每个channel中可能穿过的net数量,配合metal layer层数和routing rule估算绕线资源是通常需要后端设计者考虑的事。遇到channel congestion时最简单的想法当然是增大macro距离,但这并不是总是有用,尤其是channel中有逻辑cell穿过的时候,设计者需要根据design的逻辑规划数据走向,控制channel内的逻辑数量。
(2)PG(Power Ground)Congestion:此种情况多由于power/ground的结构不合理或者过剩导致的。常用的手段是,如果在芯片局部出现绕线紧张的现象,会通过删除部分pg via/shape来释放一部分绕线资源。当然,这样做的前提是电源网络足够稳固(robust),IR-drop和power EM不会发生很大恶化。
(3)High Cell Density Congestion:此种congestion主要是由于局部或整体的cell过于密集导致的。在实际设计中,局部出现这种congestion的情况比较常见,我们可以通过很多手段来控制局部的density:placement blockage(soft hard partial), keepout margin(cell spacing constraint), cut row等。与此同时,工具也会提供一些功能来控制局部density,比如icc2的place.coarse.max_density。
(4)High Pin Density Congestion:此种congestion多发生于多pin cell集中的区域。在某些design中,如果不加控制,逻辑综合的结果可能是几百上千个此类cell聚集在一起从而造成某个区域的net十分密集。在place阶段,尽管工具会尝试把这些cell尽量推开,但是由于逻辑本身的限制优化空间有限。因此需要综合阶段配合,选择合适的cell来综合网表。例如可以禁用此类cell,使综合工具将其逻辑进行拆分。但是这样做的后果是可能导致design的逻辑数量增加,面积增大,功耗上升。因此需要对各方面的影响进行评估。
(5)Logic Congestion:此类congestion可以说是最棘手的问题之一。因为在后端结果看来,可能这类congestion的区域中cell density很低,也没有或者很少有多pin cell,周围也没有marco阻挡,但是congestion却一塌糊涂。原因可能在于前端工程师为了节省面积而将某一个模块复用多次,连接了过多的input或者output;也可能是design中存在大量的同级选择逻辑(如几百位的选择器)。原因不一而足,需要后端工程师去深入分析design才能得出结论。这类问题需要向前端工程师反馈,与他们沟通能否修改RTL,而且常常以牺牲面积或者性能为代价。
2,衡量congestion 的指标
(1)Overflow
(2)Hotspots
hotspot表征的是设计中congestion的热点,它是用面积来表示hotspot的分数。如果这个分数越高代表的是这个位置有congestion的点比较多。所以这个位置附近就有比较聚集的congestion问题。
参考资料:
数字后端设计能否绕通的两大技术指标—overflow和hotspot - 知乎 (zhihu.com)
(10条消息) 手把手教你在innovus中使用verify_drc_IC拓荒者的博客-CSDN博客