• 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 SKILL
  3. Plz help in solving the error: *Error* let: local bindings...

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 143
  • Views 15879
  • 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

Plz help in solving the error: *Error* let: local bindings must be a proper list

Anupama
Anupama over 15 years ago
I am excuting below piece of code. I very new to this skill programming. I am still a beginer. I am stuck at variable declaration.  But I need make this piece of code to work ASAP. So please suggest me what is wrong in this code.?...

MY ERROR : *Error* let: local bindings must be a proper list - cv

CODE :

procedure(CCSPowerPlot(pinlist)
let(cv layername) cv=geGetEditCellView()foreach(pin pinlistforeach(shape cv~>shapes

if(pin==shape~>net~>name then

layername=car(shape~>lpp)

lelsLayerSelectable(list(layername "drawing") t)

hiRedraw()
 )     )       )    )

 
  • Cancel
  • kbhow
    kbhow over 15 years ago

    Hi Anupama,

    I corrected your code as below:

    procedure(CCSPowerPlot(pinlist)

    let((cv layername)   ;;You miss a bracket here 

        cv =geGetEditCellView()

        foreach(pin pinlist

            foreach(shape cv~>shapes 

                if(pin==shape~>net~>name then

                    layername=car(shape~>lpp)

                    lelsLayerSelectable(list(layername "drawing") t)

                    hiRedraw()

                 );if

           ) ;foreach

        );let 

    );proc

    Please have a try again

    How 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 15 years ago

     Hi,

    You appear to be missing a set of parentheses (or more? I have not tested the code below, just inspected it "by hand" as it were)

    procedure(CCSPowerPlot(pinlist)
    let((cv layername)
    cv=geGetEditCellView()
    foreach(pin pinlist
    foreach(shape cv~>shapes
    if(pin==shape~>net~>name then
    layername=car(shape~>lpp)
    lelsLayerSelectable(list(layername "drawing") t)
    hiRedraw()
    );if
    );foreach
    );foreach
    );let
    );procedure

    I hope that this helps,
    Regards,
    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kbhow
    kbhow over 15 years ago

    Ophs,

    I miss out a bracket too.

    How

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Anupama
    Anupama over 15 years ago

    Hi All,

     Thanks for the help. The code is executing properly and it is returning "t" value. But it's not showing any changes in my layout. It is not selecting the respective layer.

    I am passing my arguments in this way.

    pinlist='("avdd")

    CCSPowerPlot(pinlist)

    Is this the right way?...

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kbhow
    kbhow over 15 years ago

    Hi Anupama,

    Ya, from your code, you are passing the correct argument. By the way, may i know what are you trying to do. The Skill code looks nothing for me, it just check on the layer select-ablity on your input net.

    How

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    Anupama,

    My guess is that you forgot to add the call:

    geSelectFig(shape)

    where you have the call to leIsLayerSelectable. In fact that function would only return whether the layer is selectable or not, and even then you're passing the second argument wrong (it needs to be a tech file id, or just miss it out since it's optional. Either way, you're doing nothing with the result.  Perhaps you meant to use leSetLayerSelectable? (you'd still need the geSelectFig if you want it to actually select anything).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Anupama
    Anupama over 15 years ago

    Yup .. Actually the program is just a small check to know whether the layer is selectable or not.


    Actually , My requirement is : I have a pin list . I want to make visible of the net which is connected to that pin only. And I want other nets( of any metal layer) to be invisible. (And addition to this , I want to make visible of my basic layers: poly, n well, diffusion )


    "Mark net" is a option to mark a net. But it doesn't switch off the other nets. I want to do it. I don't know how difficult to achieve it in skill. But I want to try it out. 
    What I thought is , first I will take the pin- then will read corresponding net, its shape , its respective Metal layers. I want to select these layers and want to make visible of only this net's layer parts.  Not other nets and its layers.


    Can anyone suggest me, how I can achieve this? Is the right way I am going. Or Is there any other alternative or any already available resource is there to get my result..?


    Regards,
    Anu

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dmay
    dmay over 15 years ago

    You will not be able to turn off the other nets if they are using the same material as your specified net. In other words, there is no way to show metal1 on your specified net and not show metal1 anywhere else. The nice thing about using something like mark-net is that is uses a separate hilight layer. You can then make all of your metals invisible and still see this hilight layer.

    Once you start using Cadence 6.1, you could select the shapes on your net and use the "Dimming" feature on the Display Options form. This allows you to dim all layout except the selected layout. Thus, you could modify your skill code to select the shapes on a net. These shapes would be clearly visible while the rest of the layout was dimmed.

     Derek

    • 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