上面帖子我们讨论了时钟树的综合,时钟树综合完成后,我们就可以进行routing的过程,本节主要内容包括:
1)、进行一些Routing前的设置检查
2)、进行一些routing的设置
3)、执行Routing的过程
4)、分析Routing过后的timing,DRC以及LVS违例
5)、修LVS的errors如果有
1、导入设计和一些常见的设置
在Routing过程中,我们需要导入的就是之前帖子经过CTS之后的mw库文件,同时我们将我们之前步骤的一些设置都需要重新setting,这些设置在routing过程中是需要的。主要包括:
2、routing之前检查时序等是否clean1
首先是,看时序以及DRC是否有违例,通过report_constraint查看,同时在routing之前,需要确保没有net处于ideal状态以及没有high fanout nets。
同时通过下面命令检查在routing前所有的placement是否合法,以及是否所有的power以及ground引脚都正确连接上了P/Gnets。
在检查电源连接上我们会得到下面的error指示,关于VSS有1个悬空的pins,VDD有48个悬空pins,通过GUI界面,我们选择Verification ---->Error Broser可以打开"Error Browser"对话框,选择"Rail"然后就可以打开涉及P/G问题的指示。
选择上述的每一条error,相应的layoutwindow就会高亮相关cell,我们适当缩小layout窗口,就会看到问题所在,有以下std cell(紫色所示)处在Macro外围的VSS下面,这样就导致了这些std cell没有相应的VDD rail,固保这些cell的电源引脚floating,通过下面命令来处理这些float的std cell。重新执行完成后得到的结果可以看出在VSS下面重新生成了std cell需要的VDD rail。
3、Routing
首先是routing前的一些设置,允许在routing过程中软件插入多余的通孔(主要目的是提高制造良率),-
post_detail_route_redundant_via_insertion的选项有off,low,medium以及high。
分别执行下面命令去检查Non-default routing 规则以及routing的设置。
执行初步的routing,主要包括global routing,布线沟道指定以及详细的布线。
routing完成之后,分别check下面报告,查看是否有timing或者DRC的违例。
4、DRC 以及LVS check
检查是否存在违反物理设计规则的情况。通过命令verify_zrt_route进行检查,
verify_lvs 用例检查短路和断路是否存在。可以看到初步routing后电路存在断路情况,后面我们可以分别尝试使用route_opt –incremental 或者route_zrt_eco去进行修复。
通过上述命令修复后,可以看到电路的LVS问题都已clean,布线完成后我们可以通过gui界面查看当前的routing后电路的各项参数,例如我们可以选择net Capacitance进行查看,得到电路routing后的整体负载以及cell_slack查看nets的slack分别如下图所示: