在Innovus中place_opt_design和optDesign阶段,我们经常会看到如下所示的log提示信息,核心关键词是" Reasons for remaining drv violations"。而且告诉我们总共有819条net存在drv violation,且无法被工具优化掉。
=======================================================================
Reasons for remaining drv violations
*info: Total 819 net(s) have violations which can't be fixed by DRV optimization.
MultiBuffering failure reasons
*info: 233 net(s): Could not be fixed because the solution degraded timing.
*info: 5 net(s): Could not be fixed because the location check has rejected the overall buffering solution.
*info: 477 net(s): Could not be fixed because term is inside don't touch hierarchy.
*info: 3 net(s): Could not be fixed because of hinst,location,fence/region mismatch.
*info: 100 net(s): Could not be fixed because of exceeding max local density.
DRV主要就是指max transition,max fanout,max capacitiance这些指标。这里面的指标我们主要关心max transition。我们知道解决transition的主要方法有upsize driver和插buffer两大方法。
因此,这里也会报告出当前DRV无法被fix的原因。但是细心的同学就发现,工具并没有给出这些有DRV violation的net 名字。
我们可以在placement之前设置如下mode即可让工具报出这类net的名字。
Legacy UI : setOptMode -verbose true
CUI: set_db opt_verbose
我们还可以通过下面的mode设置让工具报告出drv无法修复的详细原因。
Legacy UI : setOptMode -detailDrvFailureReason true
Common UI : set_db opt_detail_drv_failure_reason true
默认情况工具只会输出50条net。我们还可以通过下面的mode设置报告出更多有DRV Violation的net信息。
Legacy UI : setOptMode -detailDrvFailureReasonMaxNumNets 1000
Common UI : set_db opt_detail_drv_failure_reason_max_num_nets 1000