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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: Lolia1217

[原创] 【已解决】替换工艺库后默认的value也被替换成新工艺的默认value

[复制链接]
 楼主| 发表于 2016-6-17 09:46:06 | 显示全部楼层
回复 10# wowmin


   你好,非常感谢你的解答,我在梳理你的这段代码中。有问题可以请教你吗?
 楼主| 发表于 2016-6-17 10:04:24 | 显示全部楼层
回复 10# wowmin


   你好,你修改后的程序我试试了,不过你这个针对的是单个device,我现在处理的是针对一个lib里面的所以schematic cell里面的指定类型的device,需要批量处理的,我的target—dev指的是某一种device,如:mn5 ,而不是MN32这种instance,这里我需要怎么修改才能获取这个批量参数。。。。
发表于 2016-6-17 10:26:04 | 显示全部楼层
procedure(replace_dev(myWorkLib source_lib source_dev target_lib target_dev)
let((cell_list sch_cv targetId w l)
cell_list=ddGetObj(myWorklib)~>cells~>name
foreach(cell cell_list
   sch_cv= dbOpenCellViewByType(source_lib cell "schematic" "schematic" "a")
   if(sch_cv then
      foreach(inst sch_cv~>instances
        if(inst~>cellName == source_dev then
          targetId=dbOpenCellViewByType(target_lib target_dev "symbol" "" "r")
          if(targetId then
             w=inst~>w
             l=inst~>l
             inst~>master=targetId
             inst~>w=w
             ;;need trigger callback for "w"
             inst~>l=l
            ;;need trigger callback  for "l“
            dbClose(targetId)
          );if
        );if
        );foreach
     dbSave(sch_cv)
     dbClose(sch_cv)
   );if
);foreach
);let
);procedure

没太仔细看你以前code,    现在重新修改了下 , 加了个参数myWorkLib是你要修改的library,  source_lib 以及target_lib是 新旧PDK,  默认的替换的view是symbol。你再试试
发表于 2016-6-17 10:44:51 | 显示全部楼层
procedure(replace_dev(myWorkLib source_lib source_dev target_lib target_dev)
let((cell_list sch_cv targetId w l)
cell_list=ddGetObj(myWorkLib)~>cells~>name
foreach(cell cell_list
   sch_cv = dbOpenCellViewByType(myWorkLlib cell "schematic" "schematic" "a")
   if(sch_cv then
      foreach(inst sch_cv~>instances
        if(inst~>cellName == source_dev then
          targetId=dbOpenCellViewByType(target_lib target_dev "symbol" "" "r")
          if(targetId then
             w=inst~>w
             l=inst~>l
             inst~>master=targetId
             inst~>w=w
             ;;need trigger callback for "w"
             inst~>l=l
            ;;need trigger callback  for "l“
            dbClose(targetId)
          );if
        );if
        );foreach
     dbSave(sch_cv)
     dbClose(sch_cv)
   );if
);foreach
);let
);procedure

你再试试, 执行比如replace_dev(myWorkLib source_lib source_dev target_lib target_dev), 上面的忘记把source_lib改成myWorkLib了,dbOpenCellViewByType应该打开的是myWorkLib里的cell
 楼主| 发表于 2016-6-17 13:22:56 | 显示全部楼层
回复 14# wowmin


   你好。我运行了这个skill。可是没有warming也没有error,我的device最终没有被修改lib跟cellname啊。
 楼主| 发表于 2016-6-17 15:39:01 | 显示全部楼层
回复 14# wowmin


   运行后还是不成功啊,在open view symbol哪里出错了
发表于 2016-6-17 17:08:15 | 显示全部楼层
targetId=dbOpenCellViewByType(target_lib target_dev "symbol" "" "r")
你有没有写错? 提示什么错误?  不应该的
发表于 2016-6-17 17:17:34 | 显示全部楼层
replace_dev("myLib"  "PDKLIB_A"  "mn5"  "PDKLIB_B"  "mn3"),
可以把myLib这个library 里的所有含有schematic的cell里的"PDKLIB_A  mn5" 转到"PDKLIB_B mn3".
注意转的时候不要打开schematic以及保证你有可写权限, 还有不要有lock file锁住你的schematic.
 楼主| 发表于 2016-6-17 18:14:54 | 显示全部楼层
回复 17# wowmin


   那比如吧,我的填的后面(“TEST” “mn5” “symbol” “r”)我想表达的是TEST这个lib里面所有cell的mn5这个器件,它句不能实现啊
 楼主| 发表于 2016-6-17 18:23:23 | 显示全部楼层
回复 17# wowmin


     leReplaceAnyInstMaster(inst target_lib target_dev nil) 我原来程序的这一句,在你的这段代码里面有体现这个吗?是用inst~>master=targetId替代了,吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-17 02:30 , Processed in 0.032343 second(s), 7 queries , Gzip On, Redis On.

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