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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 240|回复: 8

[原创] 更改schematic MOS管的cellName

[复制链接]
发表于 2024-5-9 17:06:16 | 显示全部楼层 |阅读模式

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

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

x
想通过skill脚本的方法,将当前MOS管由svtpmos改为hvtpmos,下述代码可以实现,但是仅支持schematic窗口打开的情况。如果schematic窗口关闭了,脚本无法运行。
由于需要批量更改,不可能一个个去打开每个cell的schematic,请教下大佬,schematic窗口关闭的情况下代码应该如何改写?谢谢。




schHiSelectByProperty("select" "cellName" "==" "svtpmos")   
                selObjId = geGetSelectedSet()
                foreach( inst selObjId
                        geSelectObject(inst)
                        schHiObjectProperty()
                        hiiSetCurrentForm('schObjPropForm)
                        schObjPropForm->cellName->value="hvtpmos"
                        hiFormDone(schObjPropForm)
                        geDeselectAllObject()
    )


发表于 2024-5-9 17:18:30 | 显示全部楼层
查找替换呢?
发表于 2024-5-10 09:39:56 | 显示全部楼层
foreach去遍历libraryID每个sch,再嵌套foreach去遍历每个sch的的instance,if==“svtpmos”,再去替换
 楼主| 发表于 2024-5-10 10:15:01 | 显示全部楼层


이지은 发表于 2024-5-10 09:39
foreach去遍历libraryID每个sch,再嵌套foreach去遍历每个sch的的instance,if==“svtpmos”,再去替换 ...


你好!if  ??== “svtpmos” ?

替换的函数怎么写?
麻烦指教下,谢谢。
发表于 2024-5-10 10:46:21 | 显示全部楼层


云卷云舒semi 发表于 2024-5-10 10:15
你好!if  ??== “svtpmos” ?

替换的函数怎么写?


我只是简写,没写条件,你在论坛搜转工艺脚本,会有你想要的。

更换工艺 skill 脚本 debug求助 报错 CDF - Layout讨论区 - EETOP 创芯网论坛 (原名:电子顶级开发网) -
发表于 2024-5-11 09:42:09 | 显示全部楼层
你的问题用这个函数解决:dbOpenCellViewByType()
要改写也不难,大概思路如下:
①通个ddGetObj("libName")获取lib的ddId
②通过这个ddId获取lib底下所有的cellName
③用foreach()遍历,通过dbOpenCellViewByType()打开所有的schematic
④用条件判断语句找出符合条件的器件并替换
⑤schCheck(cv) dbSave(cv) dbClose(cv)
 楼主| 发表于 5 天前 | 显示全部楼层


着着着火了 发表于 2024-5-11 09:42
你的问题用这个函数解决:dbOpenCellViewByType()
要改写也不难,大概思路如下:
①通个ddGetObj("libName" ...


你好!
感谢你的反馈,你发的整体代码思路和我的思路基本是一致的,刚开始提这个问题的时候,是没找到更改MOS管cellName的函数,下述代码可以实现更改MOS管的cellName。

代码如下:

foreach(inst cv~>instHeaders
                        if(inst~>cellName == "lvtpmos"
                                then
                                dbSetInstHeaderMasterName(inst nil "hvtpmos" nil)
                        else
                                if(inst~>cellName == "lvtnmos"
                                        then
                                        dbSetInstHeaderMasterName(inst nil "hvtnmos" nil)
                                );if
                        );if
                );foreach



麻烦看下这么写是否有问题,请多多指教,谢谢。

 楼主| 发表于 5 天前 | 显示全部楼层


이지은 发表于 2024-5-10 10:46
我只是简写,没写条件,你在论坛搜转工艺脚本,会有你想要的。

更换工艺 skill 脚本 debug求助 报错 CDF ...


你好!
感谢你的反馈,研究了一段时间后,下述代码可以实现更改MOS管的cellName。

代码如下:

foreach(inst cv~>instHeaders
                        if(inst~>cellName == "lvtpmos"
                                then
                                dbSetInstHeaderMasterName(inst nil "hvtpmos" nil)
                        else
                                if(inst~>cellName == "lvtnmos"
                                        then
                                        dbSetInstHeaderMasterName(inst nil "hvtnmos" nil)
                                );if
                        );if
                );foreach

麻烦看下这么写是否有问题,请多多指教,谢谢。

发表于 5 天前 | 显示全部楼层


云卷云舒semi 发表于 2024-5-15 11:00
你好!
感谢你的反馈,你发的整体代码思路和我的思路基本是一致的,刚开始提这个问题的时候,是没找到更 ...


初步看没什么问题,具体还得看运行起来后。
还有一种方法是通过cv~>instances一个一个来替换,用schReplaceProperty()这个函数。
上面的两个替换函数都会有的问题:当替换的名字(或者说新的器件)的Symbol的端口和原来的不一样的时候会报错,程序能运行成功,就是在sch中会在多出来的端口显示ERROR,CIW窗口也有报错的信息。这些报错的器件移动一下ERROR就消失了,具体会有什么影响还得看实际应用吧,这里没有深入测试就当是个信息点记着。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-5-20 11:38 , Processed in 0.034162 second(s), 8 queries , Gzip On, Redis On.

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