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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1884|回复: 13

[求助] 如何获得一个TOP上所有INSTANCE的database?

[复制链接]
发表于 2022-5-15 15:23:05 | 显示全部楼层 |阅读模式

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

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

x
如何获得一个TOP上所有INSTANCE的database?  我想对TOP上的一个单独INV的属性进行修改,而不是对同一种 的INV进行修改,具体点说对CELLNAME 为INV_22 INSTANCE NAME为 I0  的器件,用CELLNAME为INV_666进行替换,要用到什么函数呢 求大神指点?
发表于 2022-5-15 23:55:33 | 显示全部楼层
本帖最后由 amodaman 于 2022-5-16 00:02 编辑








复制代码
cv = geGetEditCellView()
I0 = car(setof (x cv~>instances x~>name =="I0"))
when(I0~>master~>cellName == "INV_22"
  I0~>master = dbOpenCellViewByType( I0~>master~>libName "INV_666" "symbol" "" "r")
  dbCheck(cv)
  dbSave(cv)
) ;; when
发表于 2022-5-16 13:51:23 | 显示全部楼层
image.png
 楼主| 发表于 2022-5-17 08:35:09 | 显示全部楼层


amodaman 发表于 2022-5-15 23:55
cv = geGetEditCellView()
I0 = car(setof (x cv~>instances x~>name =="I0"))
when(I0~>master~>cellName  ...


谢谢,真的很感谢,回了很多我的帖子了,阖家幸福,身体健康
 楼主| 发表于 2022-5-17 08:43:06 | 显示全部楼层
 楼主| 发表于 2022-5-17 18:08:29 | 显示全部楼层


amodaman 发表于 2022-5-15 23:55
cv = geGetEditCellView()
I0 = car(setof (x cv~>instances x~>name =="I0"))
when(I0~>master~>cellName  ...


前辈,想请教Foreach 是不是不能嵌套?我想用Foreach遍历整个库的CellName到另一个Foreach中,但程序没有用 procedure(Copy_Rename()let((cv dd_l ln_l cn_l lib_n Num cell_l cell_n)
cv=geGetEditCellView()
lib_n=cv~>libName
cell_l=ddGetObj(lib_n)~>cells~>name
dd_l=cv~>instances
ln_l=cv~>instances~>name
cn_l=cv~>instances~>cellName
Num=0
foreach(cell_n cell_l
if(member(cell_n cn_l) then
foreach(dd dd_l
if(dd~>cellName==cell_n then
In=dd~>name
in_n=strcat(dd~>cellName "_" In)  
dv=dbOpenCellViewByType(lib_n dd~>cellName "schematic" "" "a")
ev=dbOpenCellViewByType(lib_n dd~>cellName "layout" "" "a")
pv=dbOpenCellViewByType(lib_n dd~>cellName "symbol" "" "a")
dbCopyCellView(dv lib_n in_n "schematic")
dbCopyCellView(ev lib_n in_n "layout")
dbCopyCellView(pv lib_n in_n "symbol")
dd~>master=dbOpenCellViewByType(lib_n in_n "symbol" "" "r")
Num=Num+1
);if
printf("\n%-15d" Num)
);foreach
);if
);foreach
dbCheck(cv)
dbSave(cv)
);let
);procedure
Copy_Rename()


发表于 2022-5-17 18:17:50 | 显示全部楼层
你要做到什么?我要花几分钟看一下你的代码,然后才能修改。
 楼主| 发表于 2022-5-17 18:24:28 | 显示全部楼层


amodaman 发表于 2022-5-17 18:17
你要做到什么?我要花几分钟看一下你的代码,然后才能修改。


将所有重复的门,重命名把他们唯一化,给所有的 单元后面加上唯一的后缀,并复制他们的所有CELLVIEW
发表于 2022-5-17 18:33:01 | 显示全部楼层


MAGA2020 发表于 2022-5-17 18:24
将所有重复的门,重命名把他们唯一化,给所有的 单元后面加上唯一的后缀,并复制他们的所有CELLVIEW
...





  1. procedure(Copy_Rename()

  2. let( (cv dd_l ln_l cn_l lib_n Num cell_l cell_n)
  3. cv = geGetEditCellView()
  4. lib_n = cv~>libName

  5. cell_l = ddGetObj(lib_n)~>cells~>name
  6. dd_l = cv~>instances
  7. ;; ln_l = cv~>instances~>name
  8. ;; cn_l = cv~>instances~>cellName

  9. Num = 0

  10. ;;foreach( cell_n cell_l
  11. ;; if( member(cell_n cn_l) then
  12.    foreach( dd dd_l
  13.     if(dd~>cellName == cell_n then
  14.       In = dd~>name
  15.       in_n = strcat(dd~>cellName "_" In)  
  16.       dv = dbOpenCellViewByType(lib_n dd~>cellName "schematic" "" "a")
  17.       ev = dbOpenCellViewByType(lib_n dd~>cellName "layout" "" "a")
  18.       pv = dbOpenCellViewByType(lib_n dd~>cellName "symbol" "" "a")
  19.       dbCopyCellView(dv lib_n in_n "schematic")
  20.       dbCopyCellView(ev lib_n in_n "layout")
  21.       dbCopyCellView(pv lib_n in_n "symbol")
  22.       dd~>master = dbOpenCellViewByType(lib_n in_n "symbol" "" "r")
  23.       Num = Num+1
  24.   );if
  25.   printf("\n%-15d" Num)
  26.   );foreach
  27. ;; );if
  28. ;; );foreach

  29. dbCheck(cv)
  30. dbSave(cv)
  31. );let
  32. ); procedure

  33. Copy_Rename()


复制代码


发表于 2022-5-17 18:34:15 | 显示全部楼层
另外要把你的局部变量整理一下,就好了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-28 00:39 , Processed in 0.033395 second(s), 7 queries , Gzip On, Redis On.

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