找回密码
 注册
关于网站域名变更的通知
查看: 1156|回复: 15
打印 上一主题 下一主题

分享一个正在写的skill

  [复制链接]
  • TA的每日心情
    开心
    2021-9-16 15:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2022-3-28 23:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
        最近正在“抠抠搜搜”地写一个工具,还没写完,不过写完的部分可以作为一个工具来使用:选中网络,在skill中建立pinpair进而建立match group,对个人来说还是比较方便的,当然不排除本论坛上已有类似功能的工具。话不多说,先贴代码。
    axlCmdRegister("seglength_check" 'seglength_check)

    defun( seglength_check ()

      net_form=axlFormCreate((gensym) "net_selector.form" '(n inner) 'net_selector_callback t)
      nets_dbid=axlDBGetDesign()->nets


      nets_name=list()
      nets_pinpairs=list()
      i=0
      while( (i<=length(nets_dbid)-1)
      nets_name=cons(nth(i nets_dbid)->name nets_name)
      i=i+1
      )

    axlFormSetField(net_form "nets_list" nets_name)  
    axlFormSetField(net_form "Net_Filter" "*")   
    axlFormDisplay(net_form)
    axlFormListDeleteAll(net_form "pinpairs_star")
    axlFormListDeleteAll(net_form "pinpairs_end")
    )

    defun( net_selector_callback (net_form)

          case(net_form->cuRField

              ("Net_Filter";按字段对nets_name进行筛选,筛选的结果写入net_form->"nets_list"

              )

              ("nets_list"
                axlFormListDeleteAll(net_form "nets_selected");清除"nets_selected"里的内容
                axlFormSetField(net_form "nets_selected"  reverse(axlFormListGetSelItems(net_form "nets_list")));将"nets_list"内选中的内容写入"nets_selected"

                Num = axlFormListGetSelCount(net_form "nets_list")
                sprintf(item "Num = %L" Num)
                axlFormSetField(net_form "Cnt" item)            
              )

              ("nets_selected"
                axlFormListDeleteAll(net_form "star_of_nets")
                axlFormListDeleteAll(net_form "End_of_nets")

                selected_net=axlFormListGetSelItems(net_form "nets_selected")

                axlClearSelSet()

                connectedpins=axlPinsOfNet(nth(0 selected_net) 'pin)

                  i=0
                  ref=list()
                  startEnd_number=list()              
                  while( (i<=length(connectedpins)-1)
                  ref=cons(nth(i connectedpins)->component->name ref)
                  startEnd_number=cons(nth(i connectedpins)->number startEnd_number)                  
                  i=i+1
                  )

                  i=0
                  startEnds=list()
                  while( (i<=length(ref)-1)

                  startEnds=cons(strcat(nth(i ref) "." nth(i startEnd_number)) startEnds)
                  i=i+1
                  )            


                  axlFormSetField(net_form "star_of_nets" startEnds)
                  axlFormSetField(net_form "End_of_nets" startEnds)


              )

              ("Cnt"                  
              )

              ("star_of_nets"
                 pin_star=axlFormListGetSelItems(net_form "star_of_nets")
                 axlFormSetField(net_form "pinpairs_star" pin_star)

              )

              ("End_of_nets"

                pin_End=axlFormListGetSelItems(net_form "End_of_nets")   
                axlFormSetField(net_form "pinpairs_end" pin_End)

              )

              ("pinpairs_star"            
              )

              ("pinpairs_end"            
              )

              ("delete1"
              axlFormListDeleteItem(net_form "pinpairs_star" axlFormListGetSelItems(net_form "pinpairs_star"))
              )

              ("delete2"
              axlFormListDeleteItem(net_form "pinpairs_end" axlFormListGetSelItems(net_form "pinpairs_end"))
              )


              ("done"

              axlFormListSelAll(net_form "pinpairs_star" t)
              axlFormListSelAll(net_form "pinpairs_end" t)

              pinpair_s=axlFormListGetSelItems(net_form "pinpairs_star")
              pinpair_e=axlFormListGetSelItems(net_form "pinpairs_end")

              pinpairs=list()
              i=0
              while( (i<=length(pinpair_s)-1)
              pinpairs=cons(axlPinPair(nth(i pinpair_s) nth(i pinpair_e)) pinpairs)
              i=i+1

              )



               main()
               axlFormClose(net_form)
              )

              ("cancel"
               axlFormClose(net_form)           
              )

          )   
    )

    defun( main ()

    println(pinpair_s)
    println(pinpair_e)
    println(pinpairs)

    axlMatchGroupDelete("user_MG")
    axlMatchGroupCreate("user_MG")
    axlMatchGroupAdd("user_MG" pinpairs)


    )

    评分

    参与人数 1威望 +1 收起 理由
    digitzing + 1 赞一个!

    查看全部评分

  • TA的每日心情
    开心
    2021-9-16 15:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
     楼主| 发表于 2022-3-28 23:45 | 只看该作者
        主要是FORM的运用,在此感谢db-_- 、jet2001等大神的悉心指导
        简单说下功能:
    1. Slelect the nets框列出板子上所有网络名,可进行复选。其中过滤器没做好,这个不会,想着用字段过滤list的方式来实现,但是不会
    2. 选中的net出现在Nets selected框中,选中其中一个,在Star of nets 和 End of nets中出现和选中net连接的所有pin,各选一个pin形成pinpair
    3. Next生成match group;等长范围没有设置,这个也不会




    点评

    过滤器给你提供部分源码参考 ("filter" filter = upperCase(sbForm->curValue) while(curValue = axlFormListGetItem(sbForm "BusList" 0) axlFormListDeleteItem(sbForm "BusList" curValue) ;清空  详情 回复 发表于 2022-6-1 10:03
  • TA的每日心情
    开心
    2021-9-16 15:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
     楼主| 发表于 2022-3-28 23:46 | 只看该作者
    忘了FORM是单独写的(net_selector.form):

    FILE_TYPE=FORM_DEFN VERSION=2
    FORM
    FIXED
    PORT 96 70

    HEADER "Nets Selector"
    TILE

    TEXT "Select the nets"
    TLOC 5 1
    ENDTEXT

    FIELD nets_list
    FLOC 5 3
    LIST "" 50 5
    OPTIONS multiselect
    ENDFIELD

    TEXT "Net Filter"
    TLOC 70 4
    ENDTEXT

    FIELD Net_Filter
    FLOC 67 6
    STRFILLIN 10 10
    ENDFIELD



    TEXT "Nets selected"
    TLOC 8 13
    ENDTEXT

    FIELD nets_selected
    FLOC 5 15
    LIST "" 15 5
    OPTIONS multiselect
    ENDFIELD

    TEXT "Star of nets"
    TLOC 26 13
    ENDTEXT

    FIELD star_of_nets
    FLOC 23 15
    LIST "" 15 5
    OPTIONS multiselect
    ENDFIELD

    TEXT "End of nets"
    TLOC 44 13
    ENDTEXT

    FIELD End_of_nets
    FLOC 41 15
    LIST "" 15 5
    OPTIONS multiselect
    ENDFIELD

    TEXT "Pinpairs"
    TLOC 73 13
    ENDTEXT

    FIELD pinpairs_star
    FLOC 59 15
    LIST "" 15 5
    OPTIONS multiselect
    ENDFIELD

    FIELD pinpairs_end
    FLOC 77 15
    LIST "" 15 5
    OPTIONS multiselect
    ENDFIELD



    TEXT Selected_nets:
    TLOC 5 25
    ENDTEXT

    TEXT
    FLOC 17 25
    INFO Cnt 20
    ENDTEXT

    FIELD delete1
    FLOC 62 25
    MENUBUTTON "Delete" 8 3
    ENDFIELD

    FIELD delete2
    FLOC 80 25
    MENUBUTTON "Delete" 8 3
    ENDFIELD

    FIELD done
    FLOC 26 28
    MENUBUTTON "Next" 9 3
    ENDFIELD

    FIELD cancel
    FLOC 55 28
    MENUBUTTON "Cancel" 8 3
    ENDFIELD

    ENDTILE
    ENDFORM
  • TA的每日心情
    开心
    2019-11-19 15:32
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2022-3-29 09:32 | 只看该作者
    加油 1段1段寫 再慢慢加入自己想要的功能
    (candenc 原廠的skill 很多可以參考, skill的pdf 內有範例 也可以用)
    set telskill 在skill視窗 也可以逐行執行 馬上看結果

    点评

    原厂skill是本地路径中的那些例子吗?关于网络过滤器,看到一个函数axlUIDataBrowse是有相同的功能的,应该可以借鉴,但是这种函数能看到源码吗?  详情 回复 发表于 2022-3-29 10:50
  • TA的每日心情
    开心
    2021-9-16 15:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
     楼主| 发表于 2022-3-29 10:50 | 只看该作者
    jet2001 发表于 2022-3-29 09:32
    加油 1段1段寫 再慢慢加入自己想要的功能
    (candenc 原廠的skill 很多可以參考, skill的pdf 內有範例 也可 ...

    原厂skill是本地路径中的那些例子吗?关于网络过滤器,看到一个函数axlUIDataBrowse是有相同的功能的,应该可以借鉴,但是这种函数能看到源码吗?
  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    6#
    发表于 2022-3-29 15:24 | 只看该作者
    有前途 学的真快。
  • TA的每日心情
    开心
    2025-1-18 15:49
  • 签到天数: 68 天

    [LV.6]常住居民II

    7#
    发表于 2022-4-8 18:37 | 只看该作者
    选择net下面没任何反应呢?
  • TA的每日心情
    开心
    2021-9-16 15:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    8#
     楼主| 发表于 2022-4-8 19:41 | 只看该作者
    作为工具,还不太成熟,近作为学习skill的参考。选择了网络以后,要选择网络的起始点,出现在Pinpais的两个框框内,点next新建一个命名为USER_MG的match group

    该用户从未签到

    9#
    发表于 2022-4-10 14:14 | 只看该作者
    牛蛙牛蛙大佬

    该用户从未签到

    10#
    发表于 2022-4-10 17:23 | 只看该作者
    感谢分享

    “来自电巢APP”

  • TA的每日心情
    开心
    2022-5-6 15:29
  • 签到天数: 34 天

    [LV.5]常住居民I

    11#
    发表于 2022-6-1 09:58 | 只看该作者
    本帖最后由 leilei4908 于 2022-6-1 10:00 编辑

    PinPair基本上都是某个元件到另一个元件中的高速信号(或者DDR)
    可以先选择source symbol,target symbol,再筛选netname(或者busname),然后自动设置pinpair
    这样能过滤掉中途串xnet的小电容电阻
  • TA的每日心情
    开心
    2022-5-6 15:29
  • 签到天数: 34 天

    [LV.5]常住居民I

    12#
    发表于 2022-6-1 10:03 | 只看该作者
    mycoal 发表于 2022-3-28 23:45
    主要是FORM的运用,在此感谢db-_- 、jet2001等大神的悉心指导
        简单说下功能:
    1. Slelect the  ...

    过滤器给你提供部分源码参考
    ("filter"
                            filter = upperCase(sbForm->curValue)
                            while(curValue = axlFormListGetItem(sbForm "BusList" 0)
                                    axlFormListDeleteItem(sbForm "BusList" curValue)   ;清空list
                            )
                            case(filter
                                    (("" "*")
                                            axlFormListAddItem(sbForm "BusList" BusesNames 0)   ;filter空白或者*,加上所有的内容
                                            axlFormListAddItem(sbForm "BusList" "NOBUS" 0)
                                    )
                                    (t
                                            foreach(name BusesNames
                                                    when(index(name filter)   ;根据filter筛选
                                                            axlFormListAddItem(sbForm "BusList" name -1)
                                                    )
                                            )
                                    )
                            )
                    )

    点评

    谢谢老哥~  详情 回复 发表于 2022-6-10 15:45
  • TA的每日心情
    开心
    2021-9-16 15:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    13#
     楼主| 发表于 2022-6-10 15:45 | 只看该作者
    leilei4908 发表于 2022-6-1 10:03
    过滤器给你提供部分源码参考
    ("filter"
                            filter = upperCase(sbForm->curValue)

    谢谢老哥~
  • TA的每日心情

    2024-11-18 15:56
  • 签到天数: 82 天

    [LV.6]常住居民II

    14#
    发表于 2022-6-10 18:20 | 只看该作者
    真厉害,大神膜拜

    该用户从未签到

    15#
    发表于 2024-1-29 18:39 | 只看该作者
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-3 21:10 , Processed in 0.078125 second(s), 28 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表