在项目后期,RTL还是经常有bug,通过APR ECO flow可以大大缩短后端时间,不用从头开始做。
提供当前的pr netlist给前端设计工程师,他们根据rtl的变动来修改pr netlist。后端拿到pr eco netlist后,先检查一下逻辑等价性,然后就可以开始premask eco流程了。
第一步,source上一版的enc.dat/top.globals,设置init_verilog为eco netlist,再init_design。
source save_latest.enc.dat/top.globals
set init_verilog ../../eco/top_pr_eco.v
init_design
第二步,读入最新的def,innovus会对比出来增减inst和修改连线的情况。
第三步,重连电源和地线。
clearGlobalNets
globalNetConnect VDD -type pgpin -pin VDD -instanceBasename * -hierarchicalInstance {}
globalNetConnect VSS -type pgpin -pin VSS -instanceBasename * -hierarchicalInstance {}
globalNetConnect VDD -type tiehi -instanceBasename * -hierarchicalInstance {}
globalNetConnect VSS -type tielo -instanceBasename * -hierarchicalInstance {}
globalNetConnect VDD -type pgpin -pin VNW -instanceBasename * -hierarchicalInstance {}
globalNetConnect VSS -type pgpin -pin VPW -instanceBasename * -hierarchicalInstance {}
第四步,删除filler,进行ecoPlace。
deleteInst FILLER*
checkPlace
ecoPlace
# 如果有接1'b1或1'b0的,就需要连到tie high、tie low cell上
setTieHiLoMode -cell {PULL1_9TR PULL0_9TR} -maxFanout 4 -maxDistance 30 -createHierPort true
addTieHiLo
第五步,进行ecoRoute、fix drc。
第六步,检查和fix timing。
setAnalysisMode -analysisType onChipVariation -cppr both
timeDesign -postRoute
timeDesign -postRoute -hold
第七步,填回filler,再确认一次drc、connectivity、antenna。
addFiller -cell { F_FILL1_9TR F_FILL2_9TR F_FILL4_9TR F_FILL8_9TR F_FILL16_9TR }
checkFiller
verify_drc
verifyConnectivity
verify_antenna
第八步,导出新的pr netlist、gds、def等。并保存enc,方便后续接着修改。
saveNetlist top_pr.v
streamOut top.gds -mapFile encStreamout.map -libName DesignLib -merge { stdcell.gds } -units 1000 -mode ALL
defOut top.def -floorplan -netlist -routing
saveDesign save_eco_xxx.enc