在工作中遇见的congestion问题:
1、模块congestion比较严重,想通过调整mem的摆放来缓解由于mem摆放导致的congestion情况。mem的数量达到几百片,调整时间长;
2、只能按照经验提前预估拐角处congestion,其他地方难以比较直观评估congestion;
3、调整了mem的摆放后,正常run一轮place需要几天的时间,也就是说需要几天后才能比较准确评估自己调整的mem是不是对congestion友好,迭代太慢;
第一反应我该怎么办呢?
工具能不能有一种方法,可以用几个小时就能比较准确评估新调整好的FP的congestion情况呢?这样就可以快速知道新摆放的mem是否对congestion友好,从而来决策有没有必要是否按照这版FP继续run place了;
解决方案:
使用innovus的fast place可以比较准确解决上述问题;
解决流程:
1、首先需要完成FP阶段的所有工作、包括mem摆放,boundray cell摆放,welltap cell摆放,所有的power stripe都需打上。这一步主要是为了更加准确的评估绕线情况。实现真正place后的correlation一致性;
2、设置正常的绕线情况,需要设置上你真实的绕线层次;
3、设置和你正常place一样的max density的值,当然如果有module padding也是需要一并设置上。同时一些在place阶段设置的place blockage也需要设置上,目的就是为了和真实的place阶段达到最高的匹配度;
3、调整fast place mode,想要开启fast place来快速评估congestion,需要对place mode做一些特殊的设置;
具体设置:
第一步:完成设置开始摆放inst
#首先设置绕线层次,注意需要设置和正常place阶段相同的绕线层次
setRouteMode -earlyGlobalMaxRouteLayer 7
setRouteMode -earlyGlobalMinRouteLayer 2
setNanoRouteMode -routeTopRoutingLayer 7
setNanoRouteMode -routeBottomRoutingLayer 2
#该命令是fast place的核心
setPlaceMode -place_design_floorplan_mode true
#为了和正常place阶段跑出来的congestion correlation达到最好,需要将影响inst摆放以及congestion相关#的设置都设置上
setPlaceMode -place_gloabl_max_density 0.6
setPlaceMOde -place_global_cong_effort medium
#放置inst,使用该命令后,inst的状态是global place,会出现inst overlap的情况
setMultiCpuUsage -local 16
place_design
#为了将overlap的inst合理放置,使用下面的命令
refinePlace
第二步:开始绕线
#inst合理摆放后,就可以使用earlyGlobalRoute进行绕线
earlyGlobalRoute
第三步:大功告成
此时你就可以使用gui来展示congestion map的展示啦。