数字IC后端实现Innovus |给各种IP子模块添加port buffer和antenna diode万能脚本

我们之前分享过在hierarchical flow后端实现中为了确保顶层flatten时timing signoff和physical signoff看到的情况和模块级看到的情况一致,我们会在模块io port添加io port buffer(主要是timing,antenna一致性)。实际上在芯片级我们还会给各大子模块Block和IP的接口添加buffer。

数字IC后端设计实现 | PR工具中到底应该如何控制density和congestion?(ICC2&Innovus)

在一些数模混合设计中,为了考虑CDM问题,我们会在模块接口处添加Antenna 二极管,具体如下图所示。

为了防止CDM,我们需要对这个HDMI IP的所有端口添加antenna diode。如果IP内部已经添加过了则可以跳过。

数字IC后端设计如何从零基础快速入门?(内附数字IC后端学习视频)

在我们低功耗四核A7 Top项目中,我们也可以对各个cpu子模块接口添加io pin buffer。这样即便子模块a7core的lib文件不准确,在a7top顶层也不会看到跟子模块接口的长线了。

今天分享下每个项目都会用到的给各种Block添加buffer和antenna的万能脚本。这个又是一个练习脚本的好例子。

proc add_buffer_diode_on_block_pins {args} {

parse_proc_arguments -args a r g s o p t i o n s s e t b u f f e r c e l l " args options set buffer_cell " argsoptionssetbuffercell"options(-buffer)"

set diode_cell " o p t i o n s ( − d i o d e ) " s e t b u f f i l e " options(-diode)" set buf_file " options(−diode)"setbuffile"options(-buffer_eco_file)"

set diode_file " o p t i o n s ( − d i o d e e c o f i l e ) " s e t p r e f i x " options(-diode_eco_file)" set prefix " options(−diodeecofile)"setprefix"options(-prefix)"

set j 0

set file1 [open $buf_file w]

set file [open $diode_file w]

puts $file1 "setEcoMode -updateTiming false -refinePlace false"

puts $file1 "setEcoMode -batchMode true "

foreach pin [dbGet selected.instTerms] {

puts $file1 "ecoAddRepeater -cell $buffer_cell -term [dbGet $pin.name] -name KaTeX parse error: Expected group after '_' at position 13: {prefix}_BUF_̲j -loc [dbGet $pin.pt]"

puts $file "addInst -cell $diode_cell -inst KaTeX parse error: Expected group after '_' at position 15: {prefix}_DIODE_̲j -loc [lindex [dbGet $pin.pt] 0]"

set net [dbGet $pin.net.name]

puts $file "attachTerm KaTeX parse error: Expected group after '_' at position 15: {prefix}_DIODE_̲j MINUS $net"

incr j

}

puts $file1 "setEcoMode -batchMode false "

puts f i l e 1 " r e f i n e P l a c e − i n s t ∗ file1 "refinePlace -inst * file1"refinePlace−inst∗{prefix}**"
puts $file1 "dbSet [dbGet top.insts.name BLOCK_ISO* -p].pStatus fixed"
puts f i l e " r e f i n e P l a c e − i n s t ∗ file "refinePlace -inst * file"refinePlace−inst∗{prefix}* "
puts $file "dbSet [dbGet top.insts.name ${prefix}_
-p].pStatus fixed"

close $file

close $file1

puts "Created eco files $buf_file and $diode_file"

puts "you need to source these files to implement the ECO"

}

define_proc_arguments add_buffer_diode_on_block_pins

-info "Generate ECO files to add buffers and antenna diodes on the I/Os of the selected block\n"

-define_args {

{-buffer "Buffer libcell to be inserted" "none" string {required}}

{-diode "Diode libcell to be inserted" "none" string {required}}

{-buffer_eco_file "ECO file name for buffer insertion" "none" string {required}}

{-diode_eco_file "ECO file name for diode insertion" "none" string {required}}

{-prefix "Prefix to use for the inserted instances names" "none" string {required}}

}

return

###使用方法

add_buffer_diode_on_block_pins -buffer BUFFD3BWP40P140LVT -diode ANTENNABWP40P140LVT -buffer_eco_file buffer_eco.tcl -diode_eco_file diode_eco.tcl -prefix IP_ISOLATION

###读入上述脚本生成的添加buffer和添加antenna diode脚本

##source eco_buf.tcl

##source eco_diode.tcl

下图所示为添加好子模块cpu buffer的效果图。

【思考题】为何这个脚本在执行过程中会报如下所示的ERROR(IMPOPT-616)?

相关推荐
IC拓荒者1 天前
数字IC后端设计实现之Innovus place报错案例 (IMPSP-9099,9100三种解决方案)
数字后端·数字ic后端·ic后端培训·innovus零基础lab·innovus place·innovus零基础·scan chain
IC拓荒者2 天前
TSMC12nm工艺数字IC后端实现难点都有哪些?
数字ic后端·数字后端培训·calibre lvs·物理验证lvs·tsmc12nm·t12nm数字后端·double pattern
IC拓荒者5 天前
DDRPHY数字IC后端设计实现系列专题之数字后端floorplan&powerplan设计
数字后端培训·innovus零基础lab·ddrphy后端实现·数字后端项目案例
IC拓荒者5 天前
数字IC后端实现之Innovus specifyCellEdgeSpacing和ICC2 set_placement_spacing_rule的应用
数字ic后端·数字后端培训·calibre drc·drc·innovus零基础入门·innovus drc·物理验证drc
IC拓荒者10 天前
数字IC后端设计实现之Innovus自动修复Min Step DRC Violation方案
数字ic后端·数字后端培训·calibre drc·innovus零基础lab·数字后端innovus·数字后端零基础·min step drc
IC拓荒者10 天前
Innovus Flexible H-tree and Multi-tap Clock Flow Lab实操系列教程(Day1)
数字ic后端·数字后端培训·时钟树综合·innovus零基础入门·flexible htree·clock tree·multi-tap clock
IC拓荒者11 天前
物理验证Calibre LVS | SMIC Process过LVS时VNW和VPW要如何做处理?
lvs·数字ic后端·物理验证·ic后端培训·calibre lvs·vnw vpw·衬底接触
IC拓荒者16 天前
数字后端零基础入门系列 | Innovus零基础LAB学习Day9
数字ic后端·数字后端培训·innovus零基础lab·数字后端innovus·数字后端零基础·后端零基础入门·innovus走线
IC拓荒者16 天前
物理验证Calibre LVS Debug案例之通过deleteEmptyModule解决LVS问题
数字ic后端·数字后端培训·数字后端入门·calibre lvs·empty module·t12nm lvs案例·物理验证lvs
IC拓荒者19 天前
数字IC后端实现之Innovus Place跑完density爆涨案例分析
数字后端·数字后端培训·innovus place·数字后端项目案例·density变高案例·innovus项目·ic后端项目