注册 | 登录 | QQ登陆 |

自己写的一些非常好用的skill脚本

时间:2024-08-14人气:-


9)AddMosM1这个脚本,最初始的版本是我在刚刚开始学习skill时在eetop上下载的第一个脚本。功能是在mos的S/D/G上加盖一层metal1,并且加宽。这个脚本我更新过不下10次,因为是我的第一个脚本,总想着各种优化,各种修改。最初的算法是识别mos的原点,然后根据mos的length去计算metal1的位置,然后画path。前几天在eetop上看到另一个帖子写的相同功能的脚本,算法是获取mos的所有shapes,然后获取其中的metal1,然后将这层metal1复制了放进一个新建的cell内,再调用进来盖在mos上面,再打散。这种算法给了我新的思路。结合我的MagicCopy的思路,我更新了现在这版脚本。

使用方法:选中mos,按下快捷键7

脚本中第三行是M1_width = 0.1 这个可以自行调整。我以前迭代的版本中有一版是做了个form弹窗,可以手动输入这个width值,但后面我就取消了,对于一个case来说,mos上的metal1的width只要定下来一个值就不用再改了。如果每次使用都弹出form反而会降低效率。

这里我说一下这个脚本为什么有的人喜欢用,并且即使没有脚本也要手动去加宽mos上的metal1。我敢断言,会这么做的,一定是经验丰富的版图工程师,并且对版图的质量有严格的要求,俗称,版图的艺术。因为版图完成后是要后仿迭代的,和版图工程师相关的就是EMIR和RC,其中IR问题经常遇到,就是power的电压下降,因为从PAD到你mos的metal1这条通路会经过很多层metal,很多层via,如果这条通路不够强,R太大,就会使IR太大,这样电压在到达mos时已经降低了很多。这在后仿时是有相关要求的,比如1.8V的power在底层block的IR要小于15mV,IP的IR要小于40mV。回归主题,mos上的metal1打宽一些,可以降低metal1的R,如果是小制程的,via可以打成长孔的,加宽metal1之后可以打一个横向的via,增加mos上via的过流能力,减小R。这里说明一下,via的电阻相对于metal来说是非常大的,一个方孔可能会有2 ohm,所以对于power 、gnd的plan,metal要尽量宽,via要尽量多。

上面说的基本和脚本无关,是成为一个好的版图工程师的基本素养。愿意听的就借鉴一下。对版图很随意的,可以弃之如蔽履。

这里老王卖瓜自卖自夸一波,我的版图,后仿EMIR很多时候是没有需要修的地方的,偶尔有需要改的地方也只是IR差了一点点,稍稍修一修就OK了。这是好的版图习惯所形成的实力。有些人画的版图不止看着丑,而且EMIR跑出来一片红,要花费大量时间去修改加强。

请问一下,怎么学习skill?

论坛里就有skill的学习资料吧,我的学习资料是公司内部非公开的。有一定基础之后就是看别人的脚本去学函数,skill的语法很少,就那么几个循环。

主要就是函数,函数,函数。很多时候你想达到某个目的而写了一堆代码,然而有一个函数可以用一句话就能做到。这是函数积累的问题。

举例来说,有一个list,里面是一些数字,你想把小于3的删掉。你可以这样写:

list='(1 2 3 4 5 6 7 8 9)

List=nil

foreach(one list

if( one >=3 then List=append1(List one))

);foreach

也可以这样写:

list='(1 2 3 4 5 6 7 8 9)

List=setof(x list x>=3)

这两段代码返回的都是(3 4 5 6 7 8 9),但是代码长度不同,第二段明显简单明了。setof这个函数就是用来按照某个条件筛选用的。

当你不知道setof时,就得用第一段开写,里面有foreach循环,有if判断。理论上效率更低。那么这种实用的函数时怎么知道的呢?看别人的脚本学的。

(这里说一下我个人理解,setof这种skill的既有函数,我想其底层代码也是第一段代码的写法,只不过cadence将这个自定义函数给整合到软件中,作为基础函数来用,这样可以是编码更简单整洁,易于理解,实际效率并没有提升。但不知道我的想法是否正确)

感谢大牛分享,作为一个刚入行版图的小白,对skill不是很了解,想请问下怎么使用分享的脚本,在ciw输入load ...

我的脚本都是*.il.txt格式打的rar的压缩包,下载之后在windows解压缩,并重命名把.txt去掉。skill脚本都是以.il做后缀的。

然后把*.il放到你的根目录,然后在CIW中输入:load "~/*.il"就成功了。脚本快捷键和使用方法都是在各个脚本里面定义的。我帖子的说明里也写了。

有些脚本使用方法比较特殊,所以还是希望能仔细看一些我写的说明。

楼主,我看到了第一个脚本的介绍,我感觉这个功能没有必要自己写脚本,可以使用virtuoso自带的快捷键y和shi ...

正解,没有这个脚本的时候我就是用这两个功能。但是呢,用yank的话,需要先x进去,然后再x到你做修改的层。这等于多操作几步。而且如果是在foundry提供的stdcell上方进行x操作时,很容易进入到stdcell内部。

但MagicCopy并不会有这个问题,对我个人来说,还是有一定的提升的。使用越频繁的功能,节省的时间就越多。

