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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: chinarml

[资料] 自己写的一些非常好用的skill脚本

[复制链接]
发表于 2020-10-16 10:40:00 | 显示全部楼层
ic618实测用AddmosM1.il和AddmosM1_custom.il两个skill,点击mos cell按7没有反应。
发表于 2020-10-19 15:16:17 | 显示全部楼层


chinarml 发表于 2020-10-15 08:28
这个脚本的原理是,获取选中目标mos的所有shapes,这个shapes是mos的一个属性,返回值是mos所用到的所有l ...


大神,最近也在学习一些简单的skill。


比如我希望用快捷键改变在stdvia里面的via类型,比如选中一个via1(或者array),可以直接换成相应的via2等等,不知道应该用什么函数?


还有,是不是可以换成自定义的via?







发表于 2020-10-20 10:27:31 | 显示全部楼层
感谢大佬的分享,最近开始学skill,先收藏着 一点点对照学习 膜拜。
发表于 2020-10-21 11:34:14 | 显示全部楼层
谢谢分享
发表于 2020-10-21 11:44:03 | 显示全部楼层
本帖最后由 Edward_yin 于 2020-10-22 09:25 编辑

已解决。
发表于 2020-10-21 13:26:52 | 显示全部楼层
这个帖子好,楼主好仔细啊~~
 楼主| 发表于 2020-10-21 19:40:58 | 显示全部楼层
再发一个脚本,画stack path和gardring的。
原理是利用virtuoso自带的multipath功能,用form和脚本算法去自行产生符合自己要求的multipath设置,然后调用系统的multipath函数。

如果没用过multipath的建议先用用,

使用方法:
1,左侧LSW中选中multipath的sub layer,按下快捷键G
2,这个脚本是stackpath和gardring两种功能整合在一起的,LSW中选择"AA" ,按下快捷键则出现画gardring的form,选择metal,则出现画stack path的form
3,此脚本为专门针对smic28nm定制的。内部的layer name为SMIC28的,如果是其他工艺,需要自己改一下。
比如SMIC的"AA"对应TSMC的"OD"等等。
4,里面有几个计算公式,比如计算multipath打孔的排数和孔的位置,这些公式中用到的数值都是SMIC28的rule,要做成common的需要增加一些语句再调试,
我先麻烦,反正对于一种工艺的,调一次数值就行了,对我来说so easy。但公式中每个数值代表的是什么只有我知道。。。
5,下面我截取几个公式解释一下吧:

①下面这种是指的metal和via在LSW中显示的name,你的不是这样那就改一下
metal_List = list("M1" "M2" "M3" "M4" "M5" "M6" "M7")
via_list = list("V1" "V2" "V3" "V4" "V5" "V6")
②viaNam这个公式在脚本中用过几次,要改的话记得全部都改一遍
int()是取整的函数,width是指sub layer的宽度,这是计算via的排数的公式。
width减去两个数值,一个是via的width,我的是0.05um。另一个是方孔被metal 包围的值的两倍,我这里取的是O调用一个方孔,metal四边包围via各0.025um,
所以第二个数值时0.025*2=0.05。至于0.13,这是via的width+spacing的值,我这里是0.05+0.08=0.13
viaNum = 1+int((width-0.05-0.05)/0.13)
③这是计算multipath的孔的相对位置的计算公式,其中的0.13还是via的width+spacing
if(evenp(i) then sep = 0.0+int(i/2)*0.13 else sep = -0.13-int(i/2)*0.13);if
④这句是设定multipath的配置环境的语句,其中的两个0.05指的是via的width和length,0.08只via spacing,两个-0.04指的是multipath的头和尾超出第一颗via的大小
Vias = list(list(one "darwing") 0.05 0.05 t sep "center" 0.08 -0.04 -0.04 "distribute")
⑤下面这个和第三个是一样的,0.13还是width+spacing,而0.065是0.13的一半,注意公式里面的负号别给改没了
if(evenp(i) then sep = 0.065+int(i/2)*0.13 else sep = -0.065-int(i/2)*0.13);if

有兴趣的可以把这些不确定值改成局部变量,就是放在开头的let后面的括号里面,然后在公式中用变量替换,在最开头给变量赋值。
只是我在开始没这么写,写完了又懒得再改了。

后面还有个同样利用multipath内核写的画shielding的脚本,思路和这个差不多,单因为要单独设置快捷键,所以没整合到这个脚本里面。
等后面有空了再抄写下来上传吧。这种脚本太长了,手打的容易出错,错一个字母就不能用。



CreateStackPath_for_s28.il.rar

1.58 KB, 下载次数: 439 , 下载积分: 资产 -2 信元, 下载支出 2 信元

 楼主| 发表于 2020-10-21 19:43:36 | 显示全部楼层


rain_0 发表于 2020-10-19 15:16
大神,最近也在学习一些简单的skill。


这个脚本我一直在用,只是这个脚本有一部分参考了别人的,不完全是我自己写出来的,所以没上传。
发表于 2020-10-22 09:08:23 | 显示全部楼层


chinarml 发表于 2020-10-21 19:43
这个脚本我一直在用,只是这个脚本有一部分参考了别人的,不完全是我自己写出来的,所以没上传。
...


那如果可以的话,能不能私下发我一下看看?

发表于 2020-11-2 14:36:05 | 显示全部楼层
谢谢分享,大大节省了时间
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-27 21:04 , Processed in 0.030361 second(s), 6 queries , Gzip On, Redis On.

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