手机怎么建立小说网站:SKILL脚本
本文摘要: EETOPEETOP创芯网(易特创芯):国内著名的老牌电子工程师社区及半导体行业门户网站(150万会员)www.eetop.cn bbs.eetop.cnblog.eetop.cn edu.eetop.cn本文转载自大众号:不忘初心的模仿小牛牛在模仿前端设计验证中,常常会碰到testb
EETOP

EETOP创芯网(易特创芯):国内著名的老牌电子工程师社区及半导体行业门户网站(150万会员)

www.eetop.cn bbs.eetop.cn

blog.eetop.cn edu.eetop.cn

本文转载自大众号:不忘初心的模仿小牛牛

在模仿前端设计验证中,常常会碰到testbench的调试或者切换,比较笨的方法就是一个个删除,或者替换,很不便利。

其实Virtuoso版本在617及今后,现已添加了快捷键shift+delete,可以快速的false掉激励源,器件或者子模块,并且显示一个赤色的X号,起到标识作用。但在IC616及曾经版本是无法使用的,其本质是在property中添加了用户自界说的属性nlaction如图1所示。属性值为ignore或者stop。


图1

所以我们可手动的添加这个属性,并通过修正其属性false掉不想发生网标的block。但该方法存在缺点就是没有标识,不行直观,需要点开才干确认是否包括nlaction属性及其属性值。


图2

因为我虚拟机中装的仍是616,所以查了些资料,着手自己写了个skill,完成了快捷键添加/删除ignore属性,并且打上/去掉ignore标识"X"。根本上完成了617上的功用。

现在脚本仍是有些瑕疵:

  1. 只能一个个的添加,选中多个,只对第一个有用。

  2. 标识“X”的方位有些会偏一点点。

但根本满足了我的需要,这里分享给我们,也期望skill脚本大牛可以改善完善。

现在完成效果如图3和图4所示。


图3


图4

图5(左右)分别是图3图4电路图发生的网表比照,契合预期。


图5

图6是脚本内容,变量名字也是起的很不规范哈,我们可以参考下。终究一句话是设置快捷键,我们也能够修正,这里我使用了617中默许的快捷键。


图6

使用方法有两种,第一种是需要使用时,在CIW窗口使用load命令加载。如图7所示;第二种是在.cdsinit中添加内容(如图8),这样每次启动virtuoso都会主动加载,并提示加载成功的信息(如图9),会比较便利。


图7


图8


图9

欢迎我们试用,碰到问题可以在公号下留言,评论。也欢迎我们有比较好实用的脚本投稿,我会分享给我们。

附上源码:

procedure(InstIgnore

let((cvId inst_sel bbox_x0 bbox_y0 bbox_x1 bbox_y1 new_x0 new_y0 new_x1 new_y1 obj_list obj_list_index)

cvId = geGetEditCellView

inst_sel=car(geGetSelSet)

; if Not find nlaction

if(dbFindProp(inst_sel "nlAction")==nil then

; add user property nlAction ignore

dbCreateProp(inst_sel "nlAction" "string" "ignore")

; get selected instance bbox dimension

bbox_x0=nth(0 nth(0 inst_sel~>bBox))

bbox_y0=nth(1 nth(0 inst_sel~>bBox))

bbox_x1=nth(0 nth(1 inst_sel~>bBox))

bbox_y1=nth(1 nth(1 inst_sel~>bBox))

; calulate noteshape " X " located on symbol

new_x0=bbox_x0+(bbox_x1-bbox_x0)/2.5

new_y0=bbox_y0+(bbox_y1-bbox_y0)/5

new_x1=bbox_x1-(bbox_x1-bbox_x0)/2.5

new_y1=bbox_y1-(bbox_y1-bbox_y0)/5

; draw noteshape

schCreateNoteShape( cvId "line" "solid" list(new_x0:new_y0 new_x1:new_y1 ) 0.025)

schCreateNoteShape( cvId "line" "solid" list(new_x0:new_y1 new_x1:new_y0 ) 0.025)

else

; if find nlAction property ,delete it

dbDeletePropByName(inst_sel "nlAction")

; get selected instance bbox dimension

bbox_x0=nth(0 nth(0 inst_sel~>bBox))

bbox_y0=nth(1 nth(0 inst_sel~>bBox))

bbox_x1=nth(0 nth(1 inst_sel~>bBox))

bbox_y1=nth(1 nth(1 inst_sel~>bBox))

; selcet New Area based on selected instance

geSelectArea(hiGetCurrentWindow list(list(bbox_x0 bbox_y0) list(bbox_x0 bbox_y1) list(bbox_x1 bbox_y1) list(bbox_x1 bbox_y0)) "polygon")

obj_list=geGetSelSet

obj_list_index=0

foreach(var obj_list~>objType

; find objType path ,only delete previous added noteshpe "X"

if(var=="path" then

dbDeleteObject(nth(obj_list_index obj_list))

)

obj_list_index++

)

geSingleSelectPoint(hiGetCurrentWindow nil list(0 0))

)

)

)

hiSetBindKey("Schematics" "Shift<Key>Delete" "InstIgnore")


【免责声明】本文仅代表作者或发布者个人观念,不代表(www.lmnkf.cn)及其所属公司官方发声,对文章观念有疑义请先联络作者或发布者自己修正,若内容触及侵权或违法信息,请先联络发布者或作者删除,若需我们协助请联络平台管理员,Emailcxb5918(本平台不支撑其他投诉反馈渠道,谢谢合作)。若需要学习以上相关常识请到巨推学院观看视频教程,网站地址www.tsllg.cn。

相关内容