Module 10 利用Global Router来分析设计是否可绕通
LAB10-1 跑一个placement
本章节目的是load进一个floorplan,跑通一个placement并完成post-placement的timing优化
导入设计和floorplan
这步之前的lab已经做过了,大家再按照下面的步骤再练习巩固下。
加载好设计和floorplan后,我们先获取下当前的placeMode,命令如下。
getPlaceMode
输入以上命令后,工具会输出当前的所有place mode。
这些变量很多都是工具默认值,而且这些变量不需要我们都背下来,需要在做项目过程中不断熟悉积累一些常用的选项。
这里比如place_global_timing_effort选项是medium,代表工具优化时序的力度是中等力度。如果对于timing比较紧的设计,我们可以通过setPlaceMode来给这个选项设上high值。
Scan def读入
如果综合有写出scan chain的def文件,在place之前我们可以读入scan chain的def来进一步优化congestion。
命令: defIn scan_input.def (innovus是通过defIn来读入这部分信息的)
跑Placement的命令
place_opt_design
由于设计比较小,执行这个命令后大概1分钟就跑完了。跑完后的最后结果可以看place的log,具体结果如下图所示。
每个阶段跑完要看哪些report,可以查看下面分享的文章。
关于工具每个阶段,比如placement,cts,route各个阶段的log可以查阅下面这份教程。
在跑placement过程中,经常会遇到如下所示的IMSP-9100的错误。这个错误是提示当前设计存在scan chain,但有很高比例的寄存器没有scan chain连接信息。
**ERROR: (IMPSP-9100): Scan chains exist in this design but are not defined for 70.89% flops and -place_global_ignore_scan is set to false. Placement and timing QoR can be severely impacted in this case!
It is highly recommend to keep -place_global_ignore_scan option as its default value ‘true’ with scan chains definition.
写出scan chain def文件
defOutBySection -noNets -noComps -scanChains scan.def
高亮显示scan chain连接示意图
GUI界面操作如下:
Place-----> Display ------> Scan Chain
在弹出的窗口中选择scan1这条scan chain后,效果如下图所示。
为了看更清楚这条scan chain连接关系,我们可以通过放大缩小来看局部的连接顺序是否比较顺(即没有太多交叉飞线的情况)。这里细心的同学一定发现,此时有一些线挡住了我们的视线,所以我们可以通过右侧控制面板来关掉Route这个选项来不显示绕线部分信息。
Congestion查看
正常我们只要看log中的overflow值小于1%,基本上都是可绕通的。这个lab设计比较小,overflow都是0.0x的量级。
GUI界面查看方法
选择Overlay-----> Congestion
由于overflow过小,所以整体上看基本上看不到任何颜色。局部放大可以看到macro出pin位置会有点小overflow,值很小,所以工具都能绕通。
保存设计
saveDesign place_Opt.inn (名字可以随意取,取成大家自己的名字也可以!)
###END OF LAB 10-1
###LAB10-2 Running the Early Global Router
本章节学习目标是通过工具的前期global router 引擎来分析发现潜在绕线问题
GUI操作步骤:Route—Early Global Route (等效命令是earlyGlobalRoute)
上图中选择的Route layer这步界面操作等效于使用下面的命令。
setRouteMode -earlyGlobalMaxRouteLayer 3 -earlyGlobalMinRouteLayer 1
备注:这里计划哪些层用于绕线,我们就选择可用于绕线的层次范围,比如我们可用于绕线的层次为M1-M8,那么这里我们就分别填入8和1即可。
这里我们打开placeOpt这个database,它是工具做完placement后保存的数据。
restoreDesign …/saved/placeOpt.inv.dat DTMF_CHIP
place做完我们一定要学会看congestion map。查看的方法如下:
如果没有弹出左侧的Congestion map界面,我们可以下图中这个类似“图片”的图标。
下面带大家看懂layout上显示的map的含义
以上图的V: 12/7为例,它表示当前的Congestion是垂直方向的,而且这个区域的可用绕线资源是7根,而实际该区域需要的绕线资源是12根,所以这里暗示我们这个区域存在一定的绕线风险。而且我们可以看到这个区域是用橙色来标示的,而图中的V: 5/2 则是用比较淡的颜色标示,代表它的绕线风险相比V:12/7要小。
而且如果我们仔细观察的话,就会发现这个设计的congestion map都是垂直V方向的congestion。
这里,我们也可以通过下面的操作来自动显示。
【思考题】 为何图中会出现垂直方向的congestion,而且还还有规律?
衡量design是否可以绕通,其实还有一个技术指标——hotspot。关于overflow和hotspot的区别可以查看下面这份详细教程。
保存设计
lab中教大家的是图形界面操作方式。这里小编教大家如何用命令来保存设计。命令如下:
saveDesign …/saved/earlyGlobalRouted.inn
保存后退出软件后,可以通过下面的命令再次打开保存的database。
restoreDesign …/saved/earlyGlobalRouted.inn.dat DTMF_CHIP
我们发现工具做完placement后的database中居然存在绕线了,这是为什么呢?
答案是这些线并非真实绕线,而是工具做placement时做的early global route出来的线。我们随意选取一条线来看:
选中一条net对应的命令是:
deselectAll
selectNet DTMF_INST/RESULTS_CONV_INST/n_1310
Innovus选中任何object前务必做下deselectAll,否则选中的object可能还是之前选中的object。
###END OF LAB10-2