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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 524|回复: 7

[求助] virtuoso 批量改cell name

[复制链接]
发表于 2024-10-18 15:32:26 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 wmd201409 于 2024-10-18 15:36 编辑

请教下,怎么用脚本批量的改库下面的cell name呀,比如给test_1这个库下面的部分 cell 加前缀gs_*,我记得应该是可以通过脚本改的,忘记脚本怎么写的了

希望的效果是 bg     gs_bg
                    osc    gs_osc
                    asd    gs_asd
                    ers     gs_ers
                    ert     gs_ert


发表于 2024-10-18 15:49:47 | 显示全部楼层
蹲一个
发表于 2024-10-18 16:17:42 | 显示全部楼层
添加前缀/后缀,用法:




  1. myAddPrefixSuffixToAllInLib(?lib "test_1" ?prefix "gs_" ?suffix "")


复制代码

代码:





  1. procedure(myAddPrefixSuffixToAllInLib([url=home.php?mod=space&uid=316438]@key[/url] lib prefix suffix)
  2.         let((libId src newName des newCell)
  3.                 libId=ddGetObj(lib)
  4.                 newCell=list()
  5.                 foreach(cellname libId~>cells~>name
  6.                         src=gdmCreateSpec(lib cellname "" "" "CDBA")
  7.                         newName=strcat(prefix cellname suffix)
  8.                         des=gdmCreateSpec(lib newName "" "" "CDBA")
  9.                         ccpRename(src des t 'CCP_EXPAND_COMANAGED 'CCP_UPDATE_DESTLIB_ONLY)
  10.                         newCell=cons(sprintf(nil "%s : %s -> %s" lib cellname newName) newCell)
  11.                 )
  12.                 if(newCell foreach(x newCell printf("%s\n" x)))
  13.         )
  14. )


复制代码

删除前缀/后缀,用法:




  1. myDeletePrefixSuffixToAllInLib(?lib "test_1" ?prefix "gs_" ?suffix "")


复制代码
代码:




  1. procedure(myDeletePrefixSuffixToAllInLib(@key lib prefix suffix)
  2.         let((libId src newName des leftIndex rightIndex newCell)
  3.                 libId=ddGetObj(lib)
  4.                 newCell=list()
  5.                 foreach(cellname libId~>cells~>name
  6.                         leftIndex=nindex(cellname prefix)
  7.                         rightIndex=rindex(cellname suffix)
  8.                         src=gdmCreateSpec(lib cellname "" "" "CDBA")
  9.                         cond(
  10.                                 (leftIndex==1 && rightIndex
  11.                                         newName=substring(cellname length(prefix)+1 length(cellname))
  12.                                         newName=substring(newName 1 length(newName)-length(suffix)))
  13.                                 (leftIndex==1
  14.                                         newName=substring(cellname length(prefix)+1 length(cellname)))
  15.                                 (rightIndex
  16.                                         newName=substring(cellname 1 length(cellname)-length(suffix)))
  17.                         )
  18.                         if(leftIndex==1 || rightIndex then
  19.                                 des=gdmCreateSpec(lib newName "" "" "CDBA")
  20.                                 ccpRename(src des t 'CCP_EXPAND_COMANAGED 'CCP_UPDATE_DESTLIB_ONLY)
  21.                                 newCell=cons(sprintf(nil "%s : %s -> %s" lib cellname newName) newCell))
  22.                 )
  23.                 if(newCell foreach(x newCell printf("%s\n" x)))
  24.         )
  25. )


复制代码



 楼主| 发表于 2024-10-18 16:39:50 | 显示全部楼层


我是青藤 发表于 2024-10-18 16:17
添加前缀/后缀,用法:

代码:


谢谢大神帮忙,我想的是不一定是加前缀后缀,我想任意改名,比如aaa 改成aba,下一个cell bbb 改成gs_bbb,等,这样的改名能实现吗?就是一一对应的改,谢谢帮助哈
发表于 2024-10-18 16:40:21 | 显示全部楼层


我是青藤 发表于 2024-10-18 16:17
添加前缀/后缀,用法:

代码:


请问这些代码是通用的吗,直接在CIW命令行输入吗,谢谢
发表于 2024-10-18 17:26:10 | 显示全部楼层


wmd201409 发表于 2024-10-18 16:39
谢谢大神帮忙,我想的是不一定是加前缀后缀,我想任意改名,比如aaa 改成aba,下一个cell bbb 改成gs_bbb ...


把大神的代码改一改就行了,用一个list来说明改之前和之后的名称,或者从文件里读取名称就行了
 楼主| 发表于 2024-10-19 11:30:24 | 显示全部楼层


acrofoxAgain 发表于 2024-10-18 17:26
把大神的代码改一改就行了,用一个list来说明改之前和之后的名称,或者从文件里读取名称就行了 ...


但是这样指定名之后的循环逻辑我不懂怎么写,如果是调用list来弄的话有点麻烦,我想一个脚本搞定,好像是可行的,以前弄过别人写的,现在忘记怎么写了
发表于 2024-10-19 12:37:48 | 显示全部楼层






  1. procedure(RenameCells(cellMapList)
  2.     let( (src dest srcLib srcCell srcView destLib destCell destView)
  3.         foreach(cellMap cellMapList
  4.             src = car(cellMap)
  5.             dest = cadr(cellMap)
  6.             srcLib = car(cellMap)
  7.             srcCell = cadr(cellMap)
  8.             srcView = caddr(cellMap)
  9.             destLib = ...
  10.             ; Rename srcLib/srcCell/srcView to destLib/destCell/destView
  11.         )
  12.     )
  13. )

  14. RenameCells(
  15.     '( (("lib1" "cellA" "symbol") "lib1" "lib1_cellA" "symbol"))
  16.        (("lib1" "cellB" "symbol") "lib1" "lib1_CELLB" "symbol"))
  17.     )
  18. )



复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-5 16:27 , Processed in 0.022523 second(s), 6 queries , Gzip On, Redis On.

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