check clamp脚本

分享一个只需要输入clamp的cellName就可以查看clamp是否覆盖完全的脚本。(如果存在多个电压域,则应该通过instName分开抓取)

clamp是负责esd泄放的单元,一版项目中保护的范围为1000um左右的原型。

脚本分为三个部分

  1. 去掉上次执行该脚本时的marker;
  2. 设置一些参数,半径和calmps;
  3. 主脚本会用到的proc;
  4. 主脚本调用proc。

1 去掉上次执行该脚本时的marker

#01 remove marker
remove_gui_marker -all;# inn工具命令
remove_gui_object -all;# inn工具命令

2 设置一些参数,半径和calmps;

#02 define r and clamps
set r 1300
set pointList ""
set clamps [dbget [dbget top.insts.cell.name $cell_name -p2].name]

3 主脚本会用到的proc;

#03 usefule procs
proc get_center_point {inst} {
    set x1 [dbget [dbget top.insts.name $inst -p].box_llx]
    set x2 [dbget [dbget top.insts.name $inst -p].box_urx]
    set y1 [dbget [dbget top.insts.name $inst -p].box_lly]
    set y1 [dbget [dbget top.insts.name $inst -p].box_ury]
    global pointList
    set c_x [expr ($x1+$x2)/2]
    set c_y [expr ($y1+$y2)/2]
    lappend pointList [list $c_x c_y]
}


proc checkp {rx ry} {
    set tmp "" 
    global r
    for {set angle θ} {$angle<360} {incr angle 10} {
        set x [expr $rx + $r * cos ($angle*acos(-1)/180)];#acos(-1)代表π,acos(-1)/180代表每角度的弧度值
        set y [expr $ry + $r * sin ($angle*acos(-1)/180)]
        lappend tmp "$x $y"
        add_gui_shape -name clamp_shape -polygon "$tmp
        add_gui_marker -color blue -name clanmp -pt "$rx $ry" -type x
}

4.主脚本调用proc

# 04 main scripts
foreach clamp $clamps {
    get_center_point $clamp
}
foreach point $pointList {
    set rx [lindex $point 0]
    set ry [lindex $point 1]
    checkp $rx $ry
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值