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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1564|回复: 9

[求助] skill脚本,奇怪错误

[复制链接]
发表于 2022-12-1 18:33:15 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 天期颐 于 2022-12-2 09:57 编辑

同一个脚本在自己做的测试库可以正常运行,但换成工艺库却bug。报错信息如下

微信截图_20221202095513.png
 楼主| 发表于 2022-12-1 18:34:29 | 显示全部楼层

                               
登录/注册后可看大图

 楼主| 发表于 2022-12-1 18:38:02 | 显示全部楼层
这个脚本是想来在mos的gate和aa交叠的地方补上一个MOSCKT,先整个简单版,把AA复制一下改成MOSCKT。在测试库可用。

                               
登录/注册后可看大图

 楼主| 发表于 2022-12-2 09:33:27 | 显示全部楼层
问下能看到图吗
发表于 2022-12-2 09:45:45 | 显示全部楼层


天期颐 发表于 2022-12-2 09:33
问下能看到图吗


看不到图的,你再上传下呢
 楼主| 发表于 2022-12-2 10:02:39 | 显示全部楼层
这里确实有错,变量shapelist在循环里会越加越多,把上一个的图的shape也画到下一个图里。可能是工艺库东西多循环超上限了,我再整一下
 楼主| 发表于 2022-12-2 10:46:37 | 显示全部楼层
破案了,是库里面有的cell不带layout,程序遇到就停止了。

                               
登录/注册后可看大图

问一下有什么办法吗?
发表于 2022-12-8 11:30:10 | 显示全部楼层


天期颐 发表于 2022-12-2 10:46
破案了,是库里面有的cell不带layout,程序遇到就停止了。
问一下有什么办法吗?
...


我完全照着你的代码试了一下,没有复现出你的这个报错。至于你说的遇到没有"layout“的cell就停止我觉得不是这个引起的,cv=dbOpenCellViewByType(libname cell "layout" "" "a")这个函数如果cell地下没有"layout”的view的话只会返回"nil",同时会有warning,不会使程序终止,cv=nil,下面的代码就都是nil了。z


这里在cv=....之前加一个判断语句就行了:
if(member("layout" dbAllCellViews(libid cell) then cv=...

后面的代码可以优化一下,直接把找到的shape处理了,可以省一个foreach的时间
foreach(shape shapes
    if(car(shape~>lpp)=="AA" && cadr(shape~>lpp)=="drawing" then
        temp=dbCopyFig(shape cv)
        temp~>lpp=list("MOSCKT" "drawing")
    );end if
);end foreach

 楼主| 发表于 2022-12-8 15:50:07 | 显示全部楼层


着着着火了 发表于 2022-12-8 11:30
我完全照着你的代码试了一下,没有复现出你的这个报错。至于你说的遇到没有"layout“的cell就停止我觉得 ...


非常感谢你的回答,我又学不少。
我想再请教一下:关于“cv=dbOpenCellViewByType(libname cell "layout" "" "a")中cv的值和dbclose(cv)的关系”我做了三个测试,程序在library下所有cell都有layout的情况下可以运行,但如果有cell不包含layout,那么dbClose(cv)/dbSave(cv)程序就会中断。
dbSave对于错误的cv崩溃.png
发表于 2022-12-8 17:46:22 | 显示全部楼层


天期颐 发表于 2022-12-8 15:50
非常感谢你的回答,我又学不少。
我想再请教一下:关于“cv=dbOpenCellViewByType(libname cell "layout"  ...


从代码上看正常来说即使cell没有"layout"的view也是不会出错的,因为如果cell底下没有"layout”这个view,就通过不了"if(member(...)"的判断条件,那么if里面的代码是不会执行的,dbSave(cv)和dbClose(cv)也在if的结构体里,所以也不会执行!
你说做了3个测试,是否是报错的那个测试你把dbSave(cv)和dbClose(cv)放if结构体外面了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-8 05:58 , Processed in 0.044238 second(s), 7 queries , Gzip On, Redis On.

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