我见过魔兽天王sky一般手速的人,操作眼花缭乱,但是我慢悠悠的用我几十个快捷键操作,并不比他慢。

9)AddMosM1这个脚本,最初始的版本是我在刚刚开始学习skill时在eetop上下载的第一个脚本。功能是在mos的S/D/G上加盖一层metal1,并且加宽。这个脚本我更新过不下10次,因为是我的第一个脚本,总想着各种优化,各种修改。最初的算法是识别mos的原点,然后根据mos的length去计算metal1的位置,然后画path。前几天在eetop上看到另一个帖子写的相同功能的脚本,算法是获取mos的所有shapes,然后获取其中的metal1,然后将这层metal1复制了放进一个新建的cell内,再调用进来盖在mos上面,再打散。这种算法给了我新的思路。结合我的MagicCopy的思路,我更新了现在这版脚本。

使用方法:选中mos,按下快捷键7

脚本中第三行是M1_width = 0.1 这个可以自行调整。我以前迭代的版本中有一版是做了个form弹窗,可以手动输入这个width值,但后面我就取消了,对于一个case来说,mos上的metal1的width只要定下来一个值就不用再改了。如果每次使用都弹出form反而会降低效率。

这里我说一下这个脚本为什么有的人喜欢用,并且即使没有脚本也要手动去加宽mos上的metal1。我敢断言,会这么做的,一定是经验丰富的版图工程师,并且对版图的质量有严格的要求,俗称,版图的艺术。因为版图完成后是要后仿迭代的,和版图工程师相关的就是EMIR和RC,其中IR问题经常遇到,就是power的电压下降,因为从PAD到你mos的metal1这条通路会经过很多层metal,很多层via,如果这条通路不够强,R太大,就会使IR太大,这样电压在到达mos时已经降低了很多。这在后仿时是有相关要求的,比如1.8V的power在底层block的IR要小于15mV,IP的IR要小于40mV。回归主题,mos上的metal1打宽一些,可以降低metal1的R,如果是小制程的,via可以打成长孔的,加宽metal1之后可以打一个横向的via,增加mos上via的过流能力,减小R。这里说明一下,via的电阻相对于metal来说是非常大的,一个方孔可能会有2 ohm,所以对于power 、gnd的plan,metal要尽量宽,via要尽量多。

上面说的基本和脚本无关,是成为一个好的版图工程师的基本素养。愿意听的就借鉴一下。对版图很随意的,可以弃之如蔽履。

这里老王卖瓜自卖自夸一波,我的版图,后仿EMIR很多时候是没有需要修的地方的,偶尔有需要改的地方也只是IR差了一点点,稍稍修一修就OK了。这是好的版图习惯所形成的实力。有些人画的版图不止看着丑,而且EMIR跑出来一片红,要花费大量时间去修改加强。

*Error* dbCreateLabel: argument #1 should be a database object (type template = "dglttttn") - (db: ...

我的脚本都是基于virtuoso6.1之后的版本写的。原理是获取layout界面中的instances,然后获取这些instance的名字,然后在instance的中间位置打上这个名字。

从你这个报错来看,是函数dbCreateLabel的用法不同,那只能是版本不对的原因。

我想你应该用的是5141版本吧。

我这里没有这个版本,没办法看这个版本的函数。

首先呢,你的快捷键使用方法就不对。

你先确认你load成功了,你的脚本确实是放在/home/下面了。

CIW中loa ...

load "/home/CopyPinToCurrentWindow.il"

function CopyPinToCurrentWindow redefined

CopyPinToCurrentWindow

*Error* eval: undefined function - dbGetObj

这个函数错误错误: dbGetObj怎么解决?

1)这个脚本有一个函数我写错了,在后面的置顶楼层有说明,因为一楼不能编辑,所以我重新上传了一次。

已经下载的,可以将里面的函数dbGetObj改成ddGetObj。

2)这个脚本使用时,只需要选中block,按下快捷键就行了,不需要左侧LSW中选中pin layer。

3)我脚本中的“pin”和“MnTXT”,“ALPATXT”是拼 layer的purpose。“pin”对应TMSC的,“MnTXT”和“ALPATXT”是SMIC的。

如果你用的工艺不是这两家的,需要把你们用的pin layer的purpose 替换到里面。

1)这个脚本有一个函数我写错了,在后面的置顶楼层有说明,因为一楼不能编辑,所以我重新上传了一次。

已 ...

谢谢楼主回复,我已经把代码改过来了,我用的SMIC工艺,所以打pin用MNTXT层是吗 M1 PIN用 MNTXT matel1是这样吗?还有楼主你一直说的block具体代表什么呢?

我load完后按F10没反应 应该是改成了F12 按F12显示Error eval:unbound variable -0请问是什么原因造成的呢?代码抄错的原因吗?谢谢

特别声明:以上内容(如有图片或视频亦包括在内)为本平台用户上传并发布,本平台仅提供信息存储服务。


上篇:这一次,射击更刺激!《和平精英》震撼亮相2024腾讯游戏发布...

下篇:Chrome 的人都需要知道的「神器」扩展:「油猴」使用详解

最新更新