• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. how to set a bindkey to display multiple layers ?

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 126
  • Views 20625
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

how to set a bindkey to display multiple layers ?

Nhumai
Nhumai over 7 years ago

Hi, 

I am using cadence 6.1. I am trying to set a bindkey to display certain layers at 1 time. For example key '0' will display base layers, key'1' will display metal1 via2 and metal 2 . I have a simple setup like below but it didn't work. I am not sure what is the missing in this code ? I am new skill code 

thanks 

Nhumai 

hiSetBindKeys( "Layout" list(

 list("<key>1" "pteSetNoneVisible() leSetEntryLayer(list(\"M0\" \"drawing\")) leSetEntryLayer(list(\"M0\" \"pin\")) letSetEntryLayer(list(\"VIA0\" \"drawing\")) leSetEntryLayer(list(\"M1\" \"drawing\")) leSetEntryLayer(list(\"M1\" \"pin\")) leSetEntryLayer(list(\"CM1A\" \"drawing\")) leSetEntryLayer(list(\"CM1B\" \"drawing\")) leSetEntryLayer(list(\"prBoundary\" \"boundary\")) hiRedraw()")
 list("<key>2" "pteSetNoneVisible() leSetEntryLayer(list(\"M1\" \"drawing\")) leSetEntryLayer(list(\"M1\" \"pin\")) letSetEntryLayer(list(\"VIA1\" \"drawing\")) leSetEntryLayer(list(\"M2\" \"drawing\")) leSetEntryLayer(list(\"M2\" \"pin\")) leSetEntryLayer(list(\"CM2B\" \"drawing\")) leSetEntryLayer(list(\"prBoundary\" \"boundary\")) hiRedraw()")
 

  • Cancel
  • Nhumai
    Nhumai over 7 years ago

    The error I got is undefined function pteSetNoneVisible. I used this setup before and it is working fine. How can I define pteSetNoneVisible ? 

    thanks 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to Nhumai

    Which version are you using? i.e. what does getVersion(t) in the CIW report?

    I would have probably used leSetLayerVisible(list("M1" "drawing") t) or pteSetVisible("M1 drawing" t "Layers") rather than setting the entry layer repeatedly, but the fact that the function isn't defined suggests you must be using an old version?

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Marben
    Marben over 7 years ago

    HI Nhumai,

    ;Usage: Bindkey 0 makes all layer invisible except layer "ref" "drawing" in layout.
     hiSetBindKey("Layout" "<Key>0" "visibility_0()")
     procedure(visibility_0()  
      leSetEntryLayer(list("ref" "drawing"))
      leSetAllLayerVisible( nil );
      leSetLayerVisible( list("ref" "drawing") t )  
      hiRedraw( )
      printf("\n All layers is set to invisible except ref layer. \n ")
     )

     ;Usage: Bindkey 1 makes layer METAL1, METAL2 and VIA2 drawing visible in layout.
     hiSetBindKey("Layout" "<Key>1" "visibility_1()")
     procedure(visibility_1()
         leSetEntryLayer(list("METAL1" "drawing"))         
         leSetAllLayerVisible( nil )
         leSetLayerVisible( list("METAL1") t )
            leSetLayerVisible( list("METAL1" "drawing") t )
            leSetLayerVisible( list("METAL2" "drawing") t )
            leSetLayerVisible( list("VIA2" "drawing") t )           
         hiRedraw( )
         printf("\n METAL1, METAL2 VIA2 dawing is set to visible. \n ")
     )
        

    I hope this help.

    Best regards,

    Marben

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Nhumai
    Nhumai over 7 years ago in reply to Andrew Beckett

    Hi Andrew,

    when I type getVersion(t) in CIW it show "sub-version Ic6.1.5.500.10" . Let me try leSetLayerVisible(list(Mm1" "drawing") t) first and see if it is working 

    thanks 

    Nhumai 

    • Cancel
    • Vote Up -1 Vote Down
    • Cancel
  • Nhumai
    Nhumai over 7 years ago in reply to Nhumai

    Hi Andrew 

    I have 

    hiSetBindKeys( "Layout" list(

            list( "<key>4"  leSetLayerVisible(list("nwell" "drawing") t) hiRedraw())

    )) ;; hiSetBindKeys

    it is still doesn't work . It didn't give me any syntax error. It give me the warning  like  

    "

    *WARNING* key <key>4 non-EF argument must be type string, not symbol

    *WARNING* key <key>4 EF argument must be type string, not symbol

    "

    Please let me know what happen 

    thanks 

    Nhumai 

    PS. when I type getVersion(t) in CIW it show "sub-version Ic6.1.5.500.10"

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Nhumai
    Nhumai over 7 years ago in reply to Marben

    Hi Marben,

    It is working fine for me. Thanks a lot 

    Nhumai 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Nhumai
    Nhumai over 7 years ago in reply to Nhumai

    Hi Marben,

    I expand the script to this kind of set and still it is working fine.

    thanks 

    ;Usage: Bindkey 0 makes all layer invisible except layer "ref" "drawing" in layout.

     hiSetBindKey("Layout" "<Key>0" "visibility_0()")

     procedure(visibility_0()

      leSetEntryLayer(list("ref" "drawing"))

      leSetAllLayerVisible( nil );

      leSetLayerVisible( list("ref" "drawing") t )

      hiRedraw( )

      printf("\n All layers is set to invisible except ref layer. \n ")

     )

     procedure(visibility_1()

         leSetEntryLayer(list("nwell" "drawing"))        

         leSetAllLayerVisible( nil )

         leSetLayerVisible( list("nwell") t )

            leSetLayerVisible( list("diff" "drawing") t )

            leSetLayerVisible( list("nsdm" "drawing") t )

            leSetLayerVisible( list("psdm" "drawing") t )          

            leSetLayerVisible( list("poly" "drawing") t )          

            leSetLayerVisible( list("pcon" "drawing") t )          

            leSetLayerVisible( list("tap" "drawing") t )          

            leSetLayerVisible( list("hvi" "drawing") t )          

            leSetLayerVisible( list("litr" "drawing") t )           

         hiRedraw( )

         printf("\n base layer is set to visible. \n ")

     )

     procedure(visibility_2()

         leSetEntryLayer(list("met1" "drawing"))        

         leSetAllLayerVisible( nil )

         leSetLayerVisible( list("met1") t )

            leSetLayerVisible( list("met1" "drawing") t )

            leSetLayerVisible( list("met2" "drawing") t )

            leSetLayerVisible( list("via" "drawing") t )          

         hiRedraw( )

         printf("\n METAL1, METAL2 VIA2 dawing is set to visible. \n ")

     )

     

    ;Usage: Bindkey 1 makes layer METAL1, METAL2 and VIA2 drawing visible in layout.

     hiSetBindKey("Layout" "<Key>1" "visibility_1()") 

    hiSetBindKey("Layout" "<Key>2" "visibility_2()")

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to Nhumai

    Hi Nhumai,

    The function pteSetVisible was added in IC616, so that's why that didn't work - you're using too old a version - even IC616 came out 5½ years ago, and the subversion you're using is even older.

    The reason why the code above failed is because  you didn't put quotes around the command (should have been "leSetLayerVisible(list(\"nwell\" \"drawing\") t) hiRedraw()" )

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information