Skill语言学习_7🦽

使用Skill语言,完成MOS管的栅极金属层向不同方向衍伸

image-20260306103225234

Skill版本:

getSkillVersion
"SKILL35.00"
> 

学习参考:

[ Skill ] Cadence Skill 语言入门 - YEUNGCHIE - 博客园

脚本思路:

1、提取框选区域的所有M1金属层id列表;

2、用鼠标选取一个参考点;

3、确定M1金属层的延伸方向并延伸。

设计操作:

1、提取框选区域的所有M1金属层id列表;

获取当前选中的所有图形对象,存入 selected
selected = geGetSelSet()

2、用鼠标选取一个参考点;

point = enterPoint(?points mouseAddPt())

3、确定M1金属层的延伸方向并延伸。

foreach(fig selected
    oldBBox = fig~>bBox
    width = caadr(oldBBox) - caar(oldBBox)  
    height = cadadr(oldBBox) -  cadar(oldBBox)
    newBBox = nil
    when(cadr(point) > cadadr(oldBBox) && height < width
            newBBox = list(car(oldBBox),list(caadr(oldBBox),cadar(oldBBox) + newWidth))
    );when
    when(cadr(point) < cadadr(oldBBox) && height < width
            newBBox = list(list(caar(oldBBox),cadadr(oldBBox) - newWidth),cadr(oldBBox))
    );when
    fig~>bBox = newBBox
);foreach

整合上述代码,并绑定快捷键:

;Stupid-Monkey
;2026/03/05
;M1=0.38

procedure(changeM1Width(newWidth)
	let((selected point fig oldBBox width height newBBox)
		selected = geGetSelSet()
		point = enterPoint(?points mouseAddPt())
		foreach(fig selected
			oldBBox = fig~>bBox
			width = caadr(oldBBox) - caar(oldBBox)  
			height = cadadr(oldBBox) -  cadar(oldBBox)
          	newBBox = nil
  			when(cadr(point) > cadadr(oldBBox) && height < width
        			newBBox = list(car(oldBBox),list(caadr(oldBBox),cadar(oldBBox) + newWidth))
			);when
			when(cadr(point) < cadadr(oldBBox) && height < width
        			newBBox = list(list(caar(oldBBox),cadadr(oldBBox) - newWidth),cadr(oldBBox))
			);when
			fig~>bBox = newBBox
		);foreach
	);let
);procedure

hiSetBindKey("Layout" "Ctrl<Key>5" "changeM1Width(0.38)")

测试该脚本:

changeM1Width

将该脚本写入.cdsinit文件自动load

在桌面打开Terminal,输入:

cd
gedit .cdsinin

在.cdsinit文件内,load脚本的全路径:

load("/home/~~/~~/~~/changeM1Width.il")

综上完成了MOS管的栅极金属层向不同方向衍伸的功能🎉🎉🎉

posted @ 2026-03-06 11:29  StupidMonkey19  阅读(54)  评论(0)    收藏  举报