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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: 西瓜土豆

[求助] 通过脚本实现对各个层次cell之间的快速跳转

[复制链接]
 楼主| 发表于 2023-4-19 19:08:51 | 显示全部楼层


15365221896 发表于 2023-4-19 18:59
希望你能实现两种情况。list里面既有鼠标位置的cell名字又有此处所有layer名字,既可以通过Cell名字进入 ...


慢慢摸索吧

发表于 2023-4-20 09:08:08 | 显示全部楼层


本着分享精神,希望您能摸索出来之后分享一下skill代码
发表于 2023-4-20 09:42:16 | 显示全部楼层
顶一下
发表于 2023-4-20 17:17:18 | 显示全部楼层


西瓜土豆 发表于 2023-4-19 15:37
请问具体是哪个指令呢?


不是shift + B吗?可以指定调到往上的某一层
 楼主| 发表于 2023-4-21 14:16:09 | 显示全部楼层


天微明 发表于 2023-4-20 17:17
不是shift + B吗?可以指定调到往上的某一层


我想实现的是在这张图内包含的所有cell进行跳转
发表于 2023-4-24 09:58:18 | 显示全部楼层
实现了没,有点思路,但是会有些问题,这个投票、
发表于 2023-4-24 10:02:49 | 显示全部楼层


ljh065216 发表于 2023-4-24 09:58
实现了没,有点思路,但是会有些问题,这个投票、


list太多反而不方便找要进哪个,层次太多了以什么方式显示出来选?跳转是同一个windowview的话
发表于 2023-4-24 10:13:26 | 显示全部楼层
virtuoso有自带的吧
 楼主| 发表于 2023-4-24 15:50:55 | 显示全部楼层


ljh065216 发表于 2023-4-24 10:02
list太多反而不方便找要进哪个,层次太多了以什么方式显示出来选?跳转是同一个windowview的话 ...


没有弄出来,倒是发现右键点击重叠层次后,可以直观的选择cell

                               
登录/注册后可看大图
 楼主| 发表于 2023-4-25 16:27:23 | 显示全部楼层
本帖最后由 西瓜土豆 于 2023-4-25 16:31 编辑

这个脚本是我在cad论讨搬运过来的,目前有个leEditInPlace()的问题,希望有大佬可以指点一下
leEditInPlace(hiGetCurrentWindow() list(list(dbFindAnyInstByName(geGetEditCellView(getCurrentWindow())   car(selectiveEIPForm->viewInsts->value)) 0 0 0)))"

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure(findInstances()
        enterPoints(?addPointProc "inst_Add" ?cmdName "FindInstance")
)

procedure(inst_Add(win points)
        let((point obj instList n listLegth )
                cv = win->cellView
                instancesList=()
                when(and(windowp(win) dbobjectp(cv))
                        if(or(cv->cellViewType == "maskLayout" cv->cellViewType == "maskLayoutXL")
                        then
                                when(point = car(last(points))
                                        when(deGetEIP(win)
                                                point = geWindowToEditPoint(win point)
                                        )
                                        if(point=hiGetPoint(hiGetCurrentWindow())
                                        then
                                                let((wbox sz loc inStr div)

                                                     instList=leSearchHierarchy(cv list(point point) 32 "inst" nil)

                                                     ; Remove Duplication  
                                                     instList=myUniqueList(instList)

                                                     if(instList
                                                         then
                                                     listLegth = length( instList )

                                                      for( n 1 listLegth
                                                        instancesList=append1(instancesList nthelem( n instList~>cellName ))
                                                         )
                                                         else printf("Nothing found under the cursor/at given point!\n")
                                                         )
                                                         ; Remove Duplications
                                                         instancesList=myUniqueList(instancesList)
                                                         printf("Detected Instances: %N\n" instancesList)

                                                         ; For first time window opening
                                                         unless(boundp('selectiveEIPForm)
                                                           createSelectiveEIPForm()
                                                          selectiveEIPForm~>viewInsts~>choices=instancesList
                                                          )
                                                          selectiveEIPForm~>viewInsts~>choices=instancesList

                                                         ; Show the Form
                                                         selectiveEIPApp()

                                                       ) ; let
                                        else
                                                printf("*INFO* No valid instance at point.")
                                        )
                                )
                        else
                                printf("*INFO* CellView is not a layout - %s : %s" cv->cellName cv->cellViewType)
                        )
                )
        )
)

;---------------------------
; Remove List's Duplications
;---------------------------
procedure(myUniqueList(aList)
    let((uTable newList)
        uTable = makeTable("uTable" nil)
        foreach(element aList
            unless(uTable[element]
                newList = cons(element newList)
                uTable[element] = t
            )
        )
        reverse(newList)
    )
)


;--------------------
; Creating the form
;--------------------
procedure( createSelectiveEIPForm()
   let( (viewInsts viewNameR selectEIP)

     viewNameR=hiCreateStringField(
                ?name 'viewNameR
                ?prompt "CellView Name"
                ?value ""
                ?callback ""
                )

     selectEIP = hiCreateButton(
        ?name           'selectEIP
        ?buttonText     "EIP"
        ?callback       "leEditInPlace(hiGetCurrentWindow()  list(list(dbFindAnyInstByName(geGetEditCellView(getCurrentWindow())   car(selectiveEIPForm->viewInsts->value)) 0 0 0)))"
                )


     viewInsts = hiCreateListBoxField(
          ?name    'viewInsts
          ?choices instancesList
          ?multipleSelect nil
                        )

      hiCreateAppForm(
         ?name 'selectiveEIPForm
         ?formTitle "Selective EIP"
         ?fields list(
                    list(viewNameR 0:5 400:30 200)
                    list(viewInsts 0:35 400:120 200)
                    list(selectEIP 20:120 100:30 200)
                     )
         ?callback ""
         ?initialSize list(450 450)
      ) ;hiCreateAppForm

      hiDisplayForm('selectiveEIPForm)

   ) ;let
) ;procedure

;-------------
; Entry point
;-------------
procedure(selectiveEIPApp()
    unless(boundp('selectiveEIPForm)
        createSelectiveEIPForm()
        )
    hiDisplayForm(selectiveEIPForm)
    )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-6-20 20:00 , Processed in 0.244036 second(s), 5 queries , Gzip On, Redis On.

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