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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 22367|回复: 59

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

[复制链接]
发表于 2016-6-15 14:19:58 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Lolia1217 于 2016-6-21 14:28 编辑

现在两个工艺互相装换,我写了脚本出来处理转新工艺后的top schematic里面的device 的指定Lib跟name,
问题是转换前的device的默认w ,l的数值只要是跟defValue一样就会被替换成新工艺的defValue,
这是我不想出现的,
麻烦哪位大神指点一下在我的程序里应该怎么改进这一步才能使我的device的值不会被替换掉~~~~~
急~~~~
 楼主| 发表于 2016-6-15 14:21:05 | 显示全部楼层
回复 1# Lolia1217


   自己顶一下~~~不要沉下去~~~
 楼主| 发表于 2016-6-15 14:23:56 | 显示全部楼层
回复 1# Lolia1217


保持所有的value不变啊~~
 楼主| 发表于 2016-6-15 14:46:48 | 显示全部楼层
回复 1# Lolia1217


   没人回答我的问题啊~~~~简直是想跳楼的节奏~~~~
发表于 2016-6-15 20:55:09 | 显示全部楼层
看你描述虽然不清楚,但是我猜测是想PDK porting ,假如有下面
fromLib   fromCell   fromView  =>  toLib   toCell   toView ,  你可能是希望relpace instance以后toLib   toCell   toView保持fromLib   fromCell   fromView的CDF 参数, 不知道是不是想这样? 需要做CDF mapping。比如有可能旧的PDK参数叫width 对应新的PDK 参数w, 替换instance以后再用脚本处理下参数映射关系。
 楼主| 发表于 2016-6-16 10:28:57 | 显示全部楼层
回复 5# wowmin


   你好,多谢你的关注。我的意思跟你意思差不多。
不过我现在的情况比你说还简单一些,因为我现在的CDF参数类型的name是对应起来的。
我现在的问题是,device的w与l都有defValue(默认的值,即调出来时的默认值)
当我的电路调用的mos的w,或是l是默认值是,当我修改了mos的工艺库跟名字之后,它的w或l也会变成新工艺这边的对应mos的默认值。

比如:A工艺,mn5的w=3 这是defValue
        B工艺,mn3的w=2这是defValue
  那么,我修改电路中的某一个mos指定到B工艺库里面的mn3,这个mos的w就会由3变为2,这是我不想出现的,我只希望改变他们的库名跟cellname,所以请教大神们,我该如何解决这个问题。。。。。。。。。。。。。我现在是针对一个top电路的所以器件进行修改。。。。
发表于 2016-6-16 11:17:53 | 显示全部楼层
回复 6# Lolia1217

修改过的值保存在inst的prop中,默认值保存在cdf中,prop中的值为空时,就获取cdf中的值,再进行替换


w=dbGetPropByName("w" dbId)->value || cdfFindParamByName("w" cdfId)->value
 楼主| 发表于 2016-6-16 12:21:11 | 显示全部楼层
回复 7# mangoch


   你好,感谢你的解答。。。。。还在学习研究中。。。。
 楼主| 发表于 2016-6-16 12:27:55 | 显示全部楼层
回复 7# mangoch


   procedure(replace_dev(source_lib source_dev target_lib target_dev)let((cell_list sch_cv)
cell_list=ddGetObj(source_lib)~>cells~>name
foreach(cell cell_list
    if(cell != source_dev then
   sch_cv= dbOpenCellViewByType(source_lib cell "schematic" "schematic" "a")
   foreach(inst sch_cv~>instances
        if(inst~>cellName == source_dev then
        leReplaceAnyInstMaster(inst target_lib target_dev nil)
        );if
        );foreach
   dbSave(sch_cv)
   );if
   );foreach
)
)


麻烦帮我看看我的这段程序就是替换指定lib的里面的cell 所有的device。。。。。。你的那段skill能给我详细解释一下具体实现需求。
发表于 2016-6-16 15:06:10 | 显示全部楼层
procedure(replace_dev(source_lib source_dev target_lib target_dev)
let((cell_list sch_cv targetId w l)
cell_list=ddGetObj(source_lib)~>cells~>name
foreach(cell cell_list
    if(cell != source_dev then
   sch_cv= dbOpenCellViewByType(source_lib cell "schematic" "schematic" "a")
   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“
          );if
        );if
        );foreach
   dbSave(sch_cv)
   );if
   );foreach
)
)

大概在你的skill基础上改了下, 你验证下看看, 我这里就是先取得旧的参数值, 替换master后再赋给inst,  最好修改param值后需要trigger callback(这里我没有做),  如果旧的PDK参数值不超过新的PDK参数值范围,就可以维持旧的PDK参数值不变。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-16 21:34 , Processed in 0.023176 second(s), 8 queries , Gzip On, Redis On.

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