innovus里写一个tcl函数实现插入physical cell的阵列
专栏:iLoveIC July 23, 2025, 4:10 p.m. 78 阅读
本文介绍在innovus里写一个tcl函数实现插入某cell的阵列的方法。

本文介绍在innovus里写一个tcl函数实现插入某cell的阵列的方法。

image.png

如上图,插入一个cell阵列,3行4列。只需要知道左下角的cell的坐标(x_start, y_start)、X方向的间隔x_interval、Y方向的间隔y_interval,就可以算出所有cell的坐标。

除了坐标,还需要对inst进行编号,可以由前缀prefix和起始计数器inst_start组成。

下面是

#---------------------------------------------------------------
# func: add_inst_array
#   cell
#   prefix
#   inst_start
#   x_start
#   x_interval
#   x_total
#   y_start
#   y_interval
#   y_total
#
proc add_inst_array {cell prefix inst_start x_start x_interval x_total y_start y_interval y_total} {
    set y ${y_start}
    set inst ${inst_start}
    for {set i 0} {${i} < ${y_total}} {incr i} {
        set x ${x_start}
        for {set j 0} {${j} < ${x_total}} {incr j} {
            puts "addInst -cell ${cell} -inst ${prefix}_${inst} -loc \"${x} ${y}\" -physical -place_status fixed"
            addInst -cell ${cell} -inst ${prefix}_${inst} -loc "${x} ${y}" -physical -place_status fixed
            incr inst
            set x [expr ${x} + ${x_interval}]
        }
        set y [expr ${y} + ${y_interval}]
    }
}

要使用时,需要读入上面这个函数定义,读一次就可以。然后调用add_inst_array,并传入各个参数,就可以方便的添加这个阵列了。

add_inst_array FILLERCC16CS9 CAP 224 3166.22 0 1 174.16 4.32 19

 

感谢阅读,更多文章点击这里:【专栏:iLoveIC】
最新20篇 开设专栏