最近吾爱IC社区星球会员问到跑place_opt_design时会报错退出的情况。小编今天把这个错误解决办法分享给大家。主要分享三个方法,大家可以根据自己的实际情况来选择。
数字IC后端低功耗设计实现案例分享(3个power domain,2个voltage domain)
**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.
数字IC后端实现之Innovus Place跑完density爆涨案例分析
这个错误是报告设计中存在scan chain即寄存器的SI端是有逻辑连接(寄存器的Q接另外一个寄存器的SI端),但没有scan chain def信息。
关于读入scan def的好处是工具可以根据扫描链的信息做scan chain reorder,改善整体设计的congestion和绕线。
解决方案一:
找做综合的工程师要一个scan chain的def。跑place前defIn读入即可。
解决方案二:
通过设置placeMode。具体设置命令如下:
setPlaceMode -reset
setPlaceMode -place_global_ignore_scan true
setPlaceMode -place_global_reorder_scan false
setPlaceMode -place_global_exp_allow_missing_scan_chain true
解决方案三:
暂时把设计中的scan chain连接端口,这样就等效于设计中没有scan chain了。
proc disconnectSI {} {
set op [open detach_term.tcl w]
foreach pin [get_db insts .pins.name */SI] {
set inst_name [get_db pin: p i n . i n s t . n a m e ] s e t n e t n a m e [ g e t d b p i n : pin .inst.name] set net_name [get_db pin: pin.inst.name]setnetname[getdbpin:pin .net.name ]
if {$net_name == ""} {continue}
if {[is_common_ui_mode]} {
puts $op "disconnect_pin -inst $inst_name -pin SI -net $net_name"
} else {
puts $op "detachTerm $inst_name SI $net_name"
}
}
close $op
puts "Please source the created file detach_term.tcl"
}
使用方法:
1)source disconnectSI.tcl
2)source detach_term.tcl
其中detach_term.tcl的内容如下所示。
在咱们社区低功耗A55高性能CPU项目powerplan阶段我们为了给tapcell secondary pg pin走线,我们需要将设计中连接到1'b0和1'b1信号断开,否则routePGPinUseSignalRoute会报错。
所以在数字IC后端设计实现过程中我们经常需要见招拆招,规避掉工具没有考虑到的问题。