在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5765|回复: 11

[求助] skill 提取目标坐标

[复制链接]
发表于 2019-12-4 14:43:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
最近自学skill ,写了一个脚本目的是提取指定library ->cell 里面的某层layer 的坐标 ,println 是为了想看结果是否正确请大神帮忙看看哪里出问题了,没有结果输出
procedure(get_bbox(libname cellname)
let(()
cv = dbOpenCellViewByType(libname  cellname "layout" "maskLayout" "r")
Shapes= geGetSelSet(cv)~>master~>shapes
foreach(shape Shapes
        when(shape~>layerName == "OUTLINE"
          sel_obj_bbox = shape~>bBox
          bbox0 = car(sel_obj_bbox)
          bbox1 = cadr(sel_obj_bbox)
          bbox_X0 = xCoord( bbox0)
          bbox_Y0 = yCoord( bbox0)            
          bbox_X1 = xCoord( bbox1)
          bbox_Y1 = yCoord( bbox1)
println(bbox_X0)
println(bbox_Y0)
println(bbox_X1)
println(bbox_Y1)
println(bbox0)
println(bbox1)
);when
);foreach
);let
);proc


发表于 2019-12-4 16:44:38 | 显示全部楼层
car后可能不能使用xCoord,yCoord了,这里应该使用别的命令得到ll和ur具体忘了,
你可以试试
          bbox_X0 = xCoord( bbox0)
          bbox_Y0 = yCoord( bbox0)  
改成
          bbox_X0 = car( bbox0)
          bbox_Y0 = cadr( bbox0)  
 楼主| 发表于 2019-12-5 08:51:56 | 显示全部楼层


chedanzhuzhu 发表于 2019-12-4 16:44
car后可能不能使用xCoord,yCoord了,这里应该使用别的命令得到ll和ur具体忘了,
你可以试试
          bbo ...


谢谢,大概知道原因了,和xCoord yCoord没有关系哦,应该是println的语句不能太写在when里面,放到when的外面就可以了
 楼主| 发表于 2019-12-5 09:00:02 | 显示全部楼层
另外还想知道如果cellname是一个list的话 是不是对cell 的list先进行foreach操作,这样的话脚本里面就有两foreach,不知道foreach是不是可以嵌套使用                                                                                                                                                                                                                                                      
发表于 2019-12-5 09:51:31 | 显示全部楼层
foreach可以嵌套使用,嵌套多了就是运行时间长
 楼主| 发表于 2019-12-5 13:48:25 | 显示全部楼层
现在想调出指定library 的celllist ,并且通过识别cell内部的outline层次的坐标来进行从左往右依次排列,但是以下脚本一直实现不了,请大神帮忙看一看到底是哪里出问题了

procedure(inst_sel_cells(libname celllist)
  let((cv  is_cell_there x x1 y1 width)
   x=0.0
   cv=geGetEditRep()
    foreach(cell celllist
     printf("Working on %L\n" list(libname cell))
     is_cell_there = ddGetObj(libname  cell "layout")
        if(is_cell_there then
        xcv = dbOpenCellViewByType(libname cell "layout" "maskLayout" "r")
        when(xcv
       foreach(shape geGetSelSet(xcv)~>master~>shapes
       when(shape~>layerName == "OUTLINE"
            sel_obj_bbox = shape~>bBox
          bbox0 = car(sel_obj_bbox)
          bbox1 = cadr(sel_obj_bbox)
          bbox_X0 = xCoord( bbox0)
          bbox_Y0 = yCoord( bbox0)
          bbox_X1 = xCoord( bbox1)
          bbox_Y1 = yCoord( bbox1)
        width=bbox_X1 - bbox_X0
        x1=x-bbox_X0
        y1= -bbox_Y0
      );when
      );foreach
        dbCreateInst(cv xcv "" list(x1 y1) "R0")
        x=x+width
        );when
      else
      printf("Can't find cell %s in libaray %s\n" cell libname)
        );if
);foreach
);let
);proc
发表于 2019-12-9 07:18:51 来自手机 | 显示全部楼层
同是新手,说一下我感觉有问题的地方。geGetSelSet()函数可能用错了,xcv是你打开的数据库文件,不能这样操作的吧。现在不方便上手操作,所以只是提下建议( ´◔ ‸◔`)
 楼主| 发表于 2019-12-10 08:49:53 | 显示全部楼层


吟游小生 发表于 2019-12-9 07:18
同是新手,说一下我感觉有问题的地方。geGetSelSet()函数可能用错了,xcv是你打开的数据库文件,不能这样操 ...


非常感谢,确实是geSelSet() 用错了,直接xcv~>shapes 就可以了
发表于 2019-12-23 19:27:16 | 显示全部楼层
啊哦,陌生的知识
发表于 2020-1-4 21:38:43 | 显示全部楼层
procedure(get_bbox(libname cellname)
let(()
cv = dbOpenCellViewByType(libname  cellname "layout" "maskLayout" "r")
Shapes= geGetSelSet(cv)~>master~>shapes
foreach(shape Shapes
        when(shape~>layerName == "OUTLINE"
          sel_obj_bbox = shape~>bBox
          bbox_X0 = xCoord(xCoord( sel_obj_bbox))
          bbox_Y0 = yCoord(xCoord( sel_obj_bbox))            
          bbox_X1 = xCoord(yCoord( sel_obj_bbox))
          bbox_Y1 = yCoord(yCoord( sel_obj_bbox))
println(bbox_X0)
println(bbox_Y0)
println(bbox_X1)
println(bbox_Y1)
);when
);foreach
);let
);proc
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-19 08:56 , Processed in 0.023356 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